Course Info: Fall 2009
Lectures: TR 10:10AM - 11:00AM Olin Hall 155
CS 2110 (formerly 211; cross-listed as ENGRD 2100) is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness and complexity analysis, recursion, and commonly used data structures and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures.
Please note that Professor Birman may change some of the slide sets prior to class, so if you print lecture notes out ahead of time, you may notice differences. Just the same, the class will follow the same syllabus as was used in the fall one year ago, when Professor Kozen taught the class.
To take cs2110, you must have a working knowledge of basic programming and Java prior to taking this course. Official prerequisities are CS 1110 (formerly 100J), Introduction to Computing Using Java, or CS 1130 (formerly 101J), Transition to Object-Oriented Programming. To brush up, visit the CS 1130 web site. We strongly recommend visiting the 1130 web site if you aren't completely sure you remember Java.
In CS 2110, you will learn about:
- concepts in modern programming languages, including classes, objects, inheritance, recursion, and generic programming;
- data structures, such as lists, stacks, queues, trees, hash tables, graphs, and collections;
- how to produce correct, well-structured, readable, and maintainable programs.
- the ideas underlying "types" as used in modern programming languages.
- a bit about Java's flaws and limitations. No language is perfect. You'll also learn about the powerful features and the issues associated with Eclipse, the interactive development environment (IDE) we use.
A complete listing of topics can be found on the lecture notes page.
Note: In the past, we offered an associated 1-credit project course CS 2111 (formerly 212). In fact, prior to fall 2009, it (cs2111) was required for the Computer Science major. We no longer offer cs2111, and cs2110 now satisfies the requirements for the major all by itself. This year's cs2110 project is different from the one in past years and can be thought of as if it included the material that used to be part of cs2111. We do not expect to reintroduce cs2111 -- from now on, cs2110 will continue to cover that material.
|NAME & INFO||OFFICE HOURS|
ken [at] cs.cornell.edu
|appt hours: M 10-11am
open hours: M 11am-12pm
appointments: email Bill Hogan
Teaching Assistants (TAs)
The TAs mainly teach recitation sections and assist with homework and exams. All TAs hold office hours, and we encourage you to attend them if you have difficulties.
|NAME & INFO||OFFICE HOURS|
lonnie [at] cs.cornell.edu
burgess [at] cs.cornell.edu
ld283 [at] cornell.edu
ne48 [at] cornell.edu
jah259 [at] cornell.edu
wth4 [at] cs.cornell.edu
jl658 [at] cornell.edu
tl268 [at] cornell.edu
Upson B7 Lab
jn93 [at] cs.cornell.edu
mjp64 [at] cs.cornell.edu
rkp39 [at] cornell.edu
mew66 [at] cornell.edu
gez3 [at] cornell.edu
Thursday 1:00-2:00pm Upson 328B
Course Administrator (CA)
The CA provides clerical and logistical support for the course. Please notify the CA of any errors or discrepancies in the website. Bill Hogan was playing this role, but has left to take an exciting new job in Germany; Maria Witlox will be covering temporarily until we hire a new permanent person.
|NAME & INFO||OFFICE HOURS|
|Maria Witlox (firstname.lastname@example.org)
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. See Consulting below.
The course website is http://www.cs.cornell.edu/Courses/cs2110/2009fa/. Announcements will be posted on the home page. Check every day for new announcements.
We have two newsgroups:
|cornell.class.2110||technical questions and discussions on topics relevant to the course material|
Instructions for accessing the newsgroups can be found here.
The course staff monitors the newsgroups and will respond to questions in a timely manner. This is often the most efficient method of interaction with the course staff and has the added advantage that others can benefit from your question.
If you know the answer to a question, feel free to post a reply yourself, but please avoid giving away any hints on the homework or posting any part of a solution. This will be considered a violation of Academic Integrity. Generally, rough algorithms or non-solution-specific code fragments are ok if you need them to illustrate a point.
Please reserve email for urgent or confidential matters only.
We are using the course management system CMS. Everyone who preregistered for the course is entered, but if you did not preregister, you are probably missing. Please login to http://cms.csuglab.cornell.edu/ and check whether you exist. There will be a list of courses you are registered for, and CS 2110 should be one of them. If not, please send your full name and Cornell netId to the Course Administrator so that you can be registered.
You can check your grades and submit homework in CMS. There is a help page with instructions.
- Data Structures and Abstractions with Java, 2nd edition, Frank M. Carrano, Prentice Hall, 2007. ISBN 0-13-237045-X.
See also the Prentice Hall website for additional material.
- Data Structures and Problem Solving Using Java, 3rd edition, Mark Allen Weiss, Addison Wesley, 2006. ISBN 0-321-32213-4. See also Weiss's website for additional material. A required text from previous years.
- Program development in Java: Abstraction, Specification, and Object-Oriented Design, B. Liskov and J. Guttag, Addison-Wesley, 2000. ISBN 0-201-65768-6. An excellent source of material on designing and specifying abstractions.
- Java Precisely, 2nd edition, P. Sestoft, MIT Press, 2005. To access the entire book for free, login via the Cornell Library.
- Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides, Addison Wesley, 1994. ISBN 0-201-63361-2. An extremely influential book on software engineering. According to Wikipedia, as of April 2007, the book was in its 36th printing and has sold over 500,000 copies in English and 13 other languages.
- Java in a Nutshell, 5th edition, David Flanagan, O'Reilly, 2005. ISBN 0-596-00773-6.
These titles are on reserve in the Engineering library, Carpenter Hall.
All handouts other than homework and exams will be available on the web in pdf, html, or plain text format on the lecture notes page associated with the appropriate lecture. Check often for new postings.
Please plan to attend one section... There are two ways to register:
- Engineering students should register for ENGRD 2110 and one recitation section using the ENGRD course ids.
- Non-Engineering students should register for CS 2110 and one recitation section using the CS course ids.
This is for clerical purposes only, there is no other difference.
In the table below, LEC=lecture, DIS=recitation section, OLH=Olin Hall, HLS=Hollister Hall, PHL=Phillips Hall, BRD = Bard Hall, SNE=Snee Hall, T=Tuesday, W=Wednesday.
Time and Place
|CS COURSE ID||ENGRD COURSE ID||SECTION||DAY||TIME||ROOM||INSTRUCTOR|
|5741||12329||DIS 201||T||12:20PM - 01:10PM||HLS 110||Tian|
|5743||12331||DIS 202||T||01:25PM - 02:15PM||HLS 306||Mike
|5745||12333||DIS 203||T||02:30PM - 03:20PM||HLS 306||Robert|
|5747||12335||DIS 204||W||12:20PM - 01:10PM||HLS 306||Lei
|5749||12337||DIS 205||W||01:25PM - 02:15PM||HLS 306||Josh
|5751||12339||DIS 206||W||02:30PM - 03:20PM||BRD 140||Jimmy|
|5753||12341||DIS 207||T||12:20PM - 01:10PM||SNE 1150||Lonnie|
Students are expected to attend all lectures and one recitation section per week. Section will cover some material not covered in lecture and provide an opportunity for questions on recent material, assignments, and exams. You must register for some specific section, but you may attend any section without reregistering. Just the same, once you decide which one to attend, we prefer that you stay with it.
Occasionally section instructors temporarily move their section to a computer lab. Pay attention to announcements to keep track of any room changes.
Lecture notes, corresponding readings, and examples will be made available on the lecture notes page, usually just before or just after lecture.
Consultants are available in Upson 360 most afternoons and evenings. They also hold hours in Robert Purcell Union (RPCC) on North Campus.
Consulting runs only when Cornell is in session. Consulting hours end at 6pm on a day following an assignment due date and 7pm on a prelim day. There are no consulting hours during official breaks. Consulting ends on the last shift on the last week of classes.
The last day of consulting is Thursday 12/3. TAs will continue to hold regularly scheduled office hours.
Note: Hours with a
strike are cancelled for this week.
- Occasionally, consultants need to adjust their hours, which are updated outside their office and online.
- Start your assignments early! Ask the consultants for help after you have tried your best and still cannot figure something out.
- Keep questions specific.
- Do not expect the consultants to debug your code or proofread your work. That's your job.
- Do not hang out or work in the consulting room.
- Do not store your work in the consulting room.
Want to Be a Consultant?
CS 2110 and many other CS courses are always looking for consultants. In general, CS 2110 is the launch pad for many courses. In addition, our best consultants can become undergraduate TAs. If you get at least an A- in CS 2110 and want to be a consultant, click here to find out how.
There will be five programming assignments. Click "Project Info" at the top of the page to see an overall project description. Much more detailed materials for each specific assignment will be available on CMS.
|A1||Wed 9/9 11:59pm
|A2||Tue 9/22 11:59pm|
|A3||Fri 10/9 11:59pm|
|A4||Sun 11/8 11:59pm|
|A5||Thu 12/3 11:59pm|
Due dates are subject to change.
You must follow the rules of Academic Integrity. In addition, you must follow these rules concerning partners, unless we post otherwise:
- For the first assignment, you must work by yourself. For subsequent assignments, you may work either by yourself or with one partner.
- You must work with the same partner for all parts of the same assignment. You may only change partners between assignments.
- You may not change partners or drop a partner once you have started working on an assignment.
- You share equal responsibility with your partner for completing the assignment and for maintaining academic integrity.
You must submit your work online via CMS. The staff will not accept files submitted by email. Follow the online instructions in CMS for submitting files.
You may upload as many times as you wish, and only the latest version of each file will be graded. Note however that if you upload both before and after the deadline, the one after the deadline will be taken, and you will be subject to a late penalty.
If you are working with a partner, you must coordinate with your partner well in advance of the due date and time. Unless we carry over partnerships from a previous assignment, you must register the partner relationship in CMS. One of the partners must invite the other, and the other must accept the invitation. See the CMS online help for details. Only one of the partners needs to submit the files.
Please be careful to submit the correct versions of your files. We will view the excuse "I accidentally submitted the wrong version" with extreme skepticism (we have heard it countless times).
More detailed instructions are available in the CMS online help.
We test your code by linking it against a standard testing program (built using "junit" testing). For this to work, you must respect our interface specifications; otherwise your code won't compile. We can't debug your code for you -- what you hand in must work against the interface we specify, just as would be the case if you worked at Microsoft or Google as part of a big team. If your code does not compile, you may receive a grade of zero.
Please refer to the assignment for the submission format.
Compilers and IDES
At the very least, you must submit code that compiles, even if it does not run properly. We will recompile all of your code before running it. You should test your code at the command line with the JDK on Windows in the labs to ensure that your program works. We will not debug non-working code even if the problem is minor.
Although we advocate the use of an IDE (namely, Eclipse), your code must always be able to compile and run at the command line with the required version of Java, because that is how we will be testing it. Refer to the resources page for information about the required version Java and how to run from the command line.
Style counts! Follow accepted style conventions for code elements, layout, and commenting. For advice on Java style, see:
- David Gries (alternative versions:  )
- Sun's Coding Convention
- An informed opinion (and links to others)
- Another informed opinion
Place a comment block at the top of each file that you submit. The block must give the assignment number, due date, and the name(s), NetID(s), and CUID(s) of the creator(s). For example,
/********************************** * Assignment 0: Example format * Date: 1/1/1111 * * Tad Morose: tm10, 123456 * Justin Tyme: jt33, 654321 **********************************/
Submit your assignments on time. CMS tends to lag right near the deadline because too many students wait until the last minute to submit. You will get a very short grace period after the deadline during which you may submit without penalty, but we will not tell you how long (and don't ask). We typically grade the assignments the following evening.
Late submissions will be accepted until 5pm on the day following the due date. Until submissions are closed, you may submit your assignment late at a cost of 15% of your total score. If you submit only a portion of an assignment late, your entire assignment score will still be penalized.
Extensions will be granted only in exceptional circumstances, such as documented illness.
There are three scheduled exams, two prelims and a final.
|Prelim 1||Thu, Oct 15 7:30 - 9:00 pm|
|Prelim 2||Tue, Nov 17 7:30 - 9:00 pm|
|Final Exam||Wed, Dec 16 2:00 - 4:30 pm|
If you have a conflict with another exam or other university-sponsored event:
- First try rescheduling the other event. Exams take precedence over almost everything else.
- For other exams, refer to the official schedule. If the other exam is not scheduled by the registrar, the other instructor is obligated to give you the makeup exam.
- If you have exhausted other means for rescheduling your conflict, you must contact the Course Administrator at least two weeks before the exam. You must explain the nature of the conflict and provide documentation.
- If you miss an exam because of illness, you must provide documentation.
By University policy, courses are not obligated to provide makeup exams for students taking concurrent courses, and we will not do so in this course. The Courses of Study states: "Students are expected to be present throughout each semester at all meetings of courses for which they are registered." The term "meetings" includes exams, even when scheduled in the evening.
We distribute prelims in 360 Upson (M-F, 10am-12noon and 2-4pm) 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.
- F03: exam, solutions
- S04: exam, solutions
- F04: exam & solutions
- S05: exam, solutions, grading guide
- F05: exam, solutions, grading guide
- S06: exam & solutions, grading guide
- F06: exam & solutions, errata and updates, grading guide
- S07: exam, solutions, grading guide
- F09: exam, solutions
- F03: exam, solutions
- S04: exam, solutions
- F04: exam & solutions
- S05: exam, solutions, grading guide
- F05: solutions, grading guide
- S06: exam, solutions
- F06: exam & solutions, grading guide
- S07: exam & solutions, grading guide
There will be occasional in-class quizzes. Quizzes are graded in a binary fashion:
- 0: you either made no attempt or missed the quiz.
- 1: you made an attempt at solving the problems.
Quizzes will count for a small percentage of your final grade.
All assignments and exams receive scores out of 100 points.
Your grader's comments will be posted on CMS. The grading guide will be posted as well, so you can see why points were deducted.
You may receive bonus points for exceptionally nice work. Bonus points do not count in the computation of your final score, but are accumulated separately in a single bonus score for the semester. In some cases this can affect your grade.
Your final numerical score will be a weighted combination of your scores for all required course work.
"EVAL" is the University course evaluation. We get a list of people who fill it out, but the university keeps your responses anonymous. We reserve the right to change the relative weights.
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.
|A SCORE OF||GUARANTEES AT LEAST|
- We may choose to lower the cutoffs based on the overall class performance on all course work, but we will never raise them.
- Bonus points may also influence some students' grades after all letter grades are set. In general, letter grades tend to split approximately into thirds for As, Bs, and Cs. But if everyone receives a final numerical grade of 90 or better this semester, everyone would get an A. Who knows? It might happen some day.
For all graded work, you may request a regrade if you feel we have made an error in the grading or simply to request a clarification. To request a regrade, you need to explain in writing (not in a one-on-one meeting with Professor Birman or with a TA) what you feel is wrong or what you do not understand. For each assignment and exam, there is a deadline for regrade requests, normally one week after the grading guide and solutions have been posted. The assignment/exam supervisor will process the requests after the regrade deadline has passed. Regrade comments are either posted on CMS (usually for assignments) or returned in the consulting office (usually for prelims) as explained below.
- You may submit a regrade request on any graded assignment or exam to correct mistakes or request clarifications.
- We reserve the right to regrade the entire submission. As a result, we might raise or lower your entire score. This applies to the final exam as well, which may affect your course grade.
- We will announce when regrades are completed.
- Do not email the course staff to request a regrade unless you have a unique situation that our system cannot handle.
- For assignments and prelims, you must submit your request within one week of the posting of both the grading guide and solutions, unless otherwise posted. For final exams, you have until the end of the last day of classes of the following semester.
- Final exams do not get handed back, but you may review them in Upson 360 starting the second week of classes in the following semester.
- Use CMS.
- Under CMS, view the Help screen for information on the regrade facility.
- In the regrade box, type your request clearly and succinctly. Refer to specific portions of your code and the grading guide.
- If you need to submit a file, or if CMS's text box does not suffice, write in the text box that you need to communicate with the assignment supervisor.
- Do not contact the assignment supervisor directly unless the issue is time-sensitive.
- Completed regrades can be viewed under CMS.
- Do not use CMS unless otherwise instructed.
- Retrieve your exam from the assignment distribution center in 360 Upson. Bring your student ID!
- Fill out a regrade form. The consultants will also have some copies. Write your request clearly and succinctly. Refer to specific portions of your code and the grading guide.
- Staple the form to the front of the exam and submit the request to a CS 2110 consultant during regular consulting hours in Upson 360.
- Ensure that the consultant on duty logs your request.
- Completed regrades can be retrieved from the consulting office. We will announce when regrades are complete.
- Wait until after the second week of classes.
- Bring your Cornell ID to the consulting office during posted consulting hours.
- Ask a consultant to review your final. The exam must stay in the room.
- Fill out a regrade form, which you will find in of 360 Upson. You must put the instructor's name and email address on the form. If you wish to obtain your new grade by email, please state that request on the form.
- Give the form to the consultant, who will log the request and alert the former instructor of the request.
- Regrades are usually processed within 2 weeks. You will have to return to the consulting office if you did not give permission for us to email you the grade, as stated above.
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.
The utmost level of academic integrity is expected of all students. Please read the following carefully.
- Cornell University Code of Academic Integrity
- Computer Science Department Code of Academic Integrity
Course-Specific AI Policies
- Each assignment will specify whether you may work with a partner. You may discuss homework problems with other students at a high level. That is, you may discuss general approaches to a problem, high-level algorithm design, and the general structure of code. However, you may not share written code with any other student except your own partner, nor may you possess code written by anyone else who is not your partner, either in whole or in part, regardless of format.
- When you are allowed to use additional resources such as textbook examples or supplied code, you must credit those sources.
- When applicable, the programs and other work that you submit must generate the indicated output and/or results.
- All exams are closed book.
- You may not assist nor receive assistance from anyone else during an exam.
- Do not give away any hints on the homework or post any code that might be part of a solution on the newsgroup. Rough algorithms or non-solution-specific code fragments are ok if you need them to illustrate a point.
You are responsible for understanding and abiding by these policies. It is no defense to say that you did not understand them, or that it was not done this way in another course. If you are ever in doubt about anything, ask.
If You Suspect a Violation...
...please contact a member of the course staff immediately. This is not a competition between students vs. faculty. We are all working together toward the same goal, to maximize the value of your educational experience. Violations of academic integrity only hinder this process. There is no honor in it, nor in protecting it. Your information will be held in the strictest confidence and you will not be asked to testify against your peers at an AI hearing.
Penalties for violations are assessed on a case-by-case basis. The penalty will usually be a grade penalty. It may be a point deduction, a zero on the homework or exam, a grade reduction in the course, or failure in the course, depending on severity. Repeated offenses are automatically referred to the Academic Integrity Hearing Board and may result in suspension or expulsion from Cornell.
We provide appropriate academic accommodations 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 document your eligibility.