Course description

Intermediate programming in a high-level language and introduction to software engineering. Topics include object-oriented programming (objects, classes, subtypes, encapsulation, polymorphism), program correctness (specifications, invariants, testing), algorithm analysis (asymptotic complexity, big “O” notation), recursion, data structures (lists, trees, stacks, queues, heaps, hash tables, graphs), iteration and searching/sorting, graph algorithms, and concurrent and event-driven programming (graphical user interfaces, synchronization). Java is the principal programming language.


CS 1110 or CS 1112 or an equivalent course on programming in a procedural language.

Learning outcomes

Course staff


Dr. Curran Muhlberger
Lecturer, Computer Science
Gates Hall 460
Office hours: Tuesdays, 11:45–13:00 (subject to change; see office hours)

Individual appointments: To schedule an individual appointment with an instructor, see the office hours page.

Teaching assistants

Discussion sections are led by graduate and undergraduate teaching assistants (TAs). The TA roster can be found in Canvas.


Undergraduate consultants assist groups during discussion sections and hold consulting hours for one-on-one assistance with programming assignments.


Ms. Corey Torres ( serves as the Course Coordinator for CS 2110. You should coordinate with her in the event of last-minute exam conflicts and may see messages from her related to SDS accommodations and conflicts you report on our surveys. Please do not email the instructor about exam logistics; instead, email the Course Coordinator. Note that messages received after business hours will not be replied to until the next business day.

Meeting times

Lectures are held Tuesdays and Thursdays from 10:10am to 11:25am in Statler Auditorium (STL 185). Discussion sections meet once per week for 50 minutes on either Tuesday or Wednesday (see class roster for times and locations). Class begins on January 23 and ends on May 7, totaling 28 75-minute lectures and 13 50-minute discussions (see schedule). Attendance and participation are expected in both lectures and discussions.

Lectures will start promptly on time, so please do your best to be settled before 10:10am. The instructor will try hard to end lectures on time as well, so please be respectful and refrain from packing up until class has been dismissed. Show the same courtesy to your discussion TAs and classmates.

Please attend the discussion section in which you are enrolled—many classrooms are filled to capacity, and TAs occasionally send follow-up notes to the students enrolled in their section. If you have a one-time conflict with your regular section, you are allowed to attend another section so long as it is not full (look for the green dot on the class roster). But if you develop a habit of attending another section, you should change your enrollment on StudentCenter to match. Note that instructors cannot change your section enrollment; you must go through the registrar.

We will attempt to record audio and screen captures from lectures on a best-effort basis to help students who miss lecture due to illness keep up with the material; these recordings may be viewed on Canvas.

Credits and grade basis

4 credits, letter or S/U grades. Audits are not allowed (per department policy).

Credits reflect scheduled contact hours and associated work, including roughly biweekly programming assignments.

Office hours and consulting

See our office hours page for times, locations, and appointment reservation instructions for office hours offered by instructors, TAs, and consultants. If a last-minute change must be made to the schedule, this will be announced on Ed Discussion. Consulting hours and most TA office hours take place in Rhodes 405. Be advised that “camping out” in office hours is not a strategy for success in this course; rather, when you come to office hours, you should have focused questions that you have already written down.

During instructors’ office hours, we are happy to answer high-level questions about course content for any students who stop by. This is intended to be a small-group setting, and we may poll several students for questions and answer them out of order for the benefit of the group. We can also share related anecdotes from our experience applying course concepts in research and industry. Questions about assignments will not be prioritized unless you have been referred to us by a consultant or TA.

Instructors may also be available for a limited number of one-on-one appointments, which must be reserved in advance. These are best suited for discussing accommodations, getting advice on how to study, reviewing your performance, or resolving partner conflicts (please specify your agenda in advance); they should not be used for assignment help. If you reserve an appointment, you are expected to attend.

All TAs’ office hours are open to all students (you are not restricted to the TA who teaches your discussion section). As with instructors’ open hours, TA office hours are able to accommodate small groups of students who may have related points of confusion; therefore, they are great for addressing high-level questions about course content (lectures & reading), past quizzes, lab exercises, and general approaches to assignments. If the session is quiet, the TA may be able to provide individualized assistance with debugging your assignment code, but priority will be given to assistance that can benefit everyone present.

Consulting hours are dedicated to one-on-one assistance (or two-on-one if working with an assignment partner). Consultations are first-come, first-served. Our consultants have all taken a version of CS 2110 or 2112, so they can answer questions about material as well as assignments. Because of the one-on-one setting, consulting is the best way to get individualized assistance with assignment debugging.

Students should not expect more than 10 consecutive minutes of individualized attention during a consultation, as we need to keep the queue moving. Therefore, please come prepared with specific questions, having already read the lecture notes or assignment + skeleton code, attempted a design or test plan, and identified a failing diagnostic. Remember that consultants are not there to implement assignments for you, so expect to be asked to work independently and rejoin the queue even if consulting hours are quiet.

Materials and services


The primary textbook for this course is Data Structures and Abstractions with Java, Fifth Edition, by Frank M. Carrano and Timothy M. Henry. A paper copy is recommended, as it will likely improve your retention of the material, but an ebook is also acceptable.

Readings may also be assigned from the following free online references:

We recommend that students at least skim relevant readings before lecture, then re-read them carefully afterwards.

iClicker remotes

Lectures for this class will include problems for you to solve in your seats and answer using an iClicker remote. Therefore, iClicker remotes are required for this class. You will need a physical remote, not an app on your phone (neither the WiFi in our lecture hall nor the iClicker instructor software are stable enough to use it at the scale of 600+ students).

Your remote does not need to be new—a used “original,” “plus,” or “2” model would be fine, and it can be used in future courses as well (such as CS 3410). If you signed up for the Cornell Academic Materials Program (CAMP), you should be able to pick up a remote from the bookstore for free. You will need to register your remote on our remote registration form (Canvas registration is not sufficient).

Try to have your remote ready by the start of classes, but don’t worry if it takes a few extra days to acquire one—responses will not count towards your grade until after Cornell’s “add” period ends on February 5. When using your remote in class, look for a positive confirmation that your response was received (e.g. a green light). If you see a negative confirmation (e.g. an orange light), ensure that your remote is set to the correct frequency (we will use the default, “AA”). If you see no confirmation at all, check your batteries. A “score” counting your responses will be regularly updated; check it to ensure that your remote is registered and successfully communicating.

Personal technology

Students will need regular access to a computer in order to complete this course. You will need the ability to interact with course websites, read PDF documents, extract and create ZIP archives, and run a Java development environment (preferably IntelliJ IDEA). A USB stick will come in handy should you need to use a loaner laptop or computer lab at some point during the semester (make sure you have a plan for what to do if your primary computer breaks down).

If you have a personal laptop, we recommend bringing it to discussion sections—some activities will require at least one group member to use a computer. Please try to keep your laptop well charged, as most classrooms lack accessible power outlets (and charging cables that present a trip hazard will not be allowed). A laptop is not required in lectures, however. Multitasking on phones or laptops is known to impede learning and lower grades for both you and your neighbors, so we ask that you refrain from using them and take notes on paper if possible. Students who may nevertheless be tempted to multitask on a notetaking device should sit in the back of the lecture hall (and classmates should not hesitate to ask distracting neighbors to relocate there). A section near the front will be reserved as a laptop-free zone.

Online services

The course will utilize the following online services, most of which you can access with your Cornell account once you are logged into Canvas:

  • Course website (lecture materials and assignments; accessible to public)
  • CMSX (assignment submission, grades)
  • Canvas (announcements, quizzes and surveys)
  • Ed Discussion (class discussion board)
  • Gradescope [access via Canvas when the time comes] (exam feedback)


Basis of grade determination

Student performance will be assessed using the following elements, weighted approximately as indicated to yield an overall performance score:

Lecture (iClicker)2.5%
Discussion (cooperative exercises)2%
Course evaluations0.5%
Assignment 13%
Assignment 24%
Assignment 35%
Assignment 45%
Assignment 54%
Assignment 66%
Prelim 116%
Prelim 216%

Grading scale

Letter grades are assigned in accordance with the Cornell University grading system based on the instructor’s assessment of knowledge & understanding, perception, and originality reflected in a student’s work (weighted as described above). Historically, about 35% of students receive a grade of A- or higher, and the median grade has been a B.

Grade boundaries are not known in advance, as assignments and rubrics vary between semesters. But to help you manage your expectations, we guarantee that:


Engaging in classroom activities both improves your learning and creates a more vibrant learning environment for your peers, so we want to reward you for it. Class participation will largely be assessed via iClicker responses and submitting discussion activities with a group. Students do not need perfect attendance or perfectly correct responses to maximize the participation component of their grade! (Such a policy creates perverse incentives, such as rewarding coming to class when ill, which we do not want.) Responding to polling questions in at least 3/4 of lectures and submitting at least 3/4 of discussion activities is sufficient (responding to fewer will result in a proportional deduction). This provides flexibility to miss an occasional class for illness or a conflicting obligation without worrying about the impact on your grade. Consequently, there are no make-up opportunities for participation credit (even if your iClicker remote runs out of batteries) and no “excused absences”; if you think you need to miss more than 25% of class meetings for legitimate reasons, discuss your situation with an instructor or advisor ASAP. To summarize: you should plan to attend 100% of lectures, but we will automatically accommodate situations that prevent you from participating in up to 1/4 of them.

Lectures are offered exclusively in person, and recordings are not guaranteed. But be mindful of public health—if you do not feel well, please stay home. Posted materials, our discussion board, office hours, and your classmates are all available to help you get caught up after an absence.

Discussion activities

The majority of each discussion section is dedicated to completing cooperative activities defined on an online worksheet. Your responses to these activities (typically either a scan of the worksheet or some Java files) must be submitted to CMSX in order to earn participation credit for that week’s section. Credit is given for a good-faith effort to complete as much of the worksheet as allowed by class time with a group. Responses should ideally be submitted as soon as section ends, though we allow submissions through Friday. Only one representative from each group should submit; other group members are responsible for ensuring that they are grouped in CMSX and that someone in the group submits on their behalf. If for any reason you submit a solo response, it will receive half credit. You might choose to do that if you are unable to attend section, or if you failed to group properly but are still able to submit by yourself before the Friday deadline.


Take-home quizzes are assigned weekly on Canvas. You will have two attempts to respond to each quiz (note that the questions may be slightly different), and we will take your highest score. The quizzes are open-note, but they are timed and must be completed individually. Late submissions are not accepted, as questions will be discussed in discussion sections the following day. We will drop your lowest two quiz scores automatically to accommodate unexpected circumstances.

We recommend thoroughly reviewing the week’s material before taking your first quiz attempt. Quiz questions will require that you apply these concepts in new settings, focusing on the implications of rules more than the rules themselves, so experiment with corner cases as you study. After your first attempt, review the results and try to determine why any incorrect answers are incorrect (if you can code up an example, that usually helps). This should prepare you well for your second attempt.

There will also be a quiz on this syllabus that you must complete during the first two weeks of classes. The syllabus quiz cannot be dropped, but you have an unlimited number of attempts to answer all of the questions correctly.

Programming assignments

The first two programming assignments must be completed individually to ensure that everyone in the class can individually compile, run, and test Java code. Later assignments may allow you to work with a partner of your choice. The code and supporting documents you produce for an assignment must be submitted to CMSX; we may also ask you to complete a survey about your experience with the assignment. New assignments are generally released a few days after the previous one was due, and we aim to cover all material required for an assignment before it is released; this gives you approximately 2 weeks to complete most assignments.

If working with a partner on later assignments, all code must be written collaboratively, ideally following “pair programming” principles—one partner proposes ideas while the other partner types, switching roles regularly. Partners should not attempt to divide the assignment and integrate independent work—both partners are responsible for all of the contents of their submission.

Partnerships must be declared by forming a group on CMSX before starting work (one partner sends an invitation, the other partner accepts). Forming a group gives you permission to collaborate at the source code level, and it is also a commitment to work together on a mutually-agreed schedule. Be sure to discuss work habits with your proposed partner before forming a group and discussing code.

Late work

Assignments are due at 11:59pm Eastern Time on their due date, and it is your responsibility to ensure that your submission is complete by that time, even in the presence of potential technical glitches (though we do have a short grace period to accommodate a last-minute server reboot). Assignment submissions will still be accepted up to 3 days after the due date, but each day late consumes a “slip day”. The first 4 slip days used incur no penalty; beyond that, each slip day deducts proportionally from your course timeliness score (so if every assignment is submitted 3 days late, your timeliness score will be 0). Slip days are intended to accommodate illnesses, emergencies, and unforeseeable conflicting commitments. Slip days are consumed automatically when submitting late.

Assignment extensions are reserved for exceptional circumstances (e.g. extended hospitalization), and requests for extensions must be accompanied by a letter from SDS or your college advisor. Slip days and the late penalty, not extensions, are the appropriate accommodation in most circumstances.

Assignments will not be accepted more than 3 days late in order to facilitate timely grading. Resubmissions of incomplete work (along with critical bug fixes) will be accepted with penalty during the regrade window, but at that point most of your attention should be on the next assignment to avoid falling behind.

We have tried to avoid due dates that overlap with major religious observances, but in general you are responsible for budgeting your time with awareness of all of your obligations so that you can submit work by its due date. Starting early is the best way to ensure access to office hours and consulting hours compatible with your schedule.


Most assignments will be accompanied by a “smoketest” that checks whether your code successfully compiles and runs on graders’ computers. If your code does not pass the smoketests, you are responsible for fixing it and resubmitting before we will be able to grade it. If this is not done before submitting, you will be asked to fix your code during the regrade window for a cost of 10 points.


There will be two evening prelims during the semester (March 7 and April 18) and one final exam during finals week. Exams are cumulative (as the course content builds on previous topics), but there will usually be an emphasis on more recent topics. In the weeks approaching each exam, a study guide will be made available on the exams page detailing which topics are in scope. One or more practice exams will also be made available, but remember that topics and question types may vary. Creating your own questions based on our study guide skills is recommended—students who did so in the past scored higher than those who did not.

Evening prelims are 90 minutes in duration and are held at 7:30pm. If you have a conflict with your assigned time, you must respond to the exam conflict survey on Canvas at least two weeks before the exam date and we will schedule you for a 5:30pm exam instead. If you have SDS accommodations related to exams, the SDS office will coordinate separate exam details with you.

The university registrar coordinates all evening prelims; any conflicting exam must appear on their schedule. If you have a severe illness or unavoidable approved conflict during the exam, an alternative assessment will be offered. A single makeup exam will be scheduled that will count for half of the weight of the original exam, with the remaining weight allocated to the final. If you cannot attend the scheduled makeup for an approved reason, then all of the weight will be shifted to the final. For last-minute emergencies, students must contact our course coordinator ASAP (in the case of illness, you must determine your viability of taking the exam by 4pm on the exam day). If a makeup is offered for the final exam, it will take place after the scheduled exam. If you are unable to take the final exam for reasons beyond your control, your grade will be INC and you will need to take the exam in a future semester.

Please do not make plans to leave Ithaca before the end of the finals period until the finals schedule has been announced by the registrar—buying plane tickets too early is not considered “beyond your control.”


Graded homework will be available on CMSX, and graded exams will be available on Gradescope. If you identify an error in how the rubric was applied to your assignment, you may submit a regrade request during the allowed window (typically within 1 week of an assignment or exam being returned). Errors not identified during the request window will not be corrected.

Regrade requests are submitted electronically in both CMSX and Gradescope. When submitting a request, explain precisely why the deduction in question does not apply to your solution. When evaluating a request, staff will review the entire program/question for grading accuracy and consistency, so it is possible for your score to decrease if errors in your favor are identified. If major systematic grading problems are identified during the regrade window, we will attempt to address them for all students.

For programming assignments, if you received a very low score from the autograder due to compilation/execution issues or a bug in a central piece of code, you may resubmit during the regrade window to address these problems for a cost of 10 points. An additional 15 point deduction applies if your original submission was incomplete and manual re-evaluation is required.

Community of learning and professionalism

We aim to create an inclusive learning environment where diversity and individual differences are respected and appreciated, and we expect students in this class to demonstrate diligence in understanding how others’ perspectives may be different from their own. Behaviors that contribute positively to our community of learning include:

Academic integrity

Integrity is a cornerstone of both our learning community and professional life; it is about respecting yourself and respecting others. You respect yourself by submitting work completed through your own effort; you respect others by acknowledging contributions from them when collaboration is allowed (e.g., group projects). When your individual effort is required (such as on an exam), you may neither seek nor accept help from others. Always abide by Cornell’s Code of Academic Integrity and any course-specific rules regarding its interpretation. We adopt the CS department academic integrity policy and the CS 1110 academic integrity policy in this course.

During lecture, you may only respond to polling questions using your own iClicker remote; it is a violation of academic integrity to respond on behalf of other students not in attendance.

On any programming assignment, it is a violation of academic integrity to:

  1. Look at or be in possession of the code of another group in this semester or a previous one with a similar assignment.
  2. Show or give your code to another student not in your group.
  3. Post code on any communication platform (including group chats, Q&A sites, and public posts on Ed Discussion) that other students can see.

You may discuss assignments with others at a high level, but the discussion should not extend to writing actual code, picking variable names, agreeing on specifications or comments, etc. If someone else contributes a key idea affecting your program design, you must credit them in a code comment or reflection document, clearly specifying the scope of their contribution.

If you do an assignment with a partner, you must work together as much as possible. It is a violation of academic integrity to submit as a group if both members cannot claim joint authorship of all portions of the submission.

As large language models like ChatGPT become more prevalent, pay careful attention to the section on Automated Help. By that policy, generating submitted code with such tools is forbidden in this course. These tools may be used as a study aid during your own explorations of material (being aware that their responses are not verifiable and may be misleading or false), but they may not be used in the process of completing coursework.

If we suspect that the Code of Academic Integrity is not being upheld, we may upload student submissions to 3rd-party services that detect plagiarism; enrollment in this course implies consent for your submissions to be used in this manner.

Online discussion board

We will be using Ed Discussion as an online discussion forum. You are encouraged to post any questions you might have about the course material (after searching to see if they have already been asked). Course staff will monitor the forum daily, but If you know the answer to a question, you are encouraged to post it (though please avoid giving away hints on the homework or posting any part of a solution).

By default, your posts are visible to the course staff and other students, and you should prefer this mode so that others can benefit from your question and the answer. However, you can post privately so that only the course staff can see your question, and you should do so if your post might reveal information about a solution to a homework problem. If you post privately, we reserve the right to make your post public if we think the class will benefit. You can also post anonymously if you wish not to reveal your identity.

If you can phrase a precise question about where you are confused, or if you are curious about how a concept is generalized or applied, a public Ed post is a great way to get an answer, and reading and answering others’ posts is a great way to form connections among the material. Ed is also a good place for soliciting general computer troubleshooting advice or recommendations. We would prefer that students use Ed for all course-related chat rather than external services, as it engages the whole class and is moderated by trained staff.

Ed is not ideal for individualized debugging of assignments, however, as asynchronous iteration is tedious, there is no guarantee of a timely response, and your code cannot be shared publicly. Prefer consulting hours for individualized assistance (discussing general debugging strategies, on the other hand, is an excellent discussion board topic). Ed is also not the place to request personal accommodations; in general, if a consultant could not possibly address your situation, it is probably best directed to an instructor via e-mail (after reviewing the course policies).


It is important that everyone enrolled in CS 2110 has access to and can participate in the course to the best of their abilities. Student Disability Services (SDS) manages accommodations for students with special needs in this regard. If you think you may have a disability that affects your ability to access this course, we encourage you to contact SDS for a confidential consultation.

In order to have adequate time to arrange your approved accommodation(s), you must request your SDS accommodation letter no later than the “add” deadline for the semester (February 5).

When your SDS letter is sent to us, we will reply with a summary of how we intend to implement your accommodations. For the most common accommodations approved by SDS, here is what you can expect:

Testing accommodations

This course will be participating in the Alternative Testing Program (ATP). All exams will be centrally managed and supported by the ATP Testing Coordinator in the Office of Student Disability Services and accessible in your SDS student portal. ATP support includes:

Scheduling of accommodated exams
Evening prelim exams will begin promptly at 6:30 p.m.
Notification of accommodated exam logistics
All exam logistics are managed by the ATP and will ONLY be communicated to you via email from and accessible in your SDS student portal. Please do not contact course staff with questions about SDS exam logistics, as we will not be able to answer them.
  • 10-days prior to the exam date: ATP will automatically send an email with the exam date, time, location.
  • 48-hours prior to the exam date: ATP will send a reminder email about the exam.

Coordination of make-up exams (i.e., for students who have been granted prior permission to take the exam on a day other than the scheduled date of the main exam) will be handled by the course coordinator. The ATP will not be involved in the logistics for any make-up exams. If you miss your scheduled accommodated exam, you should notify the course coordinator, not the ATP.

Extended test-taking time
In addition to the above policies regarding exams, your extension will also be applied to time limits for quizzes (as enforced by Canvas).
Computer use for exams, if needed
If you need to use a computer in order to respond to exams, you must reserve a laptop from SDS at least one week before the exam (you may not use a personal laptop). Other exam logistics will be managed by the SDS Alternative Testing Program as described above. Note that our exams do not entail long essay responses and may require drawing diagrams, so handwritten responses may be viable and preferable for some students.
Temporary accommodations (e.g. COVID)
Please forward your temporary accommodation letter to our course coordinator for our records, but there is no need to correspond directly with the instructors unless your situation is not covered by our default policies. For example, you do not need to ask us about missing class or using a slip day, but you should inform us if you are unable to take an exam (so we will know to expect you at the makeup exam). You are responsible for catching up on missed material (e.g. by watching lecture recordings or reviewing a classmate’s lecture notes).

Grades for all students are determined according to the “basis of grade determination” described above. Accommodations, whether those built into the syllabus, approved by SDS, or granted in exceptional circumstances after consultation with your advisor, are mechanisms to overcome or mitigate barriers to your completion of that work. You should not plan to use accommodations as “resources” if no unique barrier exists, nor should you request that your performance be evaluated differently due to special circumstances. We aim to ensure that everyone has the opportunity to complete sufficient coursework for an accurate assessment, but that assessment can only depend on the quality of the work you submit.

Joining the class late

Students who join the class between January 23 and February 5 (including those who transfer from CS 2112) must contact their TA ASAP for procedures on how to make up missed work. In general, the following policies apply:


All materials distributed in this course are copyrighted and may not be distributed further (unless otherwise indicated). They are intended for your sole use and may not be reposted on any public or private website or collected in an offline archive. Public availability does not imply permission to redistribute, and materials on CMSX or Canvas are not public to begin with.

You hold the copyright on original work you create for this course. But note that assignments include significant “skeleton” code authored by the course staff and licensed for use only in the context of this class. Therefore, it is generally not permissible to share code for completed assignments. If you want to showcase your new skills in a portfolio, be creative and apply them in a novel setting.