Welcome to CS 212
Course Description
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
- 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.
- Grade Option: letter
- Course Website: http://www.cs.cornell.edu/courses/cs212/
- Course Newsgroups:
Course Objectives
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
courses.
- 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 several assignments. The assignments are briefly described
below.
Lectures & Sections
- Lectures take place each Wednesday from 3:35 until 4:25 in Phillips 203.
- There are three sections:
- Monday, 12:20 - 1:10 in Olin Hall 245
- 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 & section even if not all of it is placed on-line.
Communication
The Project
- Overview
For this semester, you may choose either of two projects: (1) a compiler
that translates one computer language (Bali) into another (SaM)
or (2) a set of game-design tools and a game for the Nintendo Game Boy
Advance. For each of these projects, we plan for four homework assignments. 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 and section, we try to give tips on anticipating the next part so
that you can work ahead. Either project will introduce you to computer
architecture, assembly code, compilers, and
data structures.
The assignments for both projects are outlined below. Some of this may be
altered during the semester.
|
Compiler |
GBA |
Part 1 |
Introduction to SaM; practice with
the SaM "computer" |
Practice with C++ and the GBA; create a Pong game on the GBA using a
simplified interface |
Part 2 |
Control structures |
Given specifications, write C++ code to manipulate sprites and
background on the GBA |
Part 3 |
Recursive functions |
Design and implement a sprite manager for the GBA |
Part 4 |
Arrays and simplified classes |
Use the sprite manager to build a game (e.g., Space Invaders, Pacman) |
- Working with Partners
Unless otherwise posted, you must follow these rules:
- You may work with one or two partners for each assignment except P1.
You may work solo if you wish, but we strongly encourage you to work
with partner(s).
- You may not work with different partners for different parts of the same
assignment.
- You may not change or drop partners once you have started working on
the assignment.
- 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
date.
- 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
Regrade requests 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.
Advice on 211 vs. 212
- Take CS211 and CS212 together? You will likely benefit most from
this option, since we try to connect the current CS212 project with the
current CS211 material. Also, you will learn how to balance more than one
programming course. If you find that you cannot keep up, you can drop CS212
and try again next semester.
- Take CS212 after CS211? You will have the advantage of more
experience with programming and data structures, which means your project
might go a bit more smoothly. But the project may have less connection to
the version of CS211 you took. Also, taking CS212 later means that you are
delaying the heavier work for a time when you will taking more challenging
courses, such as CS312 and CS314.
- Take CS212 before CS211? Not allowed.
Academic Integrity
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,
listed above.
- 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.
- Penalties
- We assign penalties on a case-by-case basis.
- We may lower your grade, fail you in CS212, or request Cornell
University disciplinary action..
Course Grade
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.
- Part 1: 15%
- Part 2: 28%
- Part 3: 28%
- Part 4: 28%
- Completing the end-of-semester course evaluation: 1%