Computer Science and
Mathematics Department

Computer Science 151
Fundamentals of computer science I
Ben Gum

Fall 2003

Course Info

The class meets in the MathLAN lab, Science 2417. There are four sessions a week -- Mondays, Tuesdays, Wednesdays, and Fridays at 10am.

Course syllabus

The course syllabus contains links to the readings, labs, and assignments.

The instructor

Ben Gum Office: Science 1410A
Telephone: extension 3127
Office hours: Monday/Wednesday/Friday 11-11:50, Monday/Tuesday/Wednesday 3:15-4:05pm (Science 1410A), and by appointment.

Attendance Policy

As this is lab-based, workshop style course, class attendance is required. After your percentage grade is calculated (using the more favorable of the two formulas below), 2 - (your number of unexcused absences) will be added to it to find the percentage that I will use to determine your final letter grade. For example, if your percentage grade is 88.4, then if will receive an A if you had no unexcused absenses, and a B if you had 6 unexcused absences. If you are between 15 and 30 minutes late for class, that will count as half of an absence. If you are more than 30 minutes late for class, that will count as a full absence. Absences will be considered excused (and thus will not affect your grade), only if I am notified by Student Affairs or the Health Center about extenuating circumstances.

Grade Weighting

I will use whichever of the following two grading formulas is more beneficial to you.

Formula 1:
Assignments: 50% (assignment 8 is worth 10%, the others are worth 5%)
Final exam: 0%
Midterm exams: 45% (each is worth 15%)
Class participation: 5%

Formula 2:
Assignments: 50% (assignment 8 is worth 10%, the others are worth 5%)
Final exam: 22.5%
Midterm exams: 22.5% (each is worth 7.5%)
Class participation: 5%

Final Grade Scale

Special Request

During the lab portion of this course, the lab assistant and I will go around and help you individually. Because I have some severe allergies, I must ask that you not not smoke or put on large ammounts of cologne or perfume right before coming to class or office hours. This has rarely been a problem in the past, but I wanted to mention it ahead of time, so that I am always able to give students my full attention.

Class sessions

This course is a general introduction to the fundamental ideas of computer science: algorithms, data structures, and abstraction. It includes computer programming (algorithm design, documentation, coding, testing, and debugging) in a high-level programming language, Scheme.

This is an interactive, lab-based course, taught in a collaborative workshop style. You'll spend most of each session working at computers, in groups of two or three, on exercises and projects. Frequently we'll spend a few minutes at the beginning discussing the day's reading. For more challenging topics, we will spend two days on the lab and the first day will have a larger lecture portion.

The purpose of the lab exercises and projects is for you to explore some ideas and techniques and to experiment with them. I don't directly assess most of the labs you write in class unless you e-mail them to me and ask for comments -- that's entirely up to you. The requirement for class sessions is simply that you prepare for each one (by studying the assigned reading) and then attend.

The written assignments for the course comprises several labs and several programming assignments, which call for you to design, document, write, and test Scheme programs and to submit them for evaluation.

You should submit programming assignments by turning in a printout of you program complete with comments and testcases. Assignments must be turned in within the first fifteen minutes of class on the day that they are due, otherwise there will be a 10% late penalty per day that they are late. Exceptions to this late policy will only be granted after notification of extenuating circumstances from the Health Center or Student Affairs.

There will be three in-class midterms and a three-hour, cumulative, final examination at the end of the course. The final will be optional and will be replace half of your midterm grade if it improves your final grade. The examinations will be with pencil and paper.

Individual and collaborative work

Computer science 151 is taught in a collaborative workshop style. Each day, you'll work on laboratory problems with other students in the class. You are encouraged to work on labs and programming assignments in groups of two. With approval from me you may work in groups of three. Each person in the group must contribute to each assignment that is worked on jointly. In addition, each person must turn in a copy of each assignment with the names of the collaborator(s)'s names at the top.

You may not collaborate on exams.

Course readings

There are no textbooks for this course. Links to the required readings are all available on the online syllabus. If you find any mistakes or ambiguities in the online readings, please let me know and I will correct them. In addition to the readings on this website, you may want to have a look from time to time at the document that defines Scheme:

To any of you who are interested in seeing alternative approaches to the subject, try the following books:

Interesting links front-door page

The Programming Languages Team (creators of DrScheme)

PLT Scheme libraries and extensions

Scheme home page at MIT

Frequently asked questions about Scheme

The Scheme Underground

Colleges, universities, and secondary schools that teach and use Scheme

Scheme requests for implementation

This document is available on the World Wide Web as

created June 23, 2003
based on a similar course website by John David Stone

Ben Gum (