Computer Science 60
Principles of Computer Science
Syllabus, Fall 2004
Professor: Ran ("RON") Libeskind-Hadas
Offices: Olin 1245
Phone: 18976
E-mail:
hadas@cs.hmc.edu
Office Hours: Every weekday, 4:10-5 PM and by arrangement
(except Mondays which are extended from 3-5 PM)
Grutoring Hours in Beckman 102:
Monday 8-11 PM.
Tuesday-Thursday 8-9 PM.
Saturday 3-5 PM.
Sunday 3-5 PM and 8-11 PM.
Graders/Tutors (aka "Grutors")
Believe it or not, there are 10 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). The grutors
are:
Mac Mason (Head Grutor), Laura "Elisa" Celis, Chris Erickson, Jeff
Hellrung, Ben Lickly, Mjumbe Poe, Greg Sandstrom, Audrey Sederberg,
Brian Tagiku, and Kevin Zielnicki.
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 in person.
For help with the computing system,
please send e-mail to
help@cs.hmc.edu.
Class Times and Place:
- Section 1: Tuesday and Thursday, 1:15-2:30, Parsons 2358
- Section 2: Tuesday and Thursday, 2:45-4:00, Parsons 2358
Course Homepage:
http://www.cs.hmc.edu/courses/2004/fall/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.
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 Ran.
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 Ran 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 professor).
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
Ran on the day of class.
The relative weighting scheme will be as follows:
- Weekly Assignments: 50 %
- Two Midterm Exams: 20 % (Thursday, October 7 and
Thursday, November 18, both in class)
- Final Exam: 20 % (Tuesday, December 14 2-5 PM or Friday,
December 17, 2-5 PM, in class. You can choose which one you
wish to take.)
- In-Class Worksheets: 10%
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:
- 70% of the points will be given for a program that meets the
exact specifications of the assignment.
- 30% of the points will be given for good design, style, and
robustness. Good design and style means, for example, that your program
is divided into small logical functions, new classes are defined and used
when appropriate, and the program uses efficient algorithms and data
structures. Your program should also be robust in the sense that
it handles minor aberrations in user input. Finally, the code must
be readable and well-documented.
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 Ran 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 Ran.
All conduct in this course should
be conducted in accordance with the Harvey Mudd Honor Code.