Home     Overview     Materials     Assignments     Problem Set Submission     Software
CS212 Overview

What is CS212 About?

CS212 is an introductory course covering a broad range of computer science concepts and techniques, including data abstraction, recursion, program correctness, generic functions, object oriented programming, pattern matching, and languages and their evaluators. We use the Scheme programming language, a dynamic functional language augmented with object oriented facilities, which is well suited for covering a broad range of introductory computer science topics. This is not a course about the Scheme language! It just happens to be the "notation" that we have chosen for writing programs. The major goals of the course are to teach students how to think clearly about programs and programming and to provide a toolbox of modern programming techniques that will be applicable in any language.

CS212 vs. CS211

Q: What's the difference between CS212 and CS211? 

A: Students often wonder whether to take CS211 or CS212. CS211 focuses on programming skills and is taught using Java. CS212 is more of an introduction to computer science. It provides exposure to a broad range of computational and programming problems using a number of programming paradigms, including functional, object-oriented and imperative programming techniques. If you have a good CS background and/or good formal skills (e.g., you are good at math or physics) you should probably take CS212. Transfers between CS211 and CS212 in either direction are encouraged during the first two weeks.

Reaching Us

The best way to reach the course staff is by posting questions or comments to the CS212 newsgroup cornell.class.cs212. We will try to respond to questions within one working day. You should read the course policies for the newsgroup, which also provides more information about logging into the newsgroup. Students must follow these policies to receive assistance from the course staff.

You can also reach the course staff by sending email to cs212@cs.cornell.edu.

Who We Are

When grading problem sets and prelims, we use the following scribbles to indicate who graded the problem.

When We Meet

Lectures are Tuesday and Thursday at 10:10 in Olin 255. Recitations are Monday and Wednesday, 
2:30-3:20 (Sec1 - Olin 245);
3:35-4:25 (Sec2 - Olin 218);
11:15-12:05 (Sec3 - Upson 207);
1:25-2:15 (Sec4 - location TBA); 
Recitations expand on the material in lecture and provide more opportunity to ask questions.

Office Hours

Ramin  By appointment (send email to Scott Coldren).
Ozan  Tuesday, Thursday 11:10-12:10
Rhodes 492
Walter Monday, Wednesday 12:00-1:00
Upson 331 (Syslab) 5-1008
Aleksey By appointment.
David Liben-Nowell Fridays, 9:00pm-11:00pm +0100 (GMT Daylight Time)
The County Arms, Castle Street, Cambridge

Consulting Hours

Consulting hours are held in Upson 320. The night before every project is due, we will hold extended consulting hours from 7pm to 12 midnight. Consulting hours will not be held the day the problem sets are due or the day after. The consulting schedule is as follows:

    Sunday 7-10pm Kate Oliver
    Monday 7-10pm Jeff Vinocur
    Tuesday 7-10pm Carson Bloomberg
    Wednesday 7-10pm Grant Wang and Maverick Woo

Course Materials

There is no textbook for this course. There will be course handouts and lecture notes, which will be available on the course web site. If you are interested in acquiring books on Scheme, there is a partial list of both introductory and advanced texts on the software page. Those books that are available have been put on reserve in Carpenter.

The Scheme development environment that we are using is called DrSwindle. See the course software page for more information and documentation about the Scheme language and the DrSwindle environment.

Course Requirements

Students are responsible for all material in the assigned readings, as well as material covered in lectures and in recitations. There will be five to six problem sets, two preliminary exams, and a final exam. In addition, we will periodically have short homeworks and in-class quizzes.  The short homeworks and quizzes will be graded on a strictly pass/fail basis and are intended to give you quick feedback and lots of practice.   Each problem set will include written exercises and a programming assignment. Course grades will be based on a combination of the short homeworks, quizzes, problem sets and exam scores. The problem sets will account for approximately one third of the total grade. No late assignments will be accepted, but we will generally grade assignments and return them immediately.

You should try to complete the programming assignments early, as we will not accept late work. The best use of your time and the machine's time is to think about the problems before typing anything at the computer. (No matter how many times we say this, it takes a long time to sink in: think before typing.)

Turning in Assignments

Assignments are submitted using the web page, as described here. No late assignments will be accepted, and there will be no extensions.

Policy on Joint Work

Short answer: You can pair up for the (long) problem sets but not the short homeworks.

Much of the learning in this course comes from doing the programming problems. You may (and in fact we encourage you to) work jointly with one other person on the problem sets. No more than two people should work together. If you work with someone else, you must submit a single joint assignment with both names on it. Under no circumstances may you hand in work done with (or by) someone else under your own name. If in doubt, credit the person(s) from whom you got help. Your code should never be shared with anyone other than your partner. You would be amazed at how easy it is to tell when people work together on problem sets, so please don't make life unpleasant for all of us by breaking these rules. The penalties for cheating at Cornell are severe, and include expulsion; see the CS Department's Code of Academic Integrity. If you are unsure about anything, please ask.

Public Lab Facilities

CIT and various colleges on campus provide public Macintosh and PC facilities. Though DrSwindle runs on Macintosh's, the ones provided by CIT appear to be too slow.  Therefore, we have only installed DrSwindle on the Windows machines. You may use your own machine or the public ones. If you are interested in installing DrSwindle on your own machine, then see the course software page for details. The CS department does not provide computer facilities for this course.

Homework Due Dates (subject to change)

Problem set 1: September 7
Problem set 2: September 23
Problem set 3: October 7
Problem set 4: October 21
Problem set 5: November 11
Problem set 6: December 2

Exam Schedule (written in stone)

If you have a conflict and will need to take a make-up exam, please notify Professor Zabih as soon as possible. Make-up exams in CS212 will be oral.

  Date Time Location
Prelim 1 Thursday, October 14 7:30-9:00pm B14 Hollister
Review Tuesday, October 5 9:30-11pm 111 Upson
Prelim 2 Tuesday, November 16 7:30-9:00pm TBA
Review Monday, November 15 7-10pm TBA
Final Thursday, December 16 3:00-5:30pm Olin 255
Review Wednesday, December 15 6:30-8:30pm TBA

Tentative Lecture Schedule

26-Aug-99	The Study of Computation, and an Introduction to Scheme
31-Aug-99	Function Abstraction and the Substitution Model of Evaluation
2-Sep-99	Procedures and Processes: Iteration, Recursion and Induction
7-Sep-99	Higher Order Procedures: Functional Arguments and Values
9-Sep-99	Analysis of Algorithms: Orders of Growth
14-Sep-99	Data Abstraction: Structures, Contracts and Implementations
16-Sep-99	Hierarchical Data: Lists, Trees and the need for Quotation
21-Sep-99	Recursive List Processing and Reasoning about Lists
23-Sep-99	Symbolic Differentiation: An Extended Example
28-Sep-99	Generic Operations
30-Sep-99	Generic Operations: Polynomial Arithmetic System
5-Oct-99	Assignment and the Environment Model of Evaluation
7-Oct-99	Assignment and Local State Variables
14-Oct-99	Objects with State and Object Oriented Programming
19-Oct-99	Object Oriented Programming and Inheritance
21-Oct-99	More About Object Oriented Programming
26-Oct-99	Mutable Data: Stacks and Queues
28-Oct-99	Mutable Data: Heaps, Heapsort and Priority Queues
2-Nov-99	The Metacircular Evaluator: Scheme in Scheme
4-Nov-99	Compilation
9-Nov-99	Optimization
11-Nov-99	Variations on Expression Evaluation
16-Nov-99	Streams
18-Nov-99	Infinite Streams
23-Nov-99	Garbage Collection and the Illusion of Infinite Memory
30-Nov-99	Topics in CS: Randomization and QuickSort
2-Dec-99	Topics in CS: Computability

 




Valid HTML 4.0!CS212 Home Page
© 1999 Cornell University Computer Science