Tutorial :Suggestions for an open source Final Degree Project


Note: I'm not completely sure if this question really belongs to StackOverflow so feel free to vote for closing if you think not.

In Spain we have to undertake a final project when we end the computer science degree. The project must not be trivial and can relate to any computer field from Software Engineering to Computer Architecture, include code or not or whatever.

The thing is I'm reasonably good at solving problems but completely lousy finding them, that is, if someone tells me "solve this" no problem but I'm unable to imagine a problem by myself.

I work doing proprietary software using proprietary development tools with little use of open source components so I thought "ok, what would be useful to the open source community that isn't already there"... and I simply have no idea.

Any suggestions? Anything would be welcome. Although I prefer c# or php I won't be reluctant to learn something new if I must.

Due to the comment, the university is: Facultad de Informática. Universidad Politécnica de Madrid.

Thanks everyone for the answers. Although I'm not completely decided (I don't want to rush into any project) I really liked the idea of the ROBOCODE project, altough it wouldn't be really useful in the traditional way, it sounds like a LOOOT of fun. I appreciate all the suggestions anyway.


why not design and implement an artificial intelligence algorithm for ROBOCODE (search google). You could use neural nets, clustering, particle swarm optimization... or other more advanced algorithms. most of them are really easy and efficient, only the naming sounds like it's taken from star trek.

other suggestion, which is trendy right now, would be to use mashups: take multiple web services and combine them by making something nice. like http://globelogger.com/2008/05/timetube-awesom.html , this is what i'm talking about


Why not take a look through the Google Summer of Code website for previous projects that weren't undertaken. These are designed to take a couple of months to finish, and are with Open Source projects, and are things that someone else has decided would be useful.


Help with the effort to port Silverlight 3 to Mono? Im sure you could find a particular feature to implement as a standalone project. It would be a very useful contribution to the open source community and would involve digging deep into the way the silverlight framework is designed.


I'd recommend joining an existing open-source project. Starting your own may be fun, but it will likely have little usefulness for the open-source community. People will be unlikely to join a project you start for school because you are likely to abandon it once you graduate. Helping with an existing project will let you make a long-term difference without a long-term commitment.

There are plenty of open-source projects that would be fitting for your PHP skills: Drupal, Wordpress, or any of the Sunlight Labs projects. Personally, I like Sunlight Labs because they have a purpose beyond just creating software (to make governments more open and transparent), and the organization appears to be healthy and growing. No matter which project you choose, you can't go wrong by contributing to an active open-source project.


You probably want to do something that has already been done before so you can have some idea of the scope. You don't have to do something that will be re-used/open source since this is just a final project.

  • Create a distributed processing system like seti online
  • Make a game.
  • Make a social networking site.
  • Create a cool visualization for the demo scene


My suggestion would be to find a local charity that needs some help tracking their finances/donors/etc. Work with them to identify their needs and develop an application to help them solve their problem. There are two advantages that I see to this. First, you get experience working with real customers and their needs. Second, if you succeed, you've helped out some people who probably don't have the resources to get done what they need any other way.


Refactor Python's Tkinter GUI to remove its dependency on TCL. This would involve forking the latest version of TK, part of the TCL project, then replacing the the internal usage of TCL scripting with Python scripting. The project will be written in C.

The end result will be a Python TK GUI module that works on Windows, Macintosh and UNIX. All of the portability stuff is already in the TKinter module so that is no where the work will be. Instead, this will be like brain surgery, identifying all the linkages between TK and TCL so that you can either refactor into a simpler interface to Python or do a one to one replacement of TCL with Python.

This would require learning TCL and Python as well as probably writing some tools to help you enumerate the interconnections between TCL and TK. At the end of the project you will also have absorbed a lot of info about cross-platform GUIs even if you only get one of the platforms working as part of your degree.

The end goal of this is for this GUI to become the default Python GUI, and for the developer interface to the GUI to become the default interface for other GUI frontends. For instance a Jython developer could not use this GUI but if you make the interface clean and non-system specific, then someone could write a PythonTK in Java that uses SWING, and another group could write a PythonTK in C# that uses Windows Forms.

Although the bulk of the work is in refactoring the forked TK code, you need some careful thinking and study of the object model exposed to the Python programmer to minimize or eliminate any system specific areas. This may require some refactoring work on the TK code as well.


Join some open-source project. For example, Qooxdoo (http://qooxdoo.org) has a really good community, and is in need of skillful programmers. It's a good web applications framework. Or you can contribute to some really big project like Ruby on Rails.

If you like low-level (as in close to hardware) you could work on Gnu Compilers Collection.

If you are really good at algorithms you could develop solutions to many parallel programming problems that are out there nowadays.

This is a great question, and if you tell me what kind of programming you prefer, I will gladly elaborate.

What the heck, I live in Madrid, so we could meet in some bar and discuss it.



Start a community wiki website for tabular data only: list of countries(name , currency...), list of foods(name, vitamins, calories...), inflation statistics per country per year, ... what ever the users create. Allow users to create queries and download the result in what format they like (csv, excel, xml,...). After that create a webservice to allow open source projects to use the data in their products.


+1 from me. I think this is a great question.

I don't have a specific answer for you, but why not direct your attention toward looking for something that could be of use for charities or developing countries?

Charities are becoming increasing dependant on technology for raising funds, managing logistics, etc. Also, in Africa mobile phones are used a lot to provide simple financial products that enable people without access to more traditional financial services to buy and sell things.

If you've got the time and the desire, doing something that really benefits the world as well as getting you a great degree would be very satisfying..



What about an open-source distributed mobile solution? Now that mobile devices have gained quite some processing power, it would be nice if you would bind this power with Byron's SETI-like distributed system idea. It could be used for practical purposes too, like harvesting GPS data in a massive grid to spot and be able to avoid crowdy roads and intersections.


How about 3D Urban Modeling?

Urban 3D Modeling

Harris Corporation 3D Urban Models Featured On Web-based Live Search Maps


There are several coding contest/Forums/Idea site that you could get involved in:


you could also join Robocode project and implement some nontrivial feature ;-) Read this and talk to us.


Get a specification for some historical language (eg Algol60, Atlas Autocode, Coral 66) and implement a full compiler for it by means of a translator to C; in particular feel free to use some of the GCC extensions which make it much easier to translate those block-structured languages with nested procedures, dynamic array declarations etc. Previous attempts have been somewhat half-hearted due to the difficulty in mapping these languages to standard C.


You have also a option to get involved in Linux Kernel Development Community.


Build a solid base for a proper graphics editor for Linux. Then open source it and allow it to grow. The current choice is Gimp which is pretty bad. Instead of fixing it or extending it develop a new project which has a strong core and is extensible.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »