CS2110 Course Information
Contents
- Registration information
- Staff
- Communication
- Reading & Textbooks
- Lecture
- Grading
- Requesting regrades
- Academic Integrity
- Java Help & Software
- Computer Labs
- Illness
- Special Needs and Disabilities
Registration information
| Name | COM S 2110/ENGRD 2110: Computers and Programming |
|---|---|
| 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 |
| 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 programming, and analysis of algorithms. Java is the principal programming language. |
| Course Website | http://www.cs.cornell.edu/courses/cs2110/2008su |
| Course Newsgroup | cornell.class.cs2110 (note the '0' at the end) |
In CS2110, you are expected to learn:
- Concepts in modern programming languages, which include classes, objects, inheritance, recursion, and generic programming.
- Data structures such as lists, stacks, queues, trees, hash tables, and collections.
- Java Foundation Classes (JFC), which are in the Java Application Programmer Interface (API).
- The ability to produce correct, well-structured, and readable code.
A complete listing of course topics can be found at Lecture Notes.
Refer to posted advice for information about other introductory programming courses if you need help in deciding whether or not to take CS211.
Staff
Instructor
| Art Munson mmunson ["at"] cs.cornell.edu 5156 Upson Office Hours:
|
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.
|
Parvati Iyer parvati ["at"] cs.cornell.edu Office hours: Tuesday and Thursday 4-6pm in Upson B7 | Ainur Yessenalina ainur ["at"] cs.cornell.edu Office Hours: Monday and Wednesday 4-6pm in Upson 328 |
Consultants
In addition to TAs, there are two consultants. These are undergraduates who have excelled in their coursework and are employed as graders and tutors for CS211.
| Anton Litvinenko al372 ["at"] cornell.edu 360 Upson Office Hours: Wednesday 2:30-5pm and Thursday 9:30-11pm in Upson B7 | Marcus Meng fm94 ["at"] cornell.edu 360 Upson Office Hours: Sunday and Monday 7-9pm in Upson B7 |
Consultants have the following policies:
- Occasionally, consultants need to adjust their hours, which are updated outside their office and on-line.
- Start your assignments early! Ask the consultants for help after you have tried your best and still cannot figure something out.
- Ask specific questions! The consultants may ask you to leave if you are doing something else until a question occurs to you.
- 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.
Communication
The course staff will use a variety of means to communicate with students outside of lectures. To ensure that you receive these communications, you have the following responsibilities:
- Attend all classes, where we will often make announcements.
- Monitor the website every day for new announcements.
- Monitor the newsgroup. If you have trouble, refer to the USENET Information document for help on accessing the newsgroup.
- Read your e-mail regularly.
To reach a staff member, the best time is office hours. Please post general questions to the newsgroup so that others can benefit from your question. Someone will respond within one working day. Note that posts in USENET are subject to the rules of academic integrity, so you should not post solutions. Generally, rough algorithms or non-solution-specific code fragments are ok if you need them to illustrate a point.
Reading and Textbooks
Reading assignments are posted along with the lecture notes and examples on the Lecture Notes page. The sources listed here will be on reserve in the Engineering Library in Carpenter Hall.
Required Text
- Data Structures and Problem Solving Using Java (3/E), by Mark Allen Weiss, Addison Wesley, ISBN: 0-321-32213-4, 2006. See also Weiss's website for additional material. This was NOT the text used last semester (spring 2008), but it was used for several semesters before that.
Optional Reading
- Data Structures and Abstractions with Java, 2nd edition by Frank M. Carrano, Prentice Hall, ISBN: ISBN 0-13-237045-X, 2007. This was the (almost) required text last semester (spring 2008).
- Program development in Java: Abstraction, Specification, and Object-Oriented Design, B. Liskov and J. Guttag, Addison-Wesley, ISBN: 0201657686, 2000. This is an excellent source of material on designing and specifying abstractions.
- Java Precisely, P. Sestoft, 2nd Ed., The MIT Press, 2005. To access the entire book for free, log in via the Cornell Library. book for free (select Books24x7.com).
- Java in a Nutshell (5th ed), Flanagan, O'Reilly, 2005.
- More free books via Cornell's E-books.
- Code Complete: A Practical Handbook of Software Construction by Steve McConnell, 2nd Ed., 2004.
There is a wealth of information in this book on designing and writing software. If you want to become a better programmer, this is a tremendous resource. Cornell library has this book as a networked resource, so you can read the book online through the library. Chapters of particular relevance for CS211 students:- Ch 5.2, 5.3, 5.5 (program design and considerations)
- Ch 6, esp 6.3 (class design)
- Ch 7 (writing good methods)
- Ch 8 (when and why to validate inputs; end of chapter less relevant for your coursework)
- Ch 9 (pseudocode approach to programming)
Lecture
You are expected to attend all lectures.
Registration Information
There are two ways to register:
- ENGRD 2110: All engineering students usually sign up for ENGRD 2110 regardless of their major. However, Engineering advising tells us that they no longer care if engineering students sign up for CS 2110.
- COM S 2110: All other students should sign up for CS 2110.
Note that ENGRD 2110 and CS 2110 are the same course (which we usually call just CS2110), 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.
Conduct
We expect the following conduct of all students:
- Arrive on time.
- Please avoid walking in front of or behind the instructor.
- Turn off cell phones, beepers, and pagers.
- You may use a portable computer, such as a laptop or PDA, as long as you turn the volume off.
- Do not read the newspaper during lecture.
- Raise your hand to ask a question. If the instructor does not see you, call out politely.
- Do not rustle papers or snap binders at the end of class while the instructor is still talking. Wait until the class is dismissed.
We prefer class participation, so please feel free to raise your hand to contribute to the class discussion.
Lecture Notes
We put most of our files for lecture notes, corresponding readings, and examples at the Lecture Notes link, usually just before or after lecture. Not all material covered in lecture will necessarily be online, so please do not email us about it. On the other hand, sometimes the lecture notes will contain extra material for you to review outside of class, and you are responsible for this material.
Grading
Course grades will be computed based on your performance on homework assignments, exams, and quizzes. Assignments are worth 50% of the grade, the preliminary exam is worth 15%, the final is worth 25%, and quizzes are worth 10%. We reserve the right to change these 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 |
|---|---|
| 90 | A |
| 80 | B |
| 70 | C |
| 50 | better than F |
Note the following:
- We may choose to lower the cutoffs based on the overall class performance on all course work, but we will never raise them, which would be unfair to you.
- 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 at least an A. Who knows? It might happen some day.
Assignments
There will be five mandatory homework assignments for the
semester. Assignments will be posted on this website. Most
assignments will consist of a written part and a Java programming
part. Assignments must be submitted on-line through the Course
Management System (CMS). Please see the assignment submission requirements for instructions on
using CMS.
Late policy
You may submit your assignment up to 24 hours late with a 20%
penalty off your total score. If you submit only a portion of an
assignment late (i.e. one of the problems), your entire assignment
score will still be penalized. Make sure to upload submissions to CMS
well before the deadline. Waiting until the last minute is risky
because CMS tends to lag near the deadline (as many people try to
access it at once).
We will deal with work submitted past the late deadline on a case-by-case basis. Extensions will be granted only in exceptional circumstances, such as Illness, and only with approval (preferably prior!) by the instructor.
Note that CMS allows us to choose a grace period when we
post an assignment. We will use Math.random() to pick
a grace period that ranges from 0 to 1 hour 59 minutes.
Grading
Assignments receive scores out of 100 points. At the very least, 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 also expect you to follow the submission format requirements, described on the assignment submission requirements page. We may give bonus points for exceptionally fine work.
If you feel we have made a mistake in grading, you may request a regrade. Refer to the Regrades section for details.
Partners
For some parts of some assignments you may be allowed to work in groups of two. You must follow the rules of Academic Integrity (AI). In addition, you must follow these rules concerning partners, unless we post otherwise:
- You must work with the same partner for all parts of the same assignment.
- You may not change partners or drop a partner once you have started working on an assignment.
- You may only "divorce" your partner(s) after you submit an assignment.
- You may change partners for a new assignment.
- You share equal responsibility with your partner for completing the assignment and for maintaining academic integrity.
Exams
You are required to take a prelim and a final exam. The exams will be given on the following dates and times:
- Prelim 1: Tuesday July 15, 10:00-11:15am (in class)
- Final exam: Tuesday August 5, 8:00-10:00am
You are expected to take the exams during the times listed above. We will only allow you to take an exam at another time if you have a conflict with another university-sponsored event that cannot be rescheduled. You must contact the instructor during the first week of the semester to discuss alternative arrangements. We will require official documentation of the conflict. If you miss an exam because of a serious matter like illness, see the section on Illness.
Exams are graded out of 100 points. As with assignments, you may request a regrade.
Exams from past semesters are available to help you study, but note that course material and organization has varied from semester to semester.
Quizzes
There will be occasional in-class quizzes, which are brief tests or exercises. They will not be announced ahead of time. We may give a quiz at any time during any regularly-scheduled class.
Quizzes will be graded on a 10 point scale. At least one point will be awarded for writing your name on the quiz. If you miss a quiz, you will get zero points. Make-up quizzes will not be given; however, we will drop your lowest quiz score.
Regrades
For all graded work, you always have an opportunity to request a regrade if you feel we have made a mistake in the grading or simply to request a clarification. To make a regrade request, you need to explain in words what you feel is wrong or what you do not understand. For each assignment and exam, there is a deadline for regrade requests, normally a few days after the grading guide and solutions have been posted.
Policies
- 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.
- We will announce when regrades are completed.
- Do not e-mail 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.
Procedure
Assignments:
- 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.
Prelims:
- 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. CS211 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 CS211 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.
Final Exam:
- Wait until the fourth 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 indicate David I. Schwartz and dis@cs.cornell.edu on the form. If you wish to obtain your new grade from DIS by e-mail, 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 e-mail you the grade, as stated above.
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.
Academic Integrity
We take academic integrity very seriously. The utmost level of academic integrity is expected of all students. Please read carefully the following information and documents.
AI is Your Responsibility!
- The rules contained herein are based on the Cornell University Code of Academic Integrity and the Department of Computer Science Code of Academic Integrity. You must read and understand those documents in their entirety, as well as the adaptations specific to CS211 that are detailed below.
- 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, ask an instructor.
Assignments
- Each assignment will specify whether you may work with a partner or partners, and if so, how many. For assignments that allow partners, only one assignment with all names is submitted.
- 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 students except your own partner, nor may you possess code written by another student who is not your partner, either in whole or in part, regardless of format.
- 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 on the Course Info page.
- 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.
- Your name must not appear on more than one submission.
Exams
- All exams are closed book, unless noted otherwise.
- You may not assist nor receive assistance from anyone else during an exam.
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
- Penalties for violations are assessed on a case-by-case basis. The penalty will usually be a grade penalty. It may be a point reduction, a zero on the homework or exam, a grade reduction in the course, or failure in the course, depending on severity. Repeated offenses will be referred to the Academic Integrity Hearing Board of the College of Engineering and may result in suspension or expulsion from Cornell.
- If you are suspected of a violation, we will send an email notification. If your online 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.
Java Software & Help
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:
- http://java.sun.com/developer/technicalArticles/releases/j2se15
- http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html
Java Bootcamp
A Java Bootcamp is available to help you review key issues of Java's syntax that are usually covered in CS100. The Bootcamp is a self-guided, self-paced tutorial. Early in the semester we will hold an evening review session during which you can work through the material and ask questions of the course staff. The time and place of the review session will be announced on the first day of class. Alternatively you can download the material and work through it on your own. If you have never programmed in Java, have not programmed in a long time, or feel that your skills are a bit weak, we strongly suggest that you attend the Bootcamp.
| Place | Upson B7 |
|---|---|
| Dates | Monday 6/23 and Tuesday 6/24 |
| Time | Tues 4:00-6:00pm |
| Materials | Tutorial
Companion Document (also called "Applications") Solutions |
More Ways To Catch Up
- Review the Bootcamp notes, introductory chapters in the textbooks, and the Java reference books.
- See Sun's official Java Tutorial.
- Get the Java Precisely book, which is listed in Reading and Textbooks.
- Get the O'Reilly book Java in a Nutshell, which is listed in Reading and Textbooks.
- Refer to CS100 websites, such as CS100J Fall 2001, which has numerous examples.
- Review the Java language summaries in the course textbook.
- For students with C++ experience, see http://www.perryland.com/Java2.shtml to compare C++ with Java.
Obtaining Java
Java is already installed in CIT and ACCEL labs. However, installing it own your own machine will probably be much more convenient. Please note that you should double check your work in a public lab, as privately owned machines occasionally exhibit different behaviors for 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 2006, 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:
- Follow the instructions from Apple's website.
- Next, run the Java Preferences application found in the /Applications/Utilities/Java/J2SE 5.0 folder.
- After launching this program, you must drag J2SE 5.0 to the top of the list under Java Application Runtime Settings. The Applets menu at the top is optional--it allows you to choose which version of Java to run applets in browsers.
- Click Save to activate and retain the settings.
Development Environments
The best way to develop Java programs is with an Integrated Development Environment (IDE). We recommend Eclipse, but you may use any IDE that you like, or just a text editor if you prefer. Many of these are already installed in the labs.
- Eclipse: http://www.eclipse.org/
- DrJava: http://www.drjava.org
- JCreator: http://jcreator.com/
- CodeWarrior: http://www.metrowerks.com/
- NetBeans: http://www.netbeans.org/
- JBuilder: http://www.borland.com/jbuilder
- GNU: http://gcc.gnu.org/java
- JDeveloper: http://otn.oracle.com/software/products/jdev/index.html
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 the instructor 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 the instructor 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.