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.
In CS 212, you are expected to accomplish the following:
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 below.
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:
Unless otherwise posted, you must follow these rules:
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
date.
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.
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.
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.
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.
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.