CSC 171
Introduction to Computer Programming

Spring, 2009

Syllabus Calendar Homework Assignments Moodle PSP Recipes Language stuff Coding examples Daily Survey


I learned on January 13 that I was teaching this course, so not everything on this Web site is set up yet. I'll fill things in as the semester goes on.


In the first week of class, I'd like you to fill out this pre-term survey, so I know what your backgrounds are.

Subsequently (ideally every few days), I'd like you to fill out the daily survey to help me keep track of what people are finding easy, and what people are having trouble with.

Getting Help

My office hours are M 11:00-2:00, TTh 1:30-3:00, W 11:00-1:00.

Tutor Anton Soradoi (e-mail will have office hours in Alumnæ 112 (the Math/CS Department computer lab) M 2:00-6:00 PM, W 4:00-6:00 PM, F 2:00-4:00 PM. If the door is closed, knock.

Who should take this course?

This is a first programming course; it doesn't assume that you have done any computer programming. If you have, however, you may still learn a lot from it; talk to the instructor to decide whether you should skip it and go into CSC 172.

The course is open to CS/CMIS majors, minors, and people who just want to learn what this "computer programming" thing is all about. CS and CMIS majors should take this course in their first or second semester, as it's a prerequisite for many other CS courses. For math majors, this course counts as your programming requirement. For students majoring in something other than CS, CMIS, or math, this course counts towards your math/science distribution requirement. Such students are welcome, but may wish to consider taking the less-intense CSC 160 instead.

Although the course has no prerequisites, it is nonetheless hard work. Lectures will not cover everything you need in order to complete the homework assignments; you need to read the textbook too. There will be five to eight homework assignments, most of which will require hours of programming, either in a computer lab or at your home computer.

Schedule and Attendance

This course meets five (5) times a week: lectures on Monday, Wednesday, and Friday mornings, and labs on Monday and Wednesday afternoons. You must register for both section 1 (lecture) and section 10 (lab). You are expected to attend both lectures and labs; we'll have new material to cover in both. This is a 4-credit course, which means you should expect to spend 12 hours/week on it: 3 in lecture, 3 in lab, and another 6 on homework and reading.

My experience teaching various beginning programming courses over the years has shown the importance of keeping up with the schedule. Students who fall behind tend to stay behind, and either drop or fail. I don't want anybody to drop or fail; if you fear that you're falling behind, talk to me as soon as possible and I'll work with you to solve the problem while it's still solvable.


I've ordered three textbooks for this course:

Gee, Rick, Java -- Objects First: An Introduction to Computer Programming using Java and BlueJ
This will be the main textbook for the semester. The price is right: you can download it for free.
Barnes & Kölling, Objects First with Java, Pearson 2006, ISBN 0-13-197629-X
I've ordered this as recommended but not required; it covers much of the same material as the Gee book, but it's available in print from a real publisher.
Humphrey, Watts, Introduction to the Personal Software Process, Addison-Wesley 1999, ISBN 0-201-54809-7
You might wonder about a CS textbook with a copyright date ten years ago, since computers and computer languages change so quickly. But this book is about the human side of programming, and human beings don't change quickly at all. This book isn't about how to program so much as how to be a programmer: how to study your own capabilities, productivity, strengths and weaknesses in programming, in order to produce better results more quickly, without staying up until dawn the night before the program is due.

Software support

To do programming assignments on your home computer, you'll need to download and install the Java development environment BlueJ.

For many examples in this course, we'll use the tester testing package rather than JUnit, because JUnit is a pain to use on methods that return complex data types. You can download tester.jar and save it on your home computer or the lab computers, then (in BlueJ) go to the "Preferences" menu command, choose "Libraries", then "Add", then select this file. You can learn more about the tester package here. Unfortunately, the links in the "Samples" section of at that site are broken; here is a sample testing class.

If you use Windows, I've set up a package of BlueJ modifications which installs tester.jar, sets up BlueJ so that "Create Unit Test" creates a tester-based test class rather than a JUnit-based test class, and various other things work better. To use it, download and uncompress this file, open the resulting folder (named "BlueJ stuff"), and double-click the icon labelled "copystuff". This will copy the relevant files into the right places. You can do this on the lab computers, and it'll work until the next time that computer is rebooted. If you have BlueJ installed in on your home computer in C:\BlueJ, you can do it once on your home computer and never worry about it again. (If you have BlueJ installed somewhere else, you'll need to edit the "copystuff" file and correct the location, then double-click it.)

I've set up some forms for entering and viewing PSP data. You may use these forms to record defect and time information. To use the forms successfully, make sure your browser accepts JavaScript and cookies. (For more information about PSP, read Watts Humphrey's Introduction to the Personal Software Process.)

Reading List

You are visitor number to this page since June 4, 2001.
Last modified:
Stephen Bloch /