![]()
Computer Science and |
Computer Science 151 |
|
Ben Gum
Office: Science 1410A
Telephone: extension 3127
E-mail: gum@cs.grinnell.edu
Office hours: Monday/Wednesday/Friday 11-11:50, Monday/Tuesday/Wednesday 3:15-4:05pm (Science 1410A), and by appointment.
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.
I will use whichever of the following two grading formulas is more beneficial to you.
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.
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.
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.
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:
Kelsey, Richard, Clinger, William, and Rees, Jonathan. Revised5 Report on the Algorithmic Language Scheme (February 20, 1998).
To any of you who are interested in seeing alternative approaches to the subject, try the following books:
Abelson, Harold, and Sussman, Gerald Jay, with Sussman, Julie. Structure and interpretation of computer programs (Cambridge, Massachusetts: MIT Press, second edition, 1996). The full text of this book is available on the World Wide Web (follow the link).
Dybvig, R. Kent. The Scheme programming language (Upper Saddle River, New Jersey: Prentice Hall PTR, second edition, 1996). The full text of this book is available on the World Wide Web (follow the link).
Felleisen, Matthias, Findler, Robert Bruce, Flatt, Matthew, and Krishnamurthi, Shriram. How to design programs: an introduction to computing and programming (Cambridge, Massachusetts: The MIT Press, 2001). The full text of this book is available on the World Wide Web (follow the link).
Friedman, Daniel P., and Felleisen, Matthias. The little Schemer (Cambridge, Massachusetts: The MIT Press, fourth edition, 1996).
Hailperin, Max, Kaiser, Barbara, and Knight, Karl. Concrete abstractions (Pacific Grove, California: PWS, 1999).
Springer, George and Friedman, Daniel P. Scheme and the art of programming (Cambridge, Massachusetts: The MIT Press, 1989).
schemers.org front-door page
The Programming Languages Team (creators of DrScheme)
PLT Scheme libraries and extensions
Frequently asked questions about Scheme
Colleges, universities, and secondary schools that teach and use Scheme
Scheme requests for implementation
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/~gum/courses/151/
created June 23, 2003
based on a similar course website by John David Stone