Syllabus

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.

Learning outcomes

Prerequisites

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

Credits and grade basis

4 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.

Course staff

Instructor

Ayaka Yorihiro
PhD Candidate, Computer Science
Gates Hall 333

TA

Youming Deng, PhD Student [yd428]

Email: ayaka@cs.cornell.edu. Please email me only for emergencies, or to set up one-on-one meetings. If you have questions about technical content, please ask on Ed discussion, or stop by office hours.

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.

Meeting times

Lectures are held every weekday from Monday to Friday from 10:30am to 12:15pm in Philips Hall 307. Classes start on June 24th and end on August 2nd. See Cornell’s class roster for official meeting times and locations.

Weekly Schedule

Tentative schedule


Given the longer class meeting times, we will have a 5-10 minute intermission every class. The discussions are tentative; some weeks we may substitute a discussion for lecture based on need.

Attendance and Participation

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 PollEverywhere responses and submitting discussion activities with a group. For PollEverywhere, you will get full participation points simply by answering questions. 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.) I will drop 4 missing days of PollEverywhere responses, and two missing discussion activity submissions. If you expect to miss lecture due to illness for more than 4 total classes, you can request permission to drop additional days by emailing me directly. We will not accept travel as an excused missed lecture. To summarize: you should plan to attend 100% of lectures, but we will automatically accommodate situations that prevent you from participating up to 4 of them.

Class will be fully in-person, 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. Additionally, if you are feeling better but are still symptomatic, please consider wearing a mask to help your classmates.

Discussion Activities

The majority of each discussion activity 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 class ends, though we allow submissions through 6pm of the same day. 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 6pm deadline.

Note about Summer Session

This summer session offering is condensing a course normally offered across a 14-16 week semester into 6 weeks. While daily class provides the same total time across lectures, this does mean the material will move 2-3 times faster on a weekly basis than a standard semester course. This means that for the smoothest experience, students should expect to spend 2+ hours on the course outside of lectures every day.

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. TA office hours take place in Rhodes 405.

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:

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.

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:

Ed Discussion

We will use Ed discussion for asynchronous communication about course content. We will do our best to respond as soon as we can, but please allow a 24-hour window for us to get back to you. We encourage posting any questions that don't contain sensitive information on a public post for the benefit of you and your fellow classmates. Odds are that someone else in the class has the same question, and the discussion helps everyone understand concepts better.

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. We will go over how to use PollEverywhere on the first day of class.

Quizzes

Take-home optional quizzes are assigned weekly on Canvas. They are meant to give you more practice with the prior week's course content before weekly tests. We will not go over quiz questions or solutions during class. You can bring questions about quiz content to office hours anytime or Ed discussion 24 hours after the quiz is released (this is to give others time to attempt the quiz questions before seeing answers).

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 further attempts.

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

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 Tuesdays and Thursdays, check the Schedule for more details) will require at least one group member to use a computer.

Assessment

Basis of grade determination

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

Participation5%
Lecture (PollEverywhere) (lowest 4 dropped)2%
Discussion (Cooperative exercises on Tuesdays and Thursdays) (Lowest dropped)2%
Syllabus Quiz0.5%
Course evaluation0.5%
Assignments35%
Assignment 15%
Assignment 26%
Assignment 37%
Assignment 47%
Assignment 510%
5 weekly tests (10% each for your 4 highest scores)40%
Final20%

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 will be based off the floor (rounding down) of your weighted average score. Additionally, this course will not be curved, so grades will not be determined from solely the mean and standard deviation scores (i.e. you are not in competition with other students!).

Weekly Tests

We will have weekly tests to encourage an even pace of studying and to provide quick feedback to you during the faster summer session. These tests are in place of 1-2 high stakes preliminary exams. More frequent assessment means each test is lower stakes and provides you with more changes to demonstrate mastery.

To further lower the stress of timed exams, I will drop the lowest score of the 5 weekly tests, not matter what the score would be. This also builds in some slack to support students who may be ill during a test day. I suggest you do not plan on skipping any tests early in the session, since you may need the dropped score later.

Each test will be conducted in person during the first 40 minutes of class on Wednesdays (excluding the first week).

Programming assignments

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 Assignment 1, which will be released on the first day of class).

Assignment 1 must be completed individually to ensure that everyone in the class can individually compile, run, and test Java code. Later assignments allow you to work with a partner of your choice. Given the timelines for the assignments and their difficulty, I 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.

The deadline to form a CMSX partnership is 6pm on the Monday after the assignment was released. If you are working individually on an assignment, you should email the instructor before the same deadline. A 5 point penalty will be applied after the deadline.

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 (11:59pm) without any additional penalty.

Assignment extensions are reserved for exceptional circumstances (e.g. hospitalization). In such an extenuating circumstance, please email me directly at least 12 hours before the assignment is due (unless for time-sensitive emergencies).

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:

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 PollEverywhere account; 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 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.

Mental Health & Wellness

Your mental health and wellness is just as important as your physical health, and both are more important than any course. If you experience personal or academic stress or need to talk to someone who can help, please let me know - you can send me an email or drop by my office, no appointment is needed. You can also contact any of the free mental health resources on campus, some of which are listed below:

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.