Computer Science 212

Programming Practicum

Fall 2007

Administration Notes & Examples Project
Course Info Lecture Notes Assignments
Staff Section Notes SaM
Office Hours Bali
CMS Java


Date Topic Announcement
Dec 20 Final Grades Final grades have been released on CMS.  Have a good break.
Nov 30 Office Hours
  • Office hours for 212 continue through Tuesday, Dec 4. Updated office hours will be posted if the office hour schedule need to be altered (TAs have final exams, too).
  • If you need help outside of office hours, consider emailing a TA to ask questions or to set up an appointment.  The course newsgroup is also a good place to ask questions.
Nov 30 Project Part 4 Fixed a mistake in the Bali Specs for Part 4. The grammar mistakenly indicated that subscript-brackets were required for a type; the subscript brackets are, of course, optional.
Nov 30 Project Part 4 As announced in lecture: To ease some of the end-of-semester crunch, although Part 4 is officially due at 11:59PM on Friday, Nov 30, there is no lateness penalty for Part 4 as long as it is submitted to CMS by 11:59PM on Tuesday, Dec 4.
Nov 28 Course Evaluation Please take the time to do the online course evaluation (  
  • Completing the course evaluation is worth 1% of your CS212 grade.
  • Evaluations are anonymous. We get a list of those who completed an evaluation, but we don't know who said what.
Nov 28 Lecture Lecture 12 - Last Lecture is now online.
Nov 14 Lecture Lecture 11 - Compiling Bali Part 4 is now online.
Nov 10 Project Part 4 Added text to the Bali Specs to clarify that a keyword used as a variable is a syntax error and to clarify what can be assigned to in an assignment statement.  Added another Bonus Work choice (Heap clean-up).
Nov 9 Project Part 4 The Project Part 4 write-up is now online. There may be some minor changes made by early next week, but I wanted to get the write-up online for those who like to start early.
Nov 7 Lecture Lecture 10 - Implementing Objects is now online.
Nov 4 Project Part 3 The kind and generous TAs have prevailed upon me to delay the due date for Part 3 by two days. Project Part 3 is now due on Thursday, Nov 8, at 11:59PM.
Oct 31 Project Part 3 As has been pointed out on the course newsgroup, there were some syntax errors [a  missing colon (:) and a missing semicolon (;)] in the Bali program that appeared in the Part 3 write-up. This has now been corrected in the write-up.
Oct 31 Lecture Lecture 09 - Software Tools is now online.
Oct 27 Groups for Project As stated in the Course Info, you have the option of changing partners for a new assignment. As described this week in email and in the newsgroup:
  • If your group is changing in any way (e.g., your partner has disappeared, you would like to divorce your partner, your pair has become a triple) you need to notify Jeff Chadwick via email (see the Staff page for his email address). We need names and NetIDs so that we can update CMS.
  • If you are seeking a partner you can
    • place a partner-request on the course newsgroup,
    • email a partner request to Jeff Chadwick who will attempt to match people, or
    • find a partner some other way.
  • If we match you with another student (or students) this just means that you should contact the other student(s) to see if you mutually agree to be partners; it does not mean that you must be partners. 
Oct 24 Lecture Lecture 08 - Implementing Arrays is now online.
Oct 19 Project Part 3 The Project Part 3 write-up is now online.  The (optional) Design Document is due Friday, Oct 26, 11:59PM, and the everything else is due Tuesday, Nov 6, 11:59PM.
Oct 17 Part 2B AMS (Assignment Management System) is a tool you must use to submit Part 2B.  Here is an outline of the necessary steps
  • Download AMS.jar from Part 2B of CMS.
  • Double-click on AMS.jar.  This should open a Java window.
  • Click on "New Assignment..." to add your project files to an assignment.  The remaining steps should be straightforward.

AMS will ask if it needs your help to find the tools.jar file that you are using (if you can compile Java code then you're using a tools.jar file). It should be in your JDK installation.  For instance, mine is in C:\Program Files\Java\jdk1.6.0_02\lib.

Oct 17 Lecture Lecture 07 - Discussion of Part 3 & Programming Languages is now online.
Oct 12 Section The topic for section this next week (sections meeting on Oct 15 and Oct 17) is "Questions on Part 2B".  Attendance is optional, but encouraged --- this is a good chance to ask questions about Part 2B of the project (which is due on Thursday, Oct 18).  Depending on how many people attend, individual help will probably be available.
Oct 10 Lecture For those interested, Reza Behforooz's Personal Blog includes some links related to the talk he gave on Wednesday, Oct 3.
Oct 3 Lecture Lecture 06 - Implementing Functions is now online.
Oct 2 Bali The Bali link (under Project at the top of this page) now links to the specifications for Bali.  If you're interested, you can see what all of Bali look like.
Sep 26 Part 2A As part of the grading for Part 2A, each group must schedule a meeting with a TA to discuss their Design Document.  The CMS assignment page (the same page you use to submit your files) contains a table called 'Available time slots.' You will see all meeting slots that we've created, and the available slots will be selectable by a radio input. There's a button directly underneath the table titled 'Assign/Change time slot' that will confirm the time.  The time-slots are in the early part of next week, starting on Sunday.  At present, not all available time-slots appear online, but they should all be there soon.
Sep 26 Part 2A If you're in a group, be sure to form a group on CMS soon---ideally, well before the assignment is due (11:59pm, Thursday, Sep 27).  All students in a group need to interact with CMS for a group to exist.
Sep 26 Part 2 Some clarification has been added to the Bali Specs for Part 2 due to questions about loop behavior.  Note that there are two blocks of statements within a loop.  The loop works by executing the first block, then checking the condition and possibly exiting the loop, then executing the second block.  If the condition causes a loop-exit then the second block is not executed.  After executing the second block the loop starts over again with the first block.  The example in the Project Part 2 write-up is a loop that happens to have an empty first block; this is just meant to be an example.  Either statement-block in a loop can be empty or both blocks be nonempty.  (It's also legal for both blocks to be empty, but then it's not clear that the loop would be useful.)
Sep 26 Lecture Lecture 05 - Software Engineering is now online.
Sep 22 Part 2 A syntax error in the sample program in  has been corrected.  The files for Part2B are all online now; links to these files are in the write-up (Project Part 2) and on the Assignments page.
Sep 19 Lecture Lecture 04 - Code Generation & Software Testing is now online along with some example programs.
Sep 18 Part 2 Project Part 2 is now online.  This project-part has two subparts: Part 2A (due Sep 27) and Part 2B (due Oct 18).  Some of the files that we provide for Part2B are not yet online, but they should appear soon.
Sep 11 Lecture Lecture 03 - More Parsing is now online along with some example programs.
Sep 6 Office Hours Office hours are now posted (follow the link above).  Office hours start immediately (but there aren't any scheduled until Monday).
Sep 6 Part 1 The due date for Part 1 is Friday, Sep 14, at 11:59pm.
Sep 6 Newsgroup The newsgroup for CS 212 is cornell.class.cs212.  Instructions for using newsgroups are available at  For a course-related newsgroup like ours, posting to the newsgroup requires authentication (i.e., your Cornell NetID and password are needed).
Sep 5 Lecture Lecture 02 - Lexical Analysis and Parsing is now online.
Sep 3 Part 1 Project Part 1 has been posted to the Assignments page.  Its due date has not yet been determined, but it will be Sep 14 or later.
Sep 3 Sections Sections begin meeting this week.
Aug 29 Lecture Lecture 01 - Introduction has been placed online along with Introduction to SaM Document.
Aug 24 Sections Sections will not be meeting during the first week.  The first lecture takes place on Wednesday, August 29, at 3:35 in Hollister B14.