views:

7376

answers:

14

Hopefully, I'm going to finish my undergraduate studies next semester and I'm thinking about the topic of my final project. And yes, I've read the questions with duplicate title. I'm asking this from a bit different viewpoint, so it's not an exact dupe.

I've spent at least half of my life coding stuff in different languages and frameworks so I'm not looking at this project as a way to learn much about coding and preparing for real world apps or such. I've done lots of those already. But since I have to do it to complete my degree, I felt I should spend my time doing something useful instead of throwing the whole thing out. I'm planning to make it an open source project or a hosted Web app (depending on the type) if I can make a high quality thing out of it, so I decided to ask StackOverflow what could make a useful project.

Situation

I've plenty of freedom about the topic. They also require 30-40 pages of text describing the project. I have the following points in mind (the more satisfied, the better):

  • Something useful for software development
  • Something that benefits the community
  • Having academic value is great
  • Shouldn't take more than a month of development (I know I'm lazy).
  • Shouldn't be related to advanced theoretical stuff (soft computing, fuzzy logic, neural networks, ...). I've been a business-oriented software developer.
  • It should be software oriented. While I love hacking microcontrollers and other fun embedded electronic things, I'm not really good at soldering and things like that.
  • I'm leaning toward a Web application (think StackOverflow, PasteBin, NerdDinner, things like those).

Technology

It's probably going to be done in .NET (C#, F#) and Windows platform. If I really like the project (cool low level hacking), I might actually slip to C/C++. But really, C# is what I'm efficient at.

Ideas

Programming language, parsing and compiler related stuff:

  • Designing a domain specific programming language and compiler
  • Templating language compiled to C# or IL
  • Database tools and related code generation stuff

Web related technologies:

  • ASP.NET MVC View engine doing something cool (don't know what exactly...)
  • Specific-purpose, small, fast ASP.NET-based Web framework

Applications:

  • Visual Studio plugin to integrate with Bazaar (it's too much work, I think).
  • ASP.NET based, jQuery-powered issue tracker (and possibly, project lifecycle management as a whole - poor man's TFS)

Others:

  • Something related to GPGPU

Looking forward for great ideas!

Unfortunately, I can't help on a currently existing project. I need to start my own to prevent further problems (as it's an undergrad project, nevertheless).

A: 

Something I would like to see is an IL compiler. I know it sounds pretty stupid but it would be fun to play in. I think it would also give you a view of what is going on behind the scenes in the CLR.

Lucas McCoy
IL to x86 compiler?
Mehrdad Afshari
IL to x86 compiler - see ngen
ASk
COSMOS uses a pretty much complete IL to x86 compiler too.
Mehrdad Afshari
Yeah, or x86_64 if your on a 64 bit PC. Could you imagine writing a hello world in IL ;-) I know this is probably to hard to do in a month, but I thought it was cool
Lucas McCoy
http://www.gocosmos.org/Docs/Dev/IL2CPU/index.EN.aspx
Mehrdad Afshari
@Lucas Aardvark, what is hard about writing a hello world in IL?
Simucal
A: 

Have you looked at project ideas that were accepted and, more importantly, almost accepted for, Google's Summers of Code? It sounds like you have fairly similar criteria, and I know that there are every year a lot of SoC projects that are good and wanted, but don't make it because there are just to many.

Curt Sampson
I can't really contribute to an open source project. It should be a project of its own as they don't understand and they thing you've just stolen it.
Mehrdad Afshari
+7  A: 

there's also the recent opening of data.gov which you could use to do some kind of information mashup (which is pretty much the given trend now in webdev). there's even a contest associated with all this.

http://www.sunlightlabs.com/contests/appsforamerica2/

marduk
It's mostly about client side user experience and extremely polished thing. Not developer friendly and not easy to write a text about...
Mehrdad Afshari
+1  A: 

Create a web application framework that easily integrates RDF or a similar technology with the published content, making all that content easily discoverable and usable by semantic-web apps, such as SearchMonkey or Twine

Vinko Vrsalovic
Looks like a nice idea...
Mehrdad Afshari
+7  A: 

I like the idea of the DSL that compiles down to a .NET executable. I'm working on something similar for one of my final projects here at school.

If you are looking for any resources on this topic here is what I have found so far:

I actually emailed Mike Stall and asked him for some advice on writing a .NET compiler as a university project. He gave me some great tips:

  • Writing the lexer by hand is relatively easy, but if you can use a parser generator (such as ANTLR). Writing the parser is fairly tedious
  • For the code generation phase of the compiler, you basically have three options:

    1. Reflection.Emit - Emits IL opcodes. However! Reflection.Emit() cannot emit all possible constructs (incomplete with certain generic things)
    2. Spew out your IL codes to a textfile by hand, and run ILASM on the file.
    3. Use the newly created CCI (Common Compiler Infrastructure) - CCI is very new and very cool in how it works. It takes a tree structure and will emit the IL opcodes based off the tree you pass in. Easiest option for this project by far.
  • PEVerify.exe is very useful when testing your compiled executables. It does static validation on IL.

  • Use ILDASM with programs that you have compiled with CSC.exe to help make sure you are getting the IL sequence correct in your own compiler.

Be sure to let us know what project you think you are going to take on!

Simucal
A: 

This may be a stretch for you since it doesn't make use of .NET and might not be a "self-contained" project that fits into a month's worth of work, but I suggest trying to help out on the Shed Skin project. You or its author can probably find a suitably sized chunk of work that you can do in a month and write it up. It would be of both academic and practical value.

John Y
Shed Skin is really cool (I make sure all my Python code compiles with it), but he did say that he couldn't just contribute to an open source project.
Zifre
@Zifre: His comment wasn't on my screen at the time I posted my answer. (Even if I saw it in time, I probably would have gone ahead with my answer anyway. The answer isn't just for the original poster but for anyone reading Stack Overflow.)
John Y
+1  A: 

I wouldn't recommend you to do a compiler/interpreter, for a few simple reasons:

  • It's a hell of a job
  • There are too many out there (and most of them aren't used by anybody)

My advice is that you shouldn't close your mind to what you call "advanced topics", because they're not so difficult (at least not more difficult than implementing a good compiler xD) and they will probably make your work shine a little bit more... and also you will learn some cool stuff that may be helpful someday and you wouldn't otherwise learn.

What about some kind of game? Everybody likes games ^_^

fortran
I thought of game right before posting the question: 2 problems: I'm not a 3D guru, which is not a real problem. The real problem is a good game requires a good story. :))
Mehrdad Afshari
There are lots of games without awesome graphics nor stories that are very fun to play... remember tetris, pacman or arkanoid? xDOr maybe something more in your line, what about a web mmorpg? Like OGame, for example.
fortran
I agree. Even think of the game "I Wanna be the Guy". Its a 2D.. sidescroller I guess, with absolutely no storyline, yet its one of the best games I've ever played.
DeadHead
Yet the academics would argue a game doesn't benefit the community unless it introduces some novell technology..
Michael Foukarakis
+2  A: 

Personally I would go for something that I was interested in so I wouldn't have to drag myself to the keyboard, just to get it done ;). In my case it would be game development.

Your game wouldn't need a good story to be playable/enjoyable as you could make it physics or AI related ( it's like John Carmack said.. "Story in a game is like a story in a porn movie. It's expected to be there, but it's not that important." ). . Also you could try some game engine development but it's quite a lot work if you are not strong with graphics programming.

Respect to Carmack as a great hacker. I guess that's why I hate Doom and love the original Prince of Persia :)
Mehrdad Afshari
If you like the original POP you should find the this link interesting ( http://jordanmechner.com/old-journals/ ). You can find there the old journals of the developer behind the POP from when he was developing it, from start to finish!
I'd read the whole journals long time ago ;)
Mehrdad Afshari
+2  A: 

I would target something with accessing data over the Web and presenting it in a friendly manner.

So, may be:

  • a site that would allow to answer comparison questions from Wikipedia ("top peak in africa" -> "from Mountains where location=Africa select Highest" -> ...)

  • a distributed, secure, Tor-like gateway to social networks

It certainly would be interesting to learn parallelization (OpenCL?). You could also use the opportunity to learn Python, it's similar to .NET in many ways but imho easier while implementing important concepts. Please keep us informed how it's going. I hope the question is still relevant.

(update) I wouldn't go with compilers, etc. First, there was an excellent post by Joel about how people overestimate the need for code tools. Second, it's good to learn to write things that would be used by the average Internet user (this is kind of a special skill which not every high-level programmer has).

ilya n.
The quote I mentioned (from http://www.joelonsoftware.com/articles/fog0000000348.html: I knew one thing: programmers who start businesses often have the bad habit of thinking everybody else is a programmer just like them and wants the same stuff as them, and so they have an unhealthy tendency to start businesses that sell programming tools. That's why you see so many scrawny companies hawking source-code-generating geegaws, error catching and emailing geegaws, debugging geegaws, syntax-coloring editing tchotchkes, ftping baubles, and, ahem, bug tracking packages.
ilya n.
A: 

If you're interested in developing something useful for the community, go ask people in your college. Most students in non-IT related areas usually have great ideas but just don't know how to deploy them.

nairdaen
I want it to be useful for "developer community." Many people who teach at my college can't write a line of code themselves so that's out.
Mehrdad Afshari
+7  A: 
Noon Silk
A: 

i am stating my final year under graduate project soon and i have chosen to do a fixture generating system but i find it a hard one to implemet as it has many constraints

please can you suggest other projects i can implemet

sekmma
+5  A: 

A tool that migrates from one database system to another, including all data types of all supported database systems, Stored Procedures, Views, Foreign keys, triggers, ON CASCADE, functions, database jobs, etc.

E.g. MS-SQL -> PostGre, MySQL->PostGre, Oracle->PostGre, PostGre -> MS-SQL, etc.

Quandary
A: 

I don't know if you still need this question answered or not, but how about defining your own open source project on SourceForge or somewhere similar?

Is that an option? If it is, then it's gonna be something more than just an udergrad project and it won't be forgotten after a while. Kind of like Paint.Net. You can also gather a few good freelance devs around, to work on it alongside you. Thus, not only the project demonstrates your software design and implementation skills, but project management and leadership. And if it goes huge at some point, it's gonna bring positive reputation for you, UT and the country as well. All I'm trying to say is that you'll be making the most out of all the efforts that you're gonna make. Besieds, you're moving to the states soon and you deserve a great job, employers love this stuff. Bear that in mind.

Hamid Nazari