This course intends to show you how to map problems onto programs. In this course, you will be designing your own data representations, and you will be programming in Java. The material in this course should be applicable to most modern programming languages. The course approaches the material systematically, showing for each class of data how to write functions that consume and produce this kind of data.
Students taking this course must have a C- or better in CS101, must have a C- or better in Math 141 or 221, and have a basic understanding of algebra and mathematics.
Also, it requires curiosity and self-driven exploration.
John Clements, aoeuclements @ brinckerhoff.org
Lecture: 08:00-9:00, MWF, room 14-251
Lab: 9:00-10:00, MWF, room 14-303
Lecture: 10:00-11:00, MWF, room 21-238
Lab: 11:00-12:00, MWF, room 14-303
See my Contact Info page for my calendar. You can add it to your calendar, if that makes your life easier.
This is the course web page, its link is http://www.brinckerhoff.org/clements/csc102-sp11.
In this class, we will be developing code using DrJava. In later weeks, you may be able to use any environment you like. In the first few weeks, I will require that you use DrJava.
We will probably be using a web-based handin server; I’ll make the details available as I have them.
There will be a number of required readings. Most of them will be short pieces on the practice of programming.
The book has an optional textbook, Cay Horstmann’s Big Java.
There is a google group, csc102-sp11 . You will need to join this group. You can request this by visiting the url
I will use this group to tell you about important changes and updates to the assignments. However, it will also be a forum for you to help each other. As long as you’re not posting code, I strongly encourage you to ask questions and to respond to questions on the group. For this reason, I also require you to sign up in individual e-mail mode, and not in digest mode.
Labs in this course take the form of simple exercises to be completed in a single lab period, designed to help you understand the lecture material and to lead you toward solutions for the larger assignments.
Most labs will be "graded", in the sense that I will verify at the end of the lab period that you’ve completed the work. These will generally be simple credit/no-credit marks.
In labs, you are heartily encouraged to collaborate like crazy. Look at everyone else’s code, copy and paste, type on your neighbor’s keyboard, whatever. Labs need not be entirely your work.
Programming assignments will be due at 11:00 PM. You must submit homework assignments using the Handin button. Late assignments will not be accepted.
Your submissions should be anonymized. That is, they should not contain your name.
Part of your grade may include a score given by your fellow students on your code. In particular, in some weeks you may be given two (anonymous) submissions from other members of the class, and required to assign legibility and design points.
From time to time, we may examine student code, in lecture. Try to ensure that the code you submit is something you’d be proud to show to the others in the class.
I will grade submitted code by running test suites of my own devising and by running your test suites and by reading your code.
I will grade your demonstrations and code and design reviews based on the success of the demonstrated code and upon the delivery of the presentation.
Naturally, all grades contain an element of subjectivity.
I do not formally state attendance requirements, though part of your grade may depend on whether you attend the class regularly.
In the programming assignments, you may not copy another student’s code (including test cases). You may not share code with other students in the class. That is, you may not allow another student to see the code you write for the class, deliberately or through obvious negligence.
I will use an automated tool to compare student submissions and identify dishonesty.
Students believed to be cheating–that is, both parties involved in the transfer of code–will receive a failing grade in the class.
There will be four short tests and a final exam in the course. The tests will be at the beginning of class on Monday of weeks 2, 4, 6, and 8. Each one should take no more than 20 minutes. The tests will be closed-note. No electronic devices, including cell phones or mp3 players, will be permitted during the exams.
Grades will be determined by performance on programming projects, the exams, and class interaction. A small fraction of the grade is determined by the labs, and by the instructor’s whim. The breakdown of the grade is as follows:
4 Tests : 20%
Instructor’s Whim: 5%