I haven’t taught programming for a couple of years now, and I’m excited to be offering CS 602, a graduate level introduction to programming course this fall. This summer, I’m trying to figure out how to organize the course.
What I know already:
- students will have a variety of backgrounds, ranging from undergrad degrees in computer science, to undergrad degrees in elementary education (true hackers can substitute a grad level CS course that is more appropriate, like an AI course, natural language processing, machine learning, etc.)
- I’m teaching Python. Python rocks and is worth knowing when they graduate.
- I want learners to write code, not solve math problems…
- I don’t want to alienate less technical students, I believe everyone can (and probably should) learn to program
So, I like the idea of working on larger projects, instead of doing traditional lab/textbook assignments. This is simlar to what they’re doing over at Udacity, teaching programming (in python) by building a web search engine.
But, instead of one project, I would like three projects, that grow in complexity. This inquiry cycle (so the research and intuition suggest) help students get the most out of project- and problem- based learning, in part because they don’t get overwhelmed in the complexity and get to apply their knowledge and skills in different situations.
So, my question to you (reader), is this: what would make fun programming challenges, that can be reasonably taken on by (hard-working, intelligent) novice programmers?
- build a search engine (it’s not a bad idea…we could do it too)
- data visualization of New York City school data (or other large, interesting, data set)
- Words-with-friends word solver utility (i.e. cheat)
- Facebook privacy invasion scraper (of public data)
- Lego Robotics race (I have the kits, need to test out the Python Bindings to make sure it’s not too complex for intro course)
So, if you have any thoughts, leave a comment.