Syllabus
Course description
This is an Intermediate programming course that uses a high-level language, Java as its principal language. And introduces datastructures, algorithms and principles of software engineering. More specific topics include object-oriented programming (classes, objects, subclasses, types), graphical user interfaces, algorithm analysis (asymptotic complexity, big “O” notation), recursion, testing, program correctness (loop invariants), searching/sorting, data structures (lists, trees, stacks, queues, heaps, search trees, hash tables, graphs), graph algorithms.
Prerequisites
CS 1110 or CS 1112 or equivalent course on programming in a procedural language.
Learning outcomes
- Employ recursion and object-oriented programming concepts (e.g. classes, objects, inheritance, and interfaces) to solve computational problems.
- Design and implement nontrivial Java programs (roughly 1000 lines of code), starting from an English language specification.
- Build and modify event-driven graphical user interfaces (GUIs) expressed in Java.
- Analyze the asymptotic complexity of algorithms and programs to determine their running times.
- Implement basic data structures taught in the course (linked lists, binary search trees, heaps, hash tables, adjacency lists) and be able to use them in programs.
Course staff
Instructor
Sowmya Dharanipragada
Phd Candidate, Computer Science
TAs
Benjamin Carleton, PhD Student [bc534]
Jonathan Moon, MS [hm447]
Desmond Ababio, BoE ‘25 [dna35]
Dylan Kenniff, BoE ‘25 [dmk332]
Email: sjd266. Please do not email me unless for emergencies. Since we'll be meeting almost everyday, always prefer Ed discussion or see me in person after class instead.
Administration
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 the same.
Meeting times
Lectures are held every weekday from Monday to Friday from 10:00am to 11:15am in Philips Hall 219. The first lecture is on June 20th and last one is on July 28th. See Cornell’s class roster for official meeting times and locations.
Credits and grade basis
3 credits, letter or S/U grades, audits allowed.
Credits reflect scheduled contact hours and associated work, including roughly weekly programming assignments and exams.
Auditors are permitted to participate fully in the class, including submitting assignments, attending office hours, and receiving scores on assignments and exams.
Office hours
See our office hours page for times and locations. If a last-minute change must be made to the schedule, this will be announced on Ed Discussion. Most office hours take place in Rhodes 523 (tentative).
Materials and services
Textbook
There is no required textbook for this course. But if you want a reference, previous semesters have used this book: Data Structures and Abstractions with Java, Fifth Edition, by Frank M. Carrano and Timothy M. Henry.
Readings may also be assigned from the following free online references:
- JavaHyperText—online textbook originally prepared for CS 2110 by Cornell professor David Gries
- Object-Oriented Design and Data Structures—online course notes originally prepared for CS 2112 by Cornell professors Andrew Myers and Dexter Kozen
- The Java Tutorials—official tutorials from the creators of the Java language
Feel free to use any of these resources to supplement your learning as you see fit. It is recommended to lean on these resources especially when you're having difficulty with particular topics in the course.
PollEverywhere
Lectures for this class will include problems for you to solve in your seats and answer using PollEverywhere. You should keep a phone/laptop handy in order to be able to answer these questions.
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 (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 (on Wednesdays, check the schedule for more details) will require at least one group member to use a computer.
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)
- Ed Discussion (class discussion board)
- Gradescope (exam feedback)
Assessment
Basis of grade determination
Student performance will be assessed using the following elements, weighted approximately as indicated to yield an overall performance score:
Participation | 5% | |
Lecture (PollEverywhere) (lowest 4 dropped) | 2.5% | |
Discussion (Cooperative exercises on Wednesdays) (Lowest dropped) | 2% | |
Course evaluation | 0.5% | |
Bi-Weekly tests (first one is on the second week) | 13% each | |
Assignments | 31% | |
Assignment 1 | 4% | |
Assignment 2 | 5% | |
Assignment 3 | 7% | |
Assignment 4 | 7% | |
Assignment 5 | 8% | |
Final | 25% |
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:
- Performance scores above 90% will receive at least an A-
- Performance scores above 77% will receive at least a B-
- Performance scores above 60% will receive at least a C- as long as your exam scores exceed 40%
Programming assignments
The first programming assignment must be completed individually to ensure that everyone in the class can individually compile, run, and test Java code. Later assignments require 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 roughly every Friday morning (Except the first one is released on the first day of class). Given the timelines for the assignments and their difficulty. It is strongly recommended that you work with a partner from assignment 2 onward. Individual submissions for the later assignments will only be allowed with the explicit permission of the instructor.
When working with a partner, all code must be written collaboratively, ideally following “pair programming” principles—one partner proposes ideas while the other partner types, switching roles regularly.
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 6pm 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 the end of the day without any additional penalty.
Assignment extensions are reserved for exceptional circumstances (e.g. hospitalization), and requests for extensions should be accompanied by a letter from SDS or your college advisor.
Regrades
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 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.
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:
- Recognize that everyone is starting from different bases of knowledge. Be respectful and constructive when pointing out mistakes.
- Listen to one another and, especially during group work, actively encourage everyone to contribute.
- Help build a lively and active online learning environment. Ask and answer questions on our discussion board, always remembering to be respectful and constructive.
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:
- Look at or be in possession of the code of another group in this semester or a previous one with a similar assignment.
- Show or give your code to another student not in your group.
- Post code on any communication platform (including 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, 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, such tools are forbidden in this course.
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.
Accommodations
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 are registered with SDS, please request your accommodation letter for CS 2110 as early in the semester as possible. Specifically, for exam-related accommodations, you must request your accommodation letter as soon as possible.
Copyright
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.