CSC 172
Introduction to Algorithms and Data Structures

Fall, 2007

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

The last time I taught this course was Spring 2002. Some, but not all, of the students in this class took CSC 171 from me in Spring 2006.


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. This can also be used as an anonymous "suggestion box".

Getting Help

My office hours (in Alumnae Hall 113A; if I'm not there, look around the corner in 112) are

Who should take this course?

This is a second programming course; it assumes that you have completed CSC 171 or equivalent (generally referred to by computer science faculty as "CS1"). Unfortunately, no two schools, even no two professors, teach exactly the same things in CS1. So for each of you, there will be some topics we discuss this semester that you've already seen. Even so, pay attention in case you're rusty on it, or in case I'm presenting it in a significantly different way.

The course is open to CS/CMIS majors, minors, and people who just want to learn some more about computer programming. CS and CMIS majors should take this course in their second or third semester, as it's a prerequisite for many other CS courses.

This course is 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 about five homework assignments, most of which will require hours of programming, either in a computer lab or at your home computer. According to the New York State Department of Education, you should expect to spend 10 hours/week on it: 2.5 in lecture, 2.5 in lab, and another 5 on homework and reading. I will assign homework on this basis; if you don't budget 5 hours/week for homework and reading, you may not be able to keep up with the work.

Schedule and Attendance

This course meets four (4) times a week: lectures on Tuesdays and Thursdays from 10:50 AM to 12:05 PM in Levermore 314, and labs on Tuesdays and Thursdays from 1:40 to 2:55 PM in Science 227. 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.

My experience teaching programming courses over the years has shown the importance of keeping up. 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.


Our main textbook for this semester will be Cay Horstmann's Java Concepts (4th edition, J. Wiley 2005, ISBN 0-471-69704-4). This is actually a CS1 textbook, but it covers some more advanced topics as well, so we'll move quickly through the first few chapters and spend more time on the later chapters, getting through the entire book by the end of the semester.

A supplementary text is Introduction to the Personal Software Process, by Watts Humphrey (Addison-Wesley 1996, ISBN 0-201-54809-7). This book isn't about how to program in Java, or C++, or any other specific language, but rather 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.

Reading List

For further reading...

You are visitor number to this page since September 23, 1998.
Last modified:
Stephen Bloch /