Teaching Programming Project Ideas

hello, world code example
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?

Some ideas:

  • 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.

2 thoughts on “Teaching Programming Project Ideas

  1. Hey Matt,

    Sounds like a great class, and I would absolutely enjoy discussing this sometime over happy hour.

    I think I might have shared this with you once, but I think this might be one way to think about your class objectives:

    http://journal.stuffwithstuff.com/2010/11/26/the-biology-of-sloppy-code/ (and this was thoughtful too http://software-carpentry.org/2012/06/if-you-want-to-teach-isnt-it-only-fair-to-learn-a-few-things-first/)

    It sounds like you might be trying to throw your students directly into the wet lab…

    For starters, I still remember my first programming class, which I thought was fabulous. It hasn’t changed /too/ much, and you can see the assignments here – http://www.cs.princeton.edu/courses/archive/spring12/cos126/assignments.php.

    What they had us do, from the outset, was write programs that output postscript (really, just the simplest turtle graphics), and we drew pretty pictures, and then fractals. So, a bit of math, but felt more like creative drawing. And, off the bat, we were writing code which generated code, and jumping into recursion. It was really clever (though, we wasted a _forest_ of paper trying to print malformed postscript).

    The next thing to comes to mind is the pystar project – http://pystar.org/ – an open source curriculum for teaching women (and their allies) to code python. Possibly a cool curriculum to latch onto, contribute back to, and interact with. Similarly, these folks might be interested in this discussion too http://www.python.org/community/sigs/current/edu-sig/

    As for particular projects, yeah, I think using apis of services they use would be fabulous. Even just comparing what they can find in the interface vs the api.

    This exercise seems well within reach: http://www.applefritter.com/bannedbooks

    As is something like this: http://www.weknowwhatyouredoing.com/

    I would have to think harder about how an exercise like this could build over time. And, to what extent you might want the different groups programs to interact with each other.

    keep us posted!

  2. Jonah – thanks for the great links, I’m just back from PR and haven’t had a chance to check them out yet. I did have some ideas for projects, which I will post soon.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>