Computer Science 60
Principles of Computer Science
Syllabus, Spring 2005

Professor: Ran ("RON") Libeskind-Hadas
Office: Olin 1245
Phone: 18976
E-mail: hadas@cs.hmc.edu
Official Office Hours: Monday through Wednesday, 4:15-5:15 PM. Friday 3:15-5:15 PM. Also, feel free to set up a meeting with me outside of these hours.
Unofficial Office Hours: Drop by!

Professor: Zach Dodds
Office: Olin 1265
Phone: 78990
E-mail: dodds@cs.hmc.edu
Official Office Hours: MWF 3-5pm
Real Office Hours: Anytime; feel free to stop by or set up a meeting...


Grutoring Hours in Beckman 102:    Click here for a full schedule
Monday 8-12 PM
Tuesday 8-9 PM
Thursday 8-9 PM
Saturday 2-4 PM
Sunday 2-4 PM and 8-10 PM

Graders/Tutors (aka "Grutors") Believe it or not, there are 18 grutors for this course! They will be holding regular hours in the Beckman 102 CS lab (see times above) . They will also be grading your assignments (but not exams). This link has a complete schedule of tutoring and office hours, names, and email addresses.

Help via E-mail: You can send e-mail to cs60help@cs.hmc.edu with short questions related to homework. Ran and the grutors will be checking this e-mail address frequently, so it is a fast way to get your questions answered. We ask that you use cs60help rather than sending e-mail to the professor or grutors directly. This will help us make sure that we are answering questions promptly. It also ensures that the entire course staff sees the question and subsequent answer, allowing us to be consistent about the way we answer questions.

For more extensive help, please see a grutor or Ran or Zach in person. For help with the computing system, please send e-mail to help@cs.hmc.edu, or seek out one of the many Mudders who know the system well!

Class Times and Place:

Course Homepage: http://www.cs.hmc.edu/courses/2005/spring/cs60

What Is This Course About?

The objective of this course is to introduce you to some of the fundamental principles of computer science. You will learn to use several different programming languages including an object-oriented language (Java), a functional programming language (rex), and a logic programming language (Prolog). The course covers topics in data structures, algorithms, complexity analysis, computability theory, logic principles, and computer architecture. In short, we try to pack the whole CS major into one semester... .

Is This Course for You?

The answer is YES! Alright, seriously, the prerequisite for this course is CS 5. If you have not taken CS 5 at HMC or you have not officially placed out of CS 5, please talk to us.

Attendance

On-time attendance at every lecture is absolutely required in order to pass this course. If you are unable to attend class due to illness, please contact one of us on the day of the missed class (or sooner). If you must miss class for any other reason, please let us know in advance.

Texts

Computer Science: Abstraction to Implementation by Robert M. Keller. This is the primary textbook for the course. This book is available for purchase from Ms. Joyce Greene in the main CS office in Olin 1258. The book is sold at the cost of production with no profit to any party at HMC. You may also find it useful to have a textbook or reference book on the Java language.

Assignments and Grades

There will be an assignment every week (with exceptions for holidays). Unless explicitly stated otherwise, assignments will be due each Monday at 11:59 PM. (Since we use an automated procedure to determine submission time, if you submit even slightly after midnight, it will be recorded as being submitted the next day.) In addition, you have two late days that you may use at your discretion. A late day allows you to turn in an assignment 24 hours late with no penalty. You may not use two late days on the same assignment. Late homeworks will not be accepted once these late days have been used (except in cases of illness, where special arrangements should be made with the professors).

In addition to weekly assignments, there will be two midterm exams and a comprehensive final exam.

Finally, there will be in-class worksheets in many lectures. Worksheets will typically be a 5 minute exercise done in class. They will be graded "full credit" or "no credit". Any serious effort will receive "full credit". If you miss a class due to illness or special circumstances, please send e-mail to one of us on the day of class.

The relative weighting scheme will be as follows:

Assignment Grading

The weekly assignments will involve programming and, especially later in the course, some "paper and pencil" problems. For the programming assignments, your program must compile. Thus, you are better off submitting a solution that compiles and does something than a lot of code that would be perfect if it would would only compile! Your best bet is to build your program incrementally, adding features only after the previous version compiles and runs correctly.

We will use guidelines in grading the programming assignments which will be approximately as follows:

We will try to give you very clear feedback indicating what could be done to improve the program. If the feedback isn't entirely clear to you, please talk to one of us or one of the grutors.

Collaboration Policy

You are welcome and encouraged to discuss approaches to solving homework problems. You may not share any written materials of any kind. In particular, you may not send or receive code that is related in any way to this course by e-mail, on the web, from another person's file or printout, or in any other form.

You may wonder if it is permitted to help a classmate debug a program and, in the process, look at their code. This is permitted, assuming that it is done with the intent of aiding your classmate and not with intent of gleaning code that might be used in your own program. Use your good judgement here. If you're not sure about what's appropriate, please talk to us.

All conduct in this course should be conducted in accordance with the Harvey Mudd Honor Code.