CS212 Fall 1998
Course Information


  • What is CS212 About?
  • CS212 vs. CS211
  • Reaching Us
  • Who We Are
  • When We Meet
  • Office Hours
  • Consulting Hours
  • Course Materials
  • Course Requirements
  • Turning in Assignments
  • Policy on Joint Work
  • Public Lab Facilities
  • Homework Due Dates
  • Exam Schedule
  • Tentative Lectures

  • 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 Dylan language, an object oriented dynamic language developed at Apple Computer, which is well suited for covering a broad range of introductory computer science topics. This is not a course about the Dylan 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

    Students often wonder whether to take CS211 or CS212. CS211 focuses on programming skills and is taught using the object-oriented language 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 can also reach the course staff by sending email to cs212@cs.cornell.edu.

    Who We Are

    When We Meet

    Lectures are Tuesday and Thursday at 10:10 in Caldwell 100. Recitations are Monday and Wednesday, 2:30-3:20 in Olin 165 (Section 1), 3:35-4:25 in Hollister 110 (Section 2), or 8-8:50pm in Upson 205 (Section 3). Recitations expand on the material in lecture and provide more opportunity to ask questions.

    Office Hours

    Consulting Hours

    Consulting hours are held in Upson 320, SuMTW 7-10pm. 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. Sunday: Aleksey; Monday: Carson; Tuesday: Maverick; Wednesday: Shawn. First consulting hours will be Tuesday 9/1.

    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.

    The Dylan interpreter is available free on the course web site. It is implemented in Java and will run under any Java-enabled web browser. The best current browser is Netscape 4 for Windows95/NT. There are also standalone versions available that you can download onto your computer if you do not want to use the web browser version. One word of warning: if you download a standalone Dylan onto your machine, make sure that you are using the most recent version by checking the web site.

    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 six problem sets, two preliminary exams, and a final exam. A schedule is given below. Each problem set will include written exercises and a programming assignment. Course grades will be based on a combination of the problem sets and exam scores. The problem sets will account for approximately one half of the total grade. No late assignments will be accepted, but we will generally grade assignments immediately and return them the following class period.

    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 should be turned in on the day that they are due in either in lecture or in Upson 303 before 4:00 pm. Do not turn them in to the consulting office; there will be no one there to receive them. No late assignments will be accepted, and there will be no extensions.

    Policy on Joint Work

    Much of the learning in this course comes from doing the programming problems. You may work jointly with one other person on the assignments. 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, you may use your own machine or the public ones. Since the course software is web-based, it doesn't matter which platform you use. The CS department does not provide computer facilities for this course.

    Homework Due Dates (subject to change)

    [9/10] Problem set 1
    [9/24] Problem set 2 (note change! was 9/22)
    [10/6] Problem set 3
    [10/27] Problem set 4
    [11/10] Problem set 5
    [11/24] Problem set 6jr
    [12/3] Problem set 6sr

    Exam Schedule (written in stone)

    If you have a conflict and will need to take a make-up exam, please notify Professor Kozen as soon as possible.

      Date Time Location
    Prelim 1 Thursday, October 15, 1998 7:30-9:00pm Hollister B14
    Review Wednesday, October 14, 1998 7-10pm Kimball B11
    Prelim 2 Tuesday, November 17, 1998 7:30-9:00pm McGraw 165
    Review Monday, November 16, 1998 7-10pm Kimball B11
    Final Tuesday, December 15, 1998 3:00-5:30pm Hollister B14
    Review Monday, December 14, 1998 5:00-7:00pm Kimball B11

    Tentative Lectures

    [8/27] The Study of Computation, and an Introduction to Dylan
    [9/1] Function Abstraction and the Substitution Model of Evaluation
    [9/3] Procedures and Processes: Iteration, Recursion and Induction
    [9/8] Higher Order Procedures: Functional Arguments and Values
    [9/10] Analysis of Algorithms: Orders of Growth
    [9/15] Data Abstraction: Structures, Contracts and Implementations
    [9/17] Hierarchical Data: Lists, Trees and the need for Quotation
    [9/22] Recursive List Processing and Reasoning about Lists
    [9/24] Symbolic Differentiation: An Extended Example
    [9/29] Generic Operations: Type Dispatching and Generic Functions
    [10/1] Generic Operations: Polynomial Arithmetic System
    [10/6] Assignment and the Environment Model of Evaluation
    [10/8] Assignment and Local State Variables
    [10/15] Objects with State and Object Oriented Programming
    [10/20] Object Oriented Programming and Inheritance
    [10/22] Multimethods and More About Object Oriented Programming
    [10/27] Mutable Data: Stacks and Queues
    [10/29] Mutable Data: Heaps, Heapsort and Priority Queues
    [11/3] The Metacircular Evaluator: Dylan in Dylan
    [11/5] Compilation
    [11/10] Optimization
    [11/12] Variations on Expression Evaluation
    [11/17] Streams
    [11/19] Infinite Streams
    [11/24] Garbage Collection and the Illusion of Infinite Memory
    [12/1] Topics in CS: Randomization and QuickSort
    [12/3] Topics in CS: Computability

    CS212 home page

    Last updated: 08/19/99 06:08 PM