CS 212 - Spring 2004
Time and Place
- Lecture: Wednesday, 3:35 to 4:25 PM in Philips 203
- There are also three Sections. These do not meet every week. When
they do meet, attendance is optional.
- Monday, 12:20 to 1:10 PM in Hollister 306
- Monday, 7:30 to 8:20 PM in Upson 205
- Wednesday, 7:30 to 8:20 PM in Upson 205
- You must have either already taken CS 211 or be taking it this semester.
- If you take CS 211 and CS 212 during the same semester: The
instructors of CS 211 and CS 212 try to coordinate topics and assignment
- If you take CS 211 before CS 212: You will have more experience, but
possibly there will be less connection between CS 212 and your version of CS
- Taking CS 212 before CS 211 is not permitted.
- There is no required text for CS 212.
- However, you may find it useful to look at
one or more of the following texts:
- Programming for the Virtual Machine, J. Engel, Reading, Mass:
Science: An Overview, 8th Edition, J.
G. Brookshear, Boston: Addison-Wesley, 2003. PowerPoint
lectures based on this text are available online.
Java Virtual Machine Specification, Second Edition, T. Lindholm
& F. Yellin, Boston: Addison-Wesley, 1999. This text is
available online in an html
- There are also a number of useful texts listed on the CS
- We require that students use Java SDK 1.4 or higher. Computers in CIT
Computer Labs should already have the current (1.4.2) SDK (Software
Development Kit). If you need to install it on your own computer, you
can download it from http://java.sun.com/.
Note that there are several Java-related downloads available; you want the
- You will probably want to use an IDE (Interactive Development
Environment). You may use any development environment that you wish.
CodeWarrior and DrJava are both installed in CIT Computer Labs. DrJava is
free and is being recommended this semester in CS 211 (Instructions
for Downloading DrJava).
- The project for this semester is to build a compiler for a C-like language
called Bali. The code produced by this compiler will be
sam-code. Sam-code resembles (sort of) Java Byte Code (JBC) and it
runs on SaM (Stack Machine), a simplified substitute
for the JVM (Java Virtual Machine).
- The project is divided into four major assignments called Parts.
- Part 1: Introduction to SaM, simple expressions
- Part 2: Compiling expressions, control structures
- Part 3: Compiling functions, GUI
- Part 4: Compiling classes
- There will be smaller homework assignments that are due in between the
Project Parts. These are short assignments, designed to help you get started
on the Project Parts; they should not require a large time investment.
- We will be using an on-line submission system called Course
Management System (CMS). If you are working with partners, do not wait
until the last minute to submit an assignment! Since your team may only
submit one assignment, CMS requires that you and your partners form a group.
Group formation requires that each member log into CMS in advance of the due
- You may work by yourself or with one or two partners for each Part.
- You may not work with different partners for different portions of the same
- You may not change or drop partners once you have started working on a
particular Part. You may only divorce your partner(s) after you submit a
Part. (David Schwartz has written some advice on
divorcing a partner.)
- You may not remove partners' names from an assignment unless you do not
use each others' work.
- You may change partners for a new Part.
- You share equal responsibility with your partner(s) for completing the
assignment and all issues of Academic
- You will share your assignment grade with your partner(s) for each
assignment. Groups that feel that one or more partners have not equally
contributed may state their case to the instructor, who may modify the
individual grades for that assignment.
- Your grade for CS 212 is based on the assignments. The assignments
are weighted about like this (some adjustments may occur):
- Part 1: 10%
- Part 2: 25%
- Part 3: 35%
- Part 4: 30%
- Assignments are graded based on style (code should be clearly written,
comments should be clear and helpful, solution files should be easy to
navigate) and correctness (the program should accomplish the required task(s)).
- Lateness Policy: Late assignments will not be be accepted except in
emergency situations. If a genuine emergency situation exists you must
inform the course staff as soon as possible. If any of your partners has a
university-excused conflict, the remaining partners are still responsible
for submitting the assignment on time and training the partner(s) who missed
some of the work.
- Regrade Policy:
- Regrade requests should be made using the CMS online regrade system.
- Regrade requests must be made within one week of the time that
homework has been graded. It's not fair to the graders to ask them
to recall details of their grading scheme for an assignment from 5 weeks
- We place the "burden of proof" on the student. You need to
explain how and why you deserve a higher grade.
- We try to be reasonable. If your assignment receives a low grade
because a single small file was inadvertently left out of your homework
submission, we will probably be willing to regrade the assignment.
- Course Web Site: http://www.cs.cornell.edu/Courses/cs212/2004sp/
Check the website often. This is the central repository for all
the information available about the course including the latest homework
assignment, scheduling changes, and important announcements.
- Course Newsgroup: cornell.class.cs212
This group is monitored by the course staff and is intended for both
questions and discussion. This is likely to be the quickest way to get
a question answered. Please do not post homework solutions or partial
- Office Hours: Hours will be announced in class and posted
on the course web site as soon as they are determined.
- Appointments: An appointment can be made with any member of the
course staff. These are best scheduled via email.
- Email: Questions about the course can be emailed to any
of the course staff. Email addresses are listed on the course home page.
- You must follow both the Computer
Science Department Policy on Academic Integrity and the Cornell
University Code of Academic Integrity. The remaining rules listed
here are to explain how these policies apply to this course.
- You may discuss work with other students. Discussion of an
algorithm, approach, or general form of code is acceptable. However,
discussion should never involve other students possessing a copy of all, or
a portion of, your work, regardless of format.
- You must follow the rules for Working in Teams.
It is expected that team members will divide tasks, but each member of a
team should understand the work produced by other team members.
- If you use outside resources (e.g., textbook examples or code from an
online source), you must credit them (i.e., indicate the author and location
of the resource).
- Contact a member of the course staff immediately if you suspect a
violation of Academic Integrity.
- Penalties for violations of Academic Integrity are assigned on a
case-by-case basis. Possible penalties include lowering a course
grade, failing the course, or Cornell University disciplinary action.