In order to provide a more comprehensive educations for computer science students at my old university, I'm trying to develop an open source group they can contribute to.

What should I be looking for in project ideas so that they provide the maximum educational value for students who aren't very experienced in real-world projects? What should I be avoiding when deciding what to do?

  • 6
    Why not have them contribute to an existing projects? There are plenty out there, and it may be beneficial for the students to learn how to work with an existing code base and an established developer community? – Zhehao Mao Jul 8 '11 at 1:06
  • 1
    Start with the students. If they have no interest in the project, they won't contribute meaningfully to it. But if it can "scratch the itch" about something they need, or that they are passionate about, then all else will follow. – Macneil Jul 8 '11 at 3:46
  • Hi xpostudio4 questions asking for a list of recommendations are not on-topic here. I've reworded your question to ask something that's more in line with the types of questions that work well here and be more applicable to the programmer community at large. – user8 Jul 8 '11 at 16:11
  • Mark, i really appreciate the time you taked to make this, i felt like you were reading my mind. – Leonardo Jul 8 '11 at 19:01

Perhaps talk to an old professor and see if they have a project that could be open sourced that could become a community project. From what I can tell most junior developers need to know how to maintain other people's code. As far as practice with computer science concepts? Perhaps implementing a compiler or interpreter for a programming language? This would cover a lot of ground for Formal Computation.


IMO the things that are most difficult for students of computer science to pick up during their education relate directly to the development process it self, especially things like team development and working with customers. My suggestion in light of that is to find real projects for them to work on. By this I mean that you should seek out a "clients" (could be friends, family, a group on campus, the university itself, local businesses, etc) that have a software need. For me the best learning experiences have always been the real life ones.

Dealing with Customers
A crucial part of the projects would be to have the students actually communicate with the "client" to make sure that the development process is headed in the direction they need. This would help the students learn to communicate with customers. My first web development job was with a small company where on occasion I had to learn this communication process. I found that after having worked directly with the customer on these occasions my ability to develop with the customer's needs always in mind greatly improved even when I wasn't in direct communication with them afterwards. Also it is sometimes difficult to communicate accurately when one person is highly technical and the other is not. This is an important skill to have and is often something that can only be obtained in real life situations.

Learning to Develop with a Team
This is an ability that can only be learned by experience. Programmers will almost always need to adjust their normal development patterns when working with others on the same project. They will need to learn how to communicate with other members of their team as well as coordinate their efforts. I would highly recommend using some sort of version control system in this process.

There's many other aspects to the process that could be explored in the manner you're looking at but these would be the most important in my eyes. I'm sure you were thinking more along the technical lines but the reality is that most programmers if they're even slightly good at what they do can teach themselves the more technical things as they're needed. I would focus on the things that aren't as easily self taught.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.