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



Welcome!

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:

Deliverables

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.

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