Harvey Mudd College
Computer Science Department
Programming Practicum (CS 189)

Final project dates and guidelines

Because seniors need to be finished before the other classes, there are two sets of deadlines:

In your final write-up, which does not need to be more than a page, you should include a short paragraph on each of these:

Updates 2/28/12

CS 189's second progress report is not due until Tuesday night March 6th, and its final report and demo will be due Tuesday night March 20th (the Tuesday after spring break). (A more detailed guide to what should appear in that progress report appears below.)

Also, as has always been part of the schedule, there is no meeting on 2/28. However, we (unexpectedly) have a CS colloquium on machine learning/applied algorithms in Pryne on that day. As with previous Tuesday talks, attendance is worth a small amount of credit (+2) in CS 189. There won't be a sign-up sheet on 2/28, but it will count if you note that you went to the talk in the progress report due 3/6.

Good luck with everything you're juggling this week!


In the Spring 2012 term, CS 189 Programming practicum is running differently from the self-contained, algorithmic problem-solving of previous terms. If you're looking for that kind of practice, join us again in the Fall of 2012! Here is a link to Fall 2011's page.

Course structure

This term, CS 189 will ask you to design two half-term projects or one full-term project that will give you a chance to learn a new technology, library, API, or domain. The idea is that you pursue in a scheduled, deliberate, and reflective way a software undertaking that is new, e.g.,

Of course, there are many other projects CS 189 can support -- these are just some possibilities. The projects must have a demonstratable deliverable, must involve technologies new to you, and should require on the order of 3-5 hours per week, including the write-ups of your progress. Thus, I hope CS 189 helps you see these kinds of projects through to completion -- recognizing that "completion" is relative.

Concerns? Questions? Suggestions? Let me (Zach Dodds) know at dodds@cs.hmc.edu!

No ideas?

I'm happy to chat about possible project ideas. In addition, there are default projects that, at least, I'm interested in and that you'd be welcome to pursue if you don't have anything in particular in mind. Both involve web technologies:


According to the following schedule, there will be a project update due (by 11:59pm on Tuesday night):

The class itself will meet on Tuesdays, 4:15-5:30 up to and including March 20th. We will not meet on Tuesdays after that.

New    For the mid-project updates, please include the following pieces. A short write-up might be 2-3 paragraphs with a screenshot of the project to date. A more thorough write-up would be twice that length, perhaps with some additional media or explanations, if it fits the project:

  1. A description of your progress since the last update (about a paragraph or two). You should note in particular any obstacles that got in the way and how you dealt with them. These can be small (details of a particular technology or language) or large (something simply ended up not working), and the remedies might be straightforward (enough work worked!), creative (you redefined the bug as a feature), accepting (took another approach altogether) or something else entirely. The big picture is that your path may be one of interest to someone else in the future, and it will help to point out what happened along the way.
  2. Describe how well your project works currently, and explain in at least a few sentences what you would like to do for the next update or the other plans you have for the near term. If possible, include a link to your project and/or a screenshot or other media that shows it in its current state.
  3. Include some reflection on the project and its technologies; also, be sure to note the time you've spent on the project since the last update.

For the project #1 plan and initial report, please include in your write-up at least the following items. Each of the four large items below should be a paragraph or so:

  1. Describe your overall project idea(s) for this first half of the term. If appropriate, include any additional context, motivation, or connections this project might make with others. The description can be succinct, e.g., a website that reads bar codes, but then please expand in a bit more detail the interactions you imagine. Alternatively, the description might be a purely technical one, e.g., I'm going to learn three image-processing API calls per week from the OpenCV library. In a case like this, elaborate what those might be and the small applications you plan to build to show off those calls.
  2. Describe your progress so far, along with what you've done successfully -- and perhaps unsuccessfully -- to make progress! Are the technologies all working? Do you have a Hello-World!-type example working? Are there sticking points that are likely to be resolved (or others unlikely to be resolved). Basically, this paragraph should make it clear that you'll be able to make progress. Otherwise, choose a different project/technology!
  3. Note how much time you've spent so far in the last two weeks. (Obviously, this won't take a paragraph!) If applicable, mention how you're budgeting time for the project. The goal is to keep CS 189 in the 3-4 hours per week range.
  4. Describe your plan for the next two weeks and beyond. More detail is better here, even if the detail serves to motivate your thinking about your next steps.
  5. In addition, include a description of your objectives for the third report (2/28) and for the final deliverable (3/9). These need not be at the same level of detail as your plan for the next two weeks, but it does not hurt to think ahead -- even if, in the end, your plans change.
  6. Be sure to link this write-up to the CS 189 google doc noted below.

For each deliverable, your team should create a link from this Programming Practicum Google doc to your write-up. Feel free to use your own Google doc or Google site. Unlike the above Google doc, feel free to make yours private (as long as you share among your team and with zdodds@gmail.com). If you're working on web technologies of any sort, you might simply use your own CS webspace and those technologies to host your write-up page!

Here is another link to the Programming Practicum Google doc

Slides and links