CSC 171
Introduction to Computer Programming

Spring, 2006

Feedback:

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

Mondays 3:40-5:00 (immediately after lab, in the lab),

Tuesdays 10:00-4:00 (in Alumnæ 113A; if I'm not there,
look in the computer lab around the corner in Alumnæ 114), and

Thursdays 10:00-4:00 by appointment.

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.

Textbooks

For the first few weeks of the semester, we'll work in the Scheme
language, using the textbook How to Design
Programs, which has been ordered by the bookstore; however, if you
don't want to spend money on it, that's OK because the entire text of
the book is available for free online.

After that, we'll switch into the Java language and use the textbook
How to Design Class Hierarchies, which has not been
ordered by the bookstore because it's so new it's not in print yet.

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 Scheme or Java (or any other
specific language, for that matter),
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.

Once we switch to Java, we'll
also be using an on-line Java tutorial system named
CodeLab.
It consists of a bunch of short coding exercises that can be
graded automatically, so you can try something, see whether it's
correct, and if not, keep improving it until it is, all while I'm asleep
in bed.

Recipes and Syntax Rules

Software support

To do programming assignments on your home computer, you'll need to
download and install the development environment
DrScheme. Despite the name, this
program will actually carry us through both the Scheme part and the Java
part of the semester.