Welcome to CS 212
A project course that introduces students to the ways of software engineering
using the Java programming language. The course requires the design and
implementation of several large programs.
- Name: Programming Practicum (formerly: Java Practicum)
- Semesters Offered: Fall, Spring
- Credit Hours: 1
- Pre- or Co-requisite: CS/ENGRD 211
CS 212 is a one-credit project course required for computer science majors.
Students may either take CS 212 simultaneously with CS 211 or afterwards,
though we recommend taking CS 212 as a co-requisite. For more information,
see the CS 211 website.
- Grade Option: letter
- Course Website: http://www.cs.cornell.edu/courses/cs212/
- Course Newsgroup: cornell.class.cs212
In CS 212, you are expected to accomplish the following:
- Improve your programming skills.
- Implement principles of software engineering, including top-down and
bottom-up design, software re-use, abstraction, and testing.
- Develop interpersonal and project management skills needed for later
- Learn about the field of computer science.
To help you develop these skills, you will work on a large-scale project that
we split into four assignments. The assignments are briefly described
Lectures & Sections
- Lectures take place each Wednesday from 3:35 until 4:25 in Hollister B14.
- There are three sections:
- Monday, 12:20 - 1:10 in Hollister 306
- Monday, 7:30 - 8:20 in Upson 205
- Wednesday, 7:30 - 8:20 in Upson 205
- Lecture notes and section notes will generally be placed on the course
website. Note that you are responsible for material covered in
lecture even if not all of it is placed on-line.
- Course Web Site: http://www.cs.cornell.edu/courses/cs212/
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.
- Email: Questions about the course can be emailed to any
of the course staff.
- Appointments: You can make an appointment with any member of the
course staff. The best way to set up an appointment is via email.
You will have four homework assignments this semester. Each assignment
contributes to an overall project that takes the semester to complete; thus,
each assignment is called a Part. Some of the Parts will have
subparts that are turned in separately (e.g., a design document turned
in before writing the actual code). During lecture, we try to give tips on anticipating the next part so
that you can work ahead.
To achieve the course objectives, the project involves writing a compiler
that translates one computer language (Bali) into another (SaM).
Learning how to write the compiler will help to bridge the gap
between introductory programming courses and more in-depth courses, such as
CS312 and CS314. The project will introduce you to computer
architecture, assembly code, the Java Virtual Machine (JVM), compilers, and
data structures. The four parts have the following structure and goals:
- Part 1: Introduce SaM, stacks, postfix notation; practice with
the Sam "computer".
- Part 2: Control structures
- Part 3: Functions
- Part 4: Objects and classes
- Working with Partners
Unless otherwise posted, you must follow these rules:
- You may work with one or two partners for each assignment except P1,
or you may work solo.
- You may not work with different partners for different parts of the same
- You may not change or drop partners once you have started working on
- You may only divorce your partner(s) after you submit an assignment.
- You may not remove partners' names from an assignment unless you do
not use each others' work.
- You may change partners for a new assignment.
- You share equal responsibility with your partner(s) for completing the
assignment and all issues of Academic Integrity.
- You 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.
- Submitting Assignments
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
- Lateness Policy
Generally, late assignments receive a 20-point penalty per day late. Once
we post solutions, we do not accept any late assignments. If any of your
partners has a university-excused conflict (see Illness and Other Conflicts,
below), the remaining partners are still responsible for submitting the
assignment on time and training the partner who missed some of the work. If
you work by yourself and have a university-excused conflict, you need to
contact the instructor before the due date to make arrangements.
- Illness and Other Conflicts
If you miss an assignment due date because of illness or another
university-excused conflict, you must contact the instructor as soon as
possible and you must provide documentation. If you miss more than one
assignment, you are strongly encouraged to drop the course. In particular,
if you miss a major portion of the project, you should drop the course.
Missing the last Part due to a university-excused conflict will likely
result in an Incomplete. See also the Lateness Policy, above.
- Regrade Policy
Regrades are generally due one week after the assignment grades are
posted. We post instructions for each Part on the steps to take for a
regrade request; such a request usually involves either the use of CMS or a
scheduled meeting with the course staff.
- We reserve the right to regrade the entire submission. As a result, we
might raise or lower your overall score.
- We place the burden of proof on the student. So, in cases of
requests for more points, you need to demonstrate how and why you
deserve a higher grade.
- We allow "minor corrections" in some cases. For example, if
fixing some punctuation or a few words demonstrates that your code
really does work a lot better than we perceived, you might earn more
points. However, we usually apply a point deduction for such fixes, so
you will not necessarily improve your overall score.
All students must follow the Code of Academic Integrity (AI) at all times.
The penalty for any violation of the code is severe. The rules below represent
our implementation of the Department
of Computer Science Code of Academic Integrity and the Cornell
University Code of Academic Integrity.
- Doing Homework
- You may discuss work with other students. Generally, discussing
an algorithm, approach, or general form of code is acceptable. However,
you should not show anyone your code and you should not look at anyone
else's code. Cooperation should never involve other students
possessing a copy of all, or a portion of, your work, regardless of
format. [Of course, partners can share code without such
restrictions; see Working with Partners, above.]
- You may not remove your partner's name from an assignment unless you
do not use each other's work.
- Unless otherwise posted, you must follow the rules for partners,
- When you are allowed to use additional resources (such as textbook
examples and supplied code), you must credit them.
- Submitting Homework
- When applicable, the programs and other work that you submit must
actually generate any indicated output and/or results.
- Your name must not appear on more than one submission.
- Contacting Students and Staff
- Contact a member of the course staff immediately if you suspect a
violation of the Code of Academic Integrity.
- If you are suspected of a violation, we will send an e-mail
notification. If your on-line listing shows a local address, we will
mail an additional hardcopy of the notification. Refer to CIT's website http://whoiam.cornell.edu/
for updating your local address.
- We assign penalties on a case-by-case basis.
- We hold you responsible in case of a violation.
- We may lower your grade, fail you in CS212, or request Cornell
University disciplinary action..
Your final grade will be based on the assignments; there are no exams for
this course. All partners are expected to contribute equally. If discrepancies
arise, we will adjust course grades accordingly, as stated above in the section
on the Project. The approximate weights for each part are are listed
below. The Course Evaluation counts toward 1% of your grade.
- Part 1: 9%
- Part 2: 30%
- Part 3: 30%
- Part 4: 30%