Computer Science 42
Principles and Practice of Computer Science
Syllabus, Fall 2010

Is This Course for You?

This is an accelerated introductory computer science course, designed for students with significant computer science and/or programming experience.  We assume that you have taken (and done very well in) AP Computer Science or a similar introductory computer science or introductory programming course.  We assume you are familiar with Object Oriented programming, likely in Java.  You should be comfortable programming in at least one real programming language.   This course moves fast and covers a lot of ground, but it is also a lot of fun, and we get to study some very awesome CS concepts.   This course covers most of the material in both CS 5 and CS 60.  After completing this course you will be eligible to take any course that has CS 60 as a prerequisite.

If you are unsure about your placement in this class, please speak with Prof. Alvarado ASAP.  It is possible to switch to CS5 Black (see below), but the earlier you switch the better.

Overall Course Aims and Objectives

Course Mission Statement

CS 42, Principles and Practice of Computer Science, provides the student with a broad overview of the science of computer science, at the same time providing sufficient depth in a number of key conceptual areas that are intended to serve both majors and non-majors well. These concepts include:

All of these concepts are important in both computer science and engineering. Programming in a variety of languages is used as a vehicle to demonstrate concepts. Language choice is not specifically made to match the often-changing demands of industry. Instead, we hope that each student gains experience in as wide a range of programming practices as possible. Underneath each assignment's language are conceptual points that are language-independent.

The overarching goal is that, at the end of CS42, you'll feel comfortable programming in any language -- even one you've never seen before! That is, you will be a savvy computational thinker, not dependent on any particular technology.

Logistics

Class Times and Place:

Course Homepage: http://www.cs.hmc.edu/courses/2010/fall/cs42

Instructor: Christine Alvarado
Office: Olin 1241
Phone: 909-607-0443
E-mail: alvarado AT cs DOT hmc DOT edu
Office hours: Fridays 1-3pm, or by appointment (just send me an email--I usually can schedule something the same day)
Note: Outside of our office hours, I often can be hard to track down, but I am always available by appointment.  Please send me email to set up an appointment whenever you'd like to meet and can't make it to office hours.  Email is the best way to reach me; you can expect a reply within 24 hours during the work week.

Graders/Tutors (aka "Grutors") There are several grutors for this course whose mission in life (at least some of the time) is to help convey the wonder of CS 42! They will be holding regular hours in the Beckman CS labs in B102 and B105 (the link below has specific hours). They will also be grading your assignments (but not the exams). A complete schedule of tutoring hours can be found at http://www.cs.hmc.edu/courses/2010/fall/cs42/tutorhours.html

Help via E-mail: You can send e-mail to cs42help AT cs DOT hmc DOT edu with short questions related to homework. The grutors and instructors will be checking this e-mail address frequently, so it is a fast way to get your questions answered. For general questions, there are advantages to using cs42help, rather than sending e-mail to individuals directly: it's often quicker and it 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 Christine or a grutor in person. In particular, for help with the submission system (a forgotten password, for example), email Christine. For help with the computing system you're using -- your machine or one of the lab machines, your best bet is to seek out one of the many Mudders who know the system well!


Switching Courses

If you decide that CS42 is not right for you, you may switch into CS5 Black.  Please do you best to make this decision before the official add date, otherwise things get very complicated.  Talk to Prof. Alvarado as soon as you feel that CS42 might not be the right place for you.

Attendance

On-time attendance at lectures is required in order to pass this course.
If you are ill and cannot attend or an emergency arises, please contact Dean Jacobsen before the missed class if at all possible (or very shortly thereafter if not). If you need to miss class for any other reason, you must get permission in advance from the Associate Dean for Academic Affairs (Dean Jacobsen).

Your first two unexcused absences will have no impact on your grade.  For each of your next three unexcused absences, you will lose 10% of your participation grade.  Your sixth unexcused absence will result in a grade of "No Credit".  There are no exceptions to this rule.

Optional Text

There is no required textbook for this class.  We try to provide everything you need to know in lectures or via web resources (linked from the References page).

However, some students might find the following textbooks useful:


Assignments and Exams

There will be an assignment every week (with exceptions for breaks). Unless stated otherwise, homework is 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.

You have three late days or "CS 42 Euros" that you may use at your discretion -- you don't need to tell us in advance. 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. In cases of illness or emergency, you should contact Dean Jacobsen to arrange an extension and have him contact me. 

In addition to weekly assignments, there will be two midterm exams and a final exam. See the exam schedule page for up-to-date details.

Grading

This course is considered a first-year course, and is graded on a Pass/No Pass scale.  There are three graded components of this course, weighted as follows:

Using the point values above, you will see that the breakdown is roughly 60% of your grade for assignments, 30% for exams, and 10% for participation.  

Final grades are computed with this Scheme code as our rough guideline*.  Note that letter grades will be provided for your information only, and they will not be recorded.
(define (score p)
(cond
((>= p 0.97) "High Pass")
((>= p 0.70) "Pass")
(else "We hope not to have to use this option"))

*exact boundaries subject to change.  

IMPORTANT GRADING NOTES:

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 me or one of the grutors.

Participation includes good-faith effort on our in-class "quizzes" - actual results on those quizzes do not matter at all. Attendance is also important.

Collaboration Policy/Pair Programming

For most of the programming assignments you will be permitted to "pair program" on some problems if you wish. The rules and guidelines for  pair programming are as follows:

Now that you know the rules, here are some pair programming guidelines to help you get the most out of your experience:

Whether you are programming individually or as a pair, there are a few important rules regarding cooperation. You are always welcome and encouraged to discuss approaches to solving homework problems with any classmate, the grutors, or Christine. You may not share any written/typed materials of any kind. In particular, you may not send or receive code that is related to this course by e-mail, on the web, from another person's file or printout, or in any other form. This rule applies to two people working as a pair with the following exception: The code may be sent by e-mail from one member of the pair to the other after the code is submitted for grading. Moreover, the pair may print out a copy of their code to work on together.

You may wonder if it is permitted to help a classmate (other than your partner if you are pair programming) 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 Christine.

All conduct in this course should be conducted in accordance with the Harvey Mudd Honor Code. If you are an off-campus student and unfamiliar with the honor code, please talk to Christine.

Students with Disabilities

The college is committed to complying with the Rehabilitation Act of 1973 and the Americans with Disabilities Act of 1990 by providing reasonable accommodations for students who are disabled. Students requiring specific accommodations for a physical, psychological, medical or learning disability should contact the Dean of Students at (909) 621-8125. The Dean will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.