Computer Science 115-03, Fall 1996
Informational Handout


General Information


Description

An introduction to computer programming using the Scheme programming language, a dialect of LISP. Topics include procedural abstraction, recursion, algorithm analysis, data abstraction, program modularity, object-oriented programming, mutable data and streams. This course is the first in the recommended introductory programming sequence for undergraduate majors.


Software and Instructional Lab

The department has an instructional lab, called the Maclab, which is located in Ryerson 177 and has a large number of Macs with the MacGambit software used for this course. MacGambit is an implementation of the Scheme language, which is (mostly) compatible with the Scheme found in the textbooks. Code from Abelson and Sussman is available on the Maclab server, and this code may be used for your assignments.

You will need to bring two 3.5 inch disks each time you work in the Maclab, so that you can save the work you've done. You should save your work frequently to disk, by which I mean whenever you make changes. At the end of each working session, you should copy your work onto the second disk, so you will have a backup in case something happens to one of the disks.

You may download MacGambit onto disks and run it on another Macintosh. If you do, you should copy the entier MacGambit folder except for the folder called "Additional Sources". You will be copying about 1.9 Megabytes, which can fit onto two disks. To fit it onto one disk, you can use the "stuffit" program to compress the file. If you have questions about copying MacGambit, ask for help from the Maclab staff.


Grading Policies

This course will be graded on the basis of weekly assignments, weekly quizzes, a midterm and final exam. The assignments are due at the time of class. No credit will be given for late assignments. This policy is intended to encourage you to keep up with the work, which is EXTREMELY important in this course.

Quizzes will be given during the last 10 minutes of class every Wednesday, covering the material up through Monday's lecture, as well as the previous homework. They should be easy if you've come to class and done the work. Make-up quizzes will not be given.

The grade in this course will be based on the following percentages:

homeworks -- 50%
quizzes -- 10%
midterm -- 15%
final exam -- 25%

The letter grade you get in the course will be determined by the following absolute scale, based on the total number of points you receive (out of 100).

95 -100: A+
90 - 94: A
85 - 89: A-
80 - 84: B+
75 - 79: B
70 - 74: B-
65 - 69: C+
60 - 64: C
55 - 59: C-
50 - 54: D+
45 - 49: D
40 - 44: D-
0 - 39: F


Homeworks

There will be 8 assignments during the quarter. You will hand in a printout of your code along with a printout of your testing the program. Please make sure your papers are stapled in order and that your name appears on every page. You will also put all of your code and tests in a folder with your name on it and the assignment number, and then copy this folder into the appropriate folder within the HomeWork DropBox on the Maclab server (Maclab Administration, Courses, Fall 1996, CS 115-03, HomeWork DropBox).


Academic Misconduct

University policy prohibits academic misconduct. In this course, this means that students are allowed to discuss the reading material and the assignments with one another, but may not work on assignments together. For example, having a general discussion on how to approach an assignment is fine, but writing code together is not allowed. Please acknowledge on each assignment any discussions that may have taken place.

Material To Be Covered

The following list of material corresponds to Chapters 1, 2, and 3 of the Abelson and Sussman textbook.

Expressions and Procedures: expressions, naming and the environment, lambda expressions, compound expressions, substitution model of evaluation, conditional expresssions, black box abstraction, block structure and scope, let expressions

Designing, Testing and Debugging : introduction, input/output

Performance Analysis and Probabilisitic Methods : orders of growth, types of recursion, probabilistic methods

Procedures Revisited: procedures as parameters, procedures as returned values

Data Abstraction : introduction, pairs, message-passing, representing sets, example: Huffman coding

State : assignment, local state, object-oriented programming, environment model of evaluation, mutable data

Streams: introduction, higher-order procedures, maps, filters, nested mappings, implementing streams, infinitely long streams, nested mappings over infinite streams, modeling local state


[back] CS 115-03 page

Peter Kimmel (kimmel@cs.uchicago.edu)