Computer Science 60
Principles of Computer Science
Syllabus, Spring 2015

back to the CS60 homepage

Is This Course for You?

YES!

The official prerequisite for this course is CS 5
Pomona's CS51 no longer satisfies the prerequisite for this course.

Overall Course Aims and Objectives

Course Overview

CS 60, Principles 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 computer science per se and, increasingly, in fields that creatively apply computation to problems of very different sorts. In CS 60 programming in a variety of languages helps develop a variety of computational concepts -- as a result, those languages are not necessarily made to match the rapidly-changing demands of industry. We will point out, however, that Java doesn't hurt! That index also shows that variants of C are all very popular: you can pursue C in CS105, C++ in CS 70, and Objective-C in CS 121... .

Instead of language details, we hope that each student gains experience in as wide a range of programming practices as possible. Underneath each assignment's language are fundamental conceptual points that are language-independent.

The overarching goal is that, at the end of CS60, 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.

The choice of material in CS 60 is based on a combination of utility and accessibility. We want to serve non-majors with a deeper and broader course that builds from CS 5. In addition, this course is a launching point for more serious study in the CS major itself. For example, CS 60 is a prerequisite for courses such as

as well as many advanced courses and electives in the major.

Logistics

Class Times and Place:

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

Instructors:

Prof. Colleen Lewis
Office: Olin 1280
E-mail: lewis AT cs DOT hmc DOT edu

Prof. Beth Trushkowsky
Office: Olin 1267
E-mail: beth AT cs DOT hmc DOT edu

Shared office hours: by appointment OR: Monday 2:30-4:00 (in the LAC lab) & Tuesday 2:30-4:55 (in the LAC lab)

Graders/Tutors (aka "Grutors") There are many grutors for this course whose mission in life (at least some of the time) is to help convey the wonder of CS 60! They will be holding regular hours in the LAC lab (the link below has specific hours and places). They will also be grading your assignments: complimentary comments about grutors are always welcome! Here is the CS 60 tutoring hours page.

Online Help: This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the grutors, and the instructors. Rather than emailing questions directly to one individual, we encourage you to post your questions on Piazza.

We will sign you up for the Piazza site at http://www.piazza.com - you may see a note to "OK" that sign up -- do!

Also, for help with the submission system (a forgotten password, for example), email me. 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/other students who know the system well!

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 us 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 - drop me a note!

Optional Text

There is no textbook needed for CS 60. We will try to be sure that the course materials, along with online references, suffice. There is also a venerable, entirely optional book covering many of the concepts and some of the language details here: Computer Science: Abstraction to Implementation by Robert M. Keller.

Assignments and Exams

There will be an assignment every week, with exceptions for breaks. Except in a couple of cases, homework is due each Tuesday 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 60 Euros" (we're actually using bitcoins this fall, but we'll call them Euros). 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 (one day) 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 one of us. Note that CS 60 does not drop any of its assignment scores: assignments are by far the most important vehicle for learning the skills and concepts in the course!

In addition to weekly assignments, we'll have quizzes to encourage you to review each of the languages you'll learn. See the schedule page for up-to-date details.

Grading

The weekly assignments will involve programming and, especially later in the course, some "paper and pencil" problems.

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

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

Your final grade will be an average of your grades on each course component. Although the following is subject to change, components will be weighted roughly as follows:

Participation is largely a good-faith effort on our in-class "quizzes" -- worthwhile, too, because those are problems we use to introduce new ideas and from which we model the exam questions... .

The actual results on those quizzes do not matter at all, but participation does. Attendance is also important.

Final grades are computed with this Racket/Scheme code as our rough guideline:


(define (score p)
(cond
((>= p 0.95) "A")
((>= p 0.90) "A-")
((>= p 0.87) "B+")
((>= p 0.83) "B")
((>= p 0.80) "B-")
((>= p 0.70) "C range")
((>= p 0.60) "passing range")
(else "we hope not to have to use this condition")))

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:

Honor Code Details

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 instructors. 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 judgment here. If you're not sure about what's appropriate, please talk to an instructor.

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