Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rewarding code projects for *complete* beginners [closed]

Courses for people who are being introduced to programming very often include a code project, which I think is a nice way to learn. However, such projects often feel too artificial, and are thus not very rewarding to work on.

What are your ideas of rewarding code projects? (Preferably easy to begin, and extendable at will for the more advanced!).

Edit:

@Mark: thanks for the link, though I'm more interested in projects for people who are completely new to programming (the link seems to refer more to people who are already proficient in at least one language, and trying to learn a new one -the typical SO audience I'd say :) -).

@Kevin, Vaibhav, gary: I was thinking of people who are learning programming through one language, so at the beginning of the course some don't know anything about control structures (and even less about any kind of syntax). However, I was thinking in quite a large project (typically in the 1k-10k lines of code range, possibly in groups of 2 or 3 students). This is what was done at my school for the complete beginners, and it sure seemed to work for them... except that most of them found their projects quite boring to work on!

like image 822
OysterD Avatar asked Aug 25 '08 20:08

OysterD


People also ask

What are personal coding projects?

Coding projects are simple applications built by junior developers or beginners. These apps usually have a single functionality, like a to-do list app or a random number generator. These projects are easy to conceptualize and build end-to-end as a single developer that's at the beginning of their career.


2 Answers

As has been stated a few times, what you are trying to teach the beginner is very important to the project.

My advice to you for planning something like this:

1) Avoid making a computer game

A computer game, while fun to build, doesn't reward the programmer with results early on (it's very complex). You want to concentrate on small but useful application programs, such as a Port Scanner. The example there is a little complex, but it's one of the best learning projects I've seen on the web.

2) Teach graphics early

It's rewarding to see the fruits of your labors early on, and it motivates you to go further. Whether you're using WinForms, MFC or the Win32 API, OpenGL or DirectX, teach it early.

3) Many small lessons with in depth information

This principle is followed by the above linked Port Scanner project, and it works well. Teach each part thoroughly, and give time for the beginner to absorb the lesson. I think that ZophusX had a good format for giving the information. It's too bad he's mostly abandoned his site.

4) It takes time

Don't rush things. Nobody becomes a stellar programmer in a few weeks. Try and make the lessons simple, but engaging, and keep building from your previous lessons.

5) Get feedback early and often

You might think a project is incredibly interesting, or a particular lesson or such, but you aren't the one learning. Your student(s) will greatly appreciate it when you ask them early on how things are going, and what they'd like to know more about. Be flexible enough that you can accomodate some of those requests.

6) Have fun teaching

Have fun. Passion is contagious, and if your student(s) see how much you enjoy the subject matter, some of that enthusiasm will rub off on them as well.

I hope that helps!

like image 123
Marc Reside Avatar answered Sep 20 '22 10:09

Marc Reside


Some good rewarding projects, in terms of what you can learn and which are quite scalable in terms of complexity, features are:

  • Games
  • A travel and transportation reservation/booking system
  • Encyclopedia or a Dictionary of terms, articles
  • Conversion Calculators (Currency, Units, etc.)

The key is to pick a project simple enough, so that some of its features are immediately apparent, when you look at the project title. And when really given a thought, will reveal more features that you can add to it.

The project should have enough difficulty to so that its features seem just beyond the beginner's reach, thereby motivating him to learn something new all the time.

like image 20
Pascal Avatar answered Sep 19 '22 10:09

Pascal