CS211 Overview

 

What is CS211 About?

CS211, or ENGRD211 is the second programming course in the Computer Science curriculum, following CS100, and an engineering distribution course required for ECE and OR&IE majors.  The primary goal of this course is to have students learn intermediate programming in a high-level language and introduce computer science. The topics range over recursion, program structure and organization, object oriented programming, analysis of algorithms, proofs of program correctness, data structures and types (lists, stacks, queues, trees, hashtables), and some graph theory. Java is the principal programming language, but this is not a course on Java.

We want our students to come out of the course knowing how to program well. But this is not the only goal. We also want them to gain exposure to the topics that are the foundation of computer science. If they become comfortable with these concepts in CS211 then they will be well equipped to pursue futher coursework offered in computer science (and related disciplines) at Cornell and elsewhere.

Reaching Us

The best way to reach the course staff is by coming to our office hours or sending us email.  We will try to respond to questions as soon as possible - hopefully within one working day. If we judge that the question might have been better directed to another staff member, the question may be forwarded there unless an explicit request is included to the contrary.

Course Staff

Name Position Email Phone Office hours
Matthew Harris Instructor mharris@cs.cornell.edu 5-3495 11:30-12:30 after his classes, Upson 5152
Alexa Sharp Instructor asharp@cs.cornell.edu 5-9834 11:30-12:30 after her classes, Upson 5157
Vincent Ng TA yung@cs.cornell.edu 4-8830 Tuesdays & Thursdays 6:30-7:30pm, Upson 309
Richard Chung Consultant rc238@cornell.edu   Mondays & Fridays 2:30-3:30, Upson 304
Navin Kumar Consultant nsk8@cornell.edu   Tuesdays & Wednesdays 2:30-3:30, Upson 304

Lectures

Monday to Friday, 10:00-11:15, Phillips 203

Note: July 4 is a holiday, and classes will not be held.

Office Hours

The course staff have regular office hours during the day and evenings.  Office hours are given in the above table.  Try to get your assignments started early so that if you have any trouble you can make it to someone's office hour in time.

Course Materials

Although the official textbook for the course is Java: An Introduction to Computer Science & Programming, Walter Savitch, Prentice Hall, 2001, we will not be relying on it much. Rather, all of the material will be given orally, on handouts, or as references to webpages to read. If it helps you to have the above text or some other book as an additional source for learning the material, we encourage you to use it.

Whereas the above text is a good Java language reference, Mark Allen Weiss' Data Structures & Problem Solving Using Java is good for the other material in the course such as data structures and algorithms.

There are also some useful textbooks on reserve in the Engineering library, such as Java in a Nutshell (3rd ed), David Flanagan, O'Reilly, 1999 (on CS100 reserves)

And it goes without saying that there are many useful online resources that will undoubtedly come in handy.

We will be using JDK 1.3 as our official compiler. You are welcome to use any compiler you wish for your assignments, so long as it also compiles with our JDK 1.3. You may find Java development environments from many vendors. The CIT computer labs that support Java use CodeWarrior. Although we suggest that you use CodeWarrior for consistency, you may use any development environment that you wish. See the CodeWarrior Resources link for help on CodeWarrior.

Course Requirements

Students are responsible for all material in the assigned readings, as well as material covered in lectures. There will be eight(ish) assignments, two preliminary exams, one final exam, and regular pop quizzes that we may or may not tell you about.  The assignments will be a mix of programming and written exercises.   Exams will cover material presented in class and will require you to do some heavy thinking on your feet.  The pop quizzes will test you on what you learned in the last day or so.   The quizzes will not count. The remaining stuff will contribute to your final grade as follows:

Assignments Due date Subject % of grade
Assignment 1 (Solutions) 1 July Recursion and Induction 7%
Assignment 2 6 July OOP and Java 7%
Assignment 3 15 July Searching and Sorting 7%
Assignment 4 17 July ADTs and Binary Trees 7%
Assignment 5 19 July Linked Lists, Stacks, Queues, Hashtables 7%
Assignment 6 26 July Algorithm Analysis 7%
Assignment 7 29 July Program Correctness 7%
Assignment 8 2 August Graphs 7%
Exams Date Time Place % of grade
Prelim I 8 July in class Phillips 203 14%
Prelim II 19 July in class Phillips 203 14%
Final Exam 6 August 8am (ouch) Phillips 203 14%

The above table is, naturally, subject to change.

No late assignments will be accepted. This is because we will generally grade the assignments the same day they are due and return them immediately.   They will be due at the beginning of lecture on the due date. The submission system will be disabled at that time, if the assignment is electronic. If there is a written portion, it should be brought to class and turned in before lecture starts.   I know everyone always says this, but really, you should try to get started on your assignments (especially the programming ones) early. We will try to tell you which portions of an assignment you are able to do as the material is covered, incrementally, to help you start early.

If for some reason (such as illness) you are unable to complete an assignment or take a test, please talk to one of the instructors as soon as possible. We will handle them on a case-by-case basis.

Joint Work

In general, it is OK to talk with other students about the assignments, but you have to be very careful about how much you collaborate. A good rule of thumb is that you may talk to eachother so long as no one writes or types anything down. Please do not hand in work done with (or by) someone else under your own name.   The course staff (conveniently) have a third eye for finding suspicious similarities in code, so please don't break the rules. The penalties for cheating at Cornell are severe, and include expulsion; see the CS Department's Code of Academic Integrity. If you are unsure about anything, please ask.

We will sometimes have assignments that allow joint work with a partner. We will tell you when this is permissable, and we will outline the rules when that time comes.

Public Lab Facilities

For public access to CodeWarrior and Java, you use CIT labs Carpenter B101, Upson B7, Dickson, or Noyes. The Green Room in ACCEL also has CodeWarrior.

Student Disabilities

If you are registered with the Office of Student Disability Services and require special accomodation (such as additional time to complete exams), please speak to one of the instructors during the first week of class so that we have time to make suitable arrangements.