CS211 Course Information

Welcome to CS211!

IMPORTANT:  If you missed the first lecture, but plan to take CS211, then you need to get registered onto CMS in order to download the first homework, which is due Sep. 6.  To register, send Bill Hogan (email address below) an email with your NetID.  Within a few hours you should then have access to CMS.


Course Description

Name COM S 211/ENGRD 211: Object-Oriented Programming and Data Structures
Semesters Offered fall, spring, summer
Credit Hours 3
Prerequisites COM S 100 or an equivalent course in Java or C++
Grade Option Letter or S/U
Lectures Tues/Thur, 10:10-11:00 AM, Olin Hall  155
Sections Students must attend one 50 minute section per week
Course Description Intermediate programming in a high-level language and introduction to computer science. Topics include program structure and organization, modules (classes), program development, proofs of program correctness, recursion, data structures and types (lists, stacks, queues, trees), object-oriented and functional programming, and analysis of algorithms. Java is the principal programming language.
Course Website http://www.cs.cornell.edu/courses/cs211/
CMS URL http://cms3.csuglab.cornell.edu/
Course Newsgroup cornell.class.cs211

In CS211, you will learn:

A complete listing of the course topics that were covered in Spring of 2007 can be found at http://www.cs.cornell.edu/courses/cs211/2007sp/lecturenotes.html.  CS211 this semester (Fall 2007) will be similar. 

NOTE THAT THE LECTURES AND READING ASSIGNMENTS FOR THIS SEMESTER WILL BE POSTED ON CMS

Refer to posted advice for information about other introductory programming courses if you need help in deciding whether or not to take CS211.



Staff

STAFF

NAME/EMAIL

PHONE

OFFICE

OFFICE HOURS

Instructor Paul Francis
francis [at] cs.cornell.edu
255-9223

 

4108 Upson

 

appt hours Friday 2:30 - 3:30
appointments: e-mail  Bill Hogan

 

Paul Chew
chew@cs.cornell.edu
255-9217 494 Rhodes Hall Thur - 2:00 - 3:00
TAs
Liwei Chen

lc276 [at] cornell.edu

  UP 328B Thur - 3:00 - 4:00
Christopher  Estela
cde8 [at] cornell.edu
  UP 328B Mon - 12:15 - 1:15
  Hyungoo Kang

hk297 [at] cornell.edu

  UP 328B Wed 12:15-1:15
Nikos Karampatziakis
nk [at] cs.cornell.edu
  UP 328B Mon - 2:30-3:30
  Yunsong Guo

guoys [at] cs.cornell.edu

  UP 328B Fri 2:00-3:00pm
Edwin Lai

ecl37 [at] cornell.edu

  UP 328B Fri - 2:00 - 3:00
Yanwei Lin

yl335 [at] cornell.edu

  UP 328B Tues - 3:00-4:00
Caitie Mccaffrey
cem62 [at] cornell.edu
  UP 328B Fri - 12:30-1:30
George Panayotov

gvp3 [at] cornell.edu

  UP 328B Wed - 3:30 - 4:30
Andrew Salamatov
aas59 [at] cornell.edu
  UP 328B Thurs - 12:00 - 1:10
  Morgan Ulinski

meu3 [at] cornell.edu

  UP 328B Mon - 10:00-11:00
Course
Administrator
  Bill Hogan
whh [at] cs.cornell.edu
254-8948 4119 Upson Mon.–Friday 8:30-4:00

Teaching Assistants

The teaching assistants (TAs) mainly teach recitation sections and assist with homework and exams. We encourage you to attend their office hours if you have difficulties in the course. You can make an appointment with any TA by e-mail.

Consultants

In addition to TAs, there are a number of consultants. These are are undergraduates who have excelled in their coursework and are employed as graders and tutors for CS211. See the section on Consulting for locations and hours, below.


Consulting

Locations and Hours

Upson 360

Times (PM) Sun Mon Tue Wed Thu
1:25   Mori/Joel Kevin/Matt Richard Z/Joel Kevin/Matt
2:30   Mori/Adam Kevin Greg/Richard Z Kevin/Jonathan
3:35   Dan/Joel Kevin Dan/Greg Jonathan
4:40   Dan/Joel Richard Z/Adam W Dan/Adam W Jonathan/Matt
6:00 Richard M Atul/Chris Richard Z/Adam W Atul/Adam W David/Chris
7:00 Richard M Atul/Chris Marius/Mike Atul/Chris/Adam W Marius/David
8:00 Richard M Adam N/Will Marius/Mike Justin/Mori/Chris Marius/David
9:00 Richard M Adam N/Will Marius/Mike Justin/Mori Marius/David

RPCC

RPCC consulting takes place in the computer lab. Look for a sign on one of the tables that reads 211 Consulting

Times (PM) Sun Wed
2:00   Anton
3:00   Anton
4:00 Anton Anton
5:00 Anton Anton
6:00 Anton  
7:00 Adam N Mike
8:00 Adam N Mike
9:00 Adam N Mike
10:00 Adam N Mike

Consulting Policies

Want to Be a Consultant?

CS211 and many other CS courses are always looking for great consultants.  In general, CS211 is the launch pad for many courses.  In addition, our best consultants can become undergraduate TAs.  If you get at least an A- in CS211, check out this website: http://www.cs.cornell.edu/ugrad/Consulting.html.


Reading and Textbooks

Reading assignments are posted along with the lecture notes in CMS.  The sources listed here will be on reserve in the Engineering Library in Carpenter Hall.

Required Text

Optional Reading


Java Help & Software

Which Version?

We will the use the Java 5 (or 1.5) Platform, Standard Edition (Java SE), which consists of the Java Development Kit (JDK) and the Java Runtime Environment (JRE). Although the latest version is Java SE 6, we have encountered some compatibility issues.

If you are using a version of Java prior to Java 5, such as J2SE 1.4, you must upgrade. We will be using features that were introduced in Java 5, such as generics, autoboxing, and typesafe enums. These features are described in following sources:

Java Self Review Course

For those students who feel you could benefit from a Java refresher, we offer a self-paced refresher course on Java. 

This is a new course (replacing the "Java Bootcamp" of previous years), which you can take for no credit, or for a single credit (S/U).

The course is unique in that it uses online "blectures" (video web lectures) in lieu of live lectures. 

The course itself can be found at http://courses.cit.cornell.edu/cs101j/

More Ways To Catch Up

Obtain Java

The Java is already installed in CIT and ACCEL labs. However, installing it own your own machine will greatly facilitate your work. Please note that you should double check your work in a public lab, privately owned machines occasionally exhibit different behaviors to a program.

Windows and Unix

To download Java 5, click on Sun's Java site and download either JDK 5.0 Update 10 with NetBeans 5.5 or JDK 5.0 Update 10. Follow the instructions. To make Java easy to use at the command line, refer to Section 2.4 in Applications Help on our website.

Mac

As of Fall 2005, the standard Java site does not have links for Macs. However, the following information should help, assuming you are not running an "archaic" version of Mac OS. Unfortunately, you will need to upgrade your operating system to 10.4 or later.

Steps:

Development Environments

A popular way to develop Java programs, especially large ones, is with an Integrated Development Environment (IDE).  The projects in CS211 are not that large, so you may wish to use a simple text editor instead.  If you do choose to go with an IDE, you can use any that you like, though Eclipse is certainly a good choice.  Many of these are already installed in the labs.


Lecture

You should attend all lectures.  Not only might you actually learn something there, but we will occasionally give pop quizzes.  

Lecture notes (and reading assignments) are posted on CMS.

We love class participation, so please feel free to ask questions and make comments.  In fact, if you ask insightful questions or point out problems with the lecture, you are likely to get bonus points.

Registration Information

There are two ways to register:

Note that ENGRD 211 and COM S 211 are the same course (which we usually call just CS211), so do not sign up for both! The difference is purely administrative so that the College of Engineering can keep track of how many of its students use this course to fulfill a distribution requirement.


Section

You are expected to attend a recitation section once per week. Section will cover some material not covered in lecture and provide an opportunity for questions on recent material, assignments, and exams. You may attend any recitation section, but we prefer that you select one and stay with it.

Registration Information (TBD)

The current sections are as follows:

    716-952   SEC 01 T    1220-0110P BD 140
    717-402   SEC 02 T    0125-0215P OH 245
    717-467   SEC 03 T    0230-0320P BD 140
    717-628   SEC 04 W    1220-0110P HO 306
    717-676   SEC 05 W    0125-0215P OH 245
    717-697   SEC 06 W    0230-0320P OH 165
    717-804   SEC 07 T    1220-0110P OH 245
    717-907   SEC 08 W    0125-0215P HO 306

Occasionally section instructors might temporarily move their section to a computer lab. Pay attention to announcements to keep track of these potential room changes.


Assignments

There are six mandatory assignments consisting of a combination of questions and software development.  The due dates (and assignments as we produce them) are posted on CMS.  You will hand in all work via CMS.  We will not accept assignments handed in via email.

All software development must be done individually:  there are no teams.  You must write all of your own code.  You must not copy code from others.  Having said that, we nevertheless encourage you to discuss the assignments and software with each other.  Towards this end, we have set aside the following times when you can congregate in either the Clara Dickson Hall Lab (north campus), or the Willard Straight Hall lab (south campus) and are therefore likely to bump into fellow CS211 students.   If these times don't suit you, feel free to suggest additional times on the newgroup.

Monday 8:00 PM, Thursday 8:00PM, Saturday 3PM.

Late penalty is three points per day up to the point where solutions are posted (roughly one week after due date).  After that, you get zero points.

Format Requirements

File Size What Files to Include: Compilers and IDES::

Commenting/Style/Discussion

Grading

The main assignments receive scores out of 100 points. At the very least, all of your code must compile without warnings or exceptions. If it does not, we will not debug your code and you may receive a grade of zero. We try to grade each assignment within a few days after the due date. We strongly recommend that you review the grading comments, which are posted on CMS. Each time you get something wrong, we label the mistake with a code. The codes are posted on the Assignments in files with names, like "a3ggcs211sp07.txt" (Assignment 3 Grading Guide for CS211 Spring 2007).

You may receive bonus points for exceptionally fine work. If you receive any bonus points, those points are counted separately and accumulate in a single bonus score for the semester. Refer to Grading for an explanation of how bonus points can influence your grade.

If you feel we have made a mistake in grading, you may request a regrade. Refer to the Regrades section for details.


Exams

There are two prelims and a final exam. The times and material covered are posted in CMS.

Conflicts

Do you have a conflict with another exam or other university-sponsored event?

Note that we do not offer makeup final exams to students who take another course that overlaps with CS211. For example, if you take CS211 and CS312, both courses have identical meeting times, and thus, identical final exam times. The Courses of Study states the following in the section regarding Class Attendance: "Students are expected to be present throughout each semester at all meetings of courses for which they are registered." The Dean of Faculty and the Engineering Registrar informed us that courses are not obligated to provide makeup exams for students taking concurrent courses.

Retrieving

We distribute prelims in 360 Upson (M-F, 10:00am–noon and 2:00pm–4:00pm) usually the day after the prelim. Bring your student ID card. Final exams may be reviewed the following semester, but may not be taken from the room. Note that this room also holds CS211 consulting, but our consultants work in a different area than the distribution center.

Grading

Exams are graded out of 100 points. As with assignments, you may request a regrade. If we assign bonus points, these are added to your bonus point total for the semester.

Past Exams

Note that previous versions of CS211 had different organizations, but the following exams should give you plenty of practice problems.

Prelim 1: Prelim 2: Final:

Grading

Weights

Your final numerical score will be a weighted combination of your scores for all required course work, as follows:

Exams:  Nearly 50%

Assignments:  Nearly 50%

Pop quizzes:  0.5% each, with the lowest quiz score thrown out.

Class evaluation:  1% (note:  the evaluations themselves are anonymous, but we know whether you filled one out or not)

Grade Computation

We will determine your letter grade for the course using your final numerical score and predetermined grade cutoffs as given in the following table. These are numerical scores that will guarantee you at least a certain letter grade, regardless of how the rest of the class performs.  We may choose to lower the cutoffs based on the overall class performance on all course work, but we will not raise them.

A score of guarantees at least
90 A
80 B
70 C
50 better than F

Bonus Points

Bonus points may also influence some students' grades, but only after all letter grades are set.  There a number of ways you can get bonus points:  Exceptionally good assignments or exam answers.  Good participation in class, either by asking insightful questions, or by pointing out errors, inconsistencies, or ambiguities in the lectures themselves.  (Seriously, if you believe the lecturer has made an error in class, and point it out so that the rest of the class benefits, you will get bonus points!)  Helpfulness on the newsgroup (answer other students' questions).  Pointing out errors or ambiguities in the lecture materials, even outside of class.


Regrades

For all graded work, you may request a regrade if you feel we have made a mistake in the grading. All regrades must be submitted in writing via CMS, and the result of the regrade will be returned in writing via CMS.  You may additionally meet with the TA to discuss the regrade.  We will keep copies of all Exams, so you do not have to present your exam to us for a regrade.

For each assignment and prelim, there is a deadline for regrade requests (posted on CMS), normally one week after the grading guide and solutions have been posted. The assignment/exam supervisor (displayed on CMS) will process the requests after the regrade deadline has passed.  For the final exam, use the following procedure:

Final Exam:

Policies

Advice

In regrades, the burden of proof is on you. You must adequately demonstrate how and why you deserve a higher grade.

We allow minor corrections to code in some cases. For example, if fixing a small piece of code demonstrates that your code really did work a lot better than we perceived, you might earn more points. However, we will usually apply a point deduction for such fixes, so only in some cases will you receive additional points.


CS212

CS212 is a one-credit project course that the computer science major requires. Students may take CS212 either simultaneously with CS211 or afterwards, though we recommend taking them together. Refer to http://course.cs.cornell.edu/cs212/ for more information on CS212.

For students who are unsure on when to take CS212, we offer this advice:


Academic Excellence Workshop

The Academic Excellence Workshop (AEW) offers an opportunity for students to gain additional experience with course concepts in a cooperative learning environment. Research has shown that cooperative and collaborative methods promote higher grades, greater persistence, and deeper comprehension. The material presented in the workshop is at or above the level of the regular course. We do not require joining the AEW program, but do encourage students to join if they are seeking additional help, or simply an exciting and fun way to learn. The AEW carries one S/U credit based on participation and attendance. The time commitment is two hours per week in the lab—no homework will be given. This is a wonderful opportunity for students to seek extra help on course topics in a small-group setting.

Your fellow undergraduate students, who are familiar with the course material, teach the sessions with material that they prepare. The course staff provides guidance and support but do not actually teach the AEW course content or any session. A representative from the AEW program will be speaking about the program and registration procedures in lecture. We summarize the information here:

See the AEW webpage for registration information and schedule.


Communication

All class announcements will be sent as emails to your netid@cornell.edu address, and additionally posted on CMS.

The CS211 newsgroup is there for you to communicate with each other.  We encourage you to ask questions on the newsgroup, and even though the TAs monitor the newsgroup and will generally answer questions, we encourage you to answer questions on the newsgroup.  Indeed you may receive bonus points if we find that you are particularly helpful answering questions on the newsgroup.  You may ask questions about the software projects.  You may not, however, post your software or solutions on the newsgroup. 

Go to http://www.cs.cornell.edu/courses/cs211/2007sp/Handouts/usenet.html to get info on how to join and use the newsgroups.

We try to reserve e-mail for emergencies and urgent matters. Something that is urgent is generally defined as something the instructors would find urgent. If you do need to e-mail the staff, please do not use HTML or MIME! Why? See this explanation.


Academic Integrity

To detect for cheating, we run all of your code through detection software that looks for similarities.  These similarities include both identical syntax as well as identical structure and logic.  In other words, you cannot avoid detection by simply changing the names of variables, or moving around the position of functions or classes.  If the detection software flags code as being highly similar, we will then inspect it visually to determine if you've copied code.  If you've copied someone else's code, there is a good chance that we'll find out. Besides this, we sometimes just happen to notice that two students' code or assignment answers look suspiciously similar.

So if you don't want us to think you have cheated, follow these rules:

All work that you hand in must be written by you.  You must not copy each others work, either by transmitting files to each other, by cut-and-paste, or by looking at other code and typing what you see.  You must not read each other's (non-code) answers.  Unless otherwise stated in an assignment, you must not copy code from the Internet (though obviously the Internet is a good place to go for examples).   Note that if you do copy code from the Internet, there is a chance that another student will copy the same code.  In this case, you may get caught, and we will treat this as cheating.

We understand that sometimes you cannot avoid looking at someone's code.  This will especially happen if you are helping them debug a problem.  Since we want to encourage discussion among students, here is some advice to follow.  When discussing software in detail, use publicly available software as examples, not your own code.  Or, write the example on paper or a white board without copying from your own code.  If you are helping someone debug, it is best if your code is already written or mostly written.  This will help you resist the temptation of stealing ideas.  Also, try to minimize the amount of code you actually look at while debugging. 

We encourage you to discuss the high-level design of the software with each other early in the design process.  You can discuss how to best structure the code: how to structure your classes, what standard Java classes might be useful, and so on.  However, stay at a high level, and once you have a high-level structure in mind, write your own code.

Finally, be careful.  Don't leave printouts of your code lying around.  Don't leave windows showing your code on a machine unless you are present.  If you step away, even for a few minutes, someone can copy your code.  If this happens, you are responsible.  Even if the other person admits that you are innocent, you will still be penalized.

Exams

If You Suspect a Violation...

If you suspect others of cheating, but you are not directly involved, keep it to yourself.  Nobody likes a snitch.  If, however, you think that someone has copied your code, or you realize that you have accidentally made your code accessible to others, please report it.  A common mistake is that you get so involved in helping someone else that, in a moment of weakness, you make an error in judgment and show someone too much of  your code.  This is a tough situation ethically (do you squeal on a friend, or do you protect yourself?), so avoid getting stuck in this situation.

Penalties

AI is Your Responsibility!


Computer Labs

CIT Labs

Cornell Information Technologies (CIT) runs several computer labs across campus for all members of the Cornell community. The JDK 5.0 and Eclipse are installed on these machines. Refer to http://www.cit.cornell.edu/labs/ for locations and times of operation.

ACCEL Lab

You can also find the course software in the Academic Computing Center (ACCEL), located in the Engineering Library in Carpenter Hall. Any CS student may register for an account.


Illness

If you must miss any coursework due to illness or another university-excused conflict, you must contact Professor Schwartz as soon as possible and provide formal documentation. If you miss a significant amount of coursework, you are strongly encouraged to drop the course. If you miss an exam due to documented illness, you must contact Professor Schwartz as soon as possible to review the matter.


Special Needs and Disabilities

In compliance with the Cornell University policy and equal access laws, we are available to discuss appropriate academic accommodations that may be required for students with special needs and/or disabilities. Requests for academic accommodations are to be made during the first three weeks of the semester and must be accompanied by official documentation. Please register with Student Disability Services in 420 CCC to verify your eligibility.