I am researching ideas on how to prepare students with the skills and work ethic necessary to be effective programmers.
Philip Greenspun has some interesting
thoughts on What's wrong with the standard undergraduate computer science curriculum and has published a course on Software Engineering for Internet Applications to address some of these issues. He encourages other comp. sci. educators to provide this course as well and provides them with teaching resources.
This is the assignment list Professor Om P. Damani put together for his Foundation Lab course at IIT Bombay. I really like the assignments, but I'm kind of blown away by how much work they are and how little time is given to complete them. A good friend of mine went to IIT and said this was standard and mentioned that this class was one of three a student would be taking in a semester all with similar work loads.
Another aspect of Damani's class I find interesting is that there doesn't appear to be any programming instruction ie. descriptions of arrays, functions, classes, objects etc .. There wouldn't be time. A student needs to pick up a new language and create a large project with it in the time it would take an MCA academy to get to looping.