Skip to content

CS 10: Data Structures and Reasoning

ORC Description. Motivated by problems that arise in a variety of disciplines, this course examines concepts and develops skills in solving computational problems. Topics covered include abstraction (how to hide details), modularity (how to decompose problems), data structures (how to efficiently organize data), and algorithms (procedures for solving problems). Laboratory assignments are implemented using object-oriented programming techniques, supplemented by written exercises.

Prerequisites: COSC 1 or ENGS 20

NRO: This course may not be taken NRO.

Distributive: TLA; while there is no requirement to complete the laboratory assignments in a physical laboratory space, assignments involve the design, implementation, testing, and validation of technological artifacts in the form of computer code.

This course assumes the Python background from CS 1. If you need a refresher, projectpython.net has the CS 1 notes and is a good place to look things up.

Assignments. Much of the learning and practice in the course will be through short assignments; one assignment will be due on most days of class. Assignments will include both coding and written exercises.

Quizzes. During each x-hour, there will be a 50-minute quiz, to be completed with pen and paper and no outside assistance, including AI. Students with accommodations may complete these quizzes in the testing center. Although assignments are also graded, quizzes are the primary evaluation mechanism for the course.

Section meetings and exercises. You will meet weekly with a small section of students and a student section leader who has previously taken the course. During section, you will review material, complete a few exercises, and can ask questions about the material.

Your grade is initially determined by your quiz grade, converted from a numerical score to a letter grade (A, A-, B+, etc.), in such a way that the average grade across the class is roughly a B+.

Each quiz is scored out of 30 points. Quiz scores convert to letter grades as follows:

Quiz scoreLetter grade
29–30A*
27–28A
25–26A-
23–24B+
21–22B
18–20B-
15–17C+
12–14C
9–11C-

Assignments. Assignments are best considered as “training and learning” time. We recommend that this work be done by each individual student as we think that learning often happens only after a great deal of individual effort. However, you are nonetheless permitted to get help and feedback as needed on assignments, from section leaders, from discussions with other students, and even from A.I.

Assignments are graded on a 0-20 scale, with 10 representing solid work that capably meets the requirements. A score of 11 represents excellent work that goes beyond the requirements, and a 12 or a 13 represents truly outstanding work. Higher scores are possible but unlikely. Work that misses some requirements may receive a grade of less than 10.

Your average assignment grade can then adjust your quiz-based letter grade, by at most one step in either direction:

  • If the final average of your assignment grades is 10, your overall grade is unaffected by assignments.
  • If it is 11 or higher, your grade is increased by one step (e.g., B+ to A-).
  • If it is 9 or lower, your grade is decreased by one step.

The overall impact of assignments on your grade will never be greater than one step.

There may be other benefits to working hard on assignments, beyond this direct effect on your grade. For example, quiz questions may directly or indirectly test your knowledge of the assignments.

How assignments are graded. Assignment submissions are first reviewed by AI, which identifies common issues both for individual submissions and across the class. Your section leader then reviews the AI’s output alongside your submission, assigns a grade, and adds any additional comments needed. You should read through these comments. If you believe a grade or a comment is inaccurate, email your section leader and the professor, and we will re-review your submission.

Sections. Section meetings are ungraded, but attendance is required. Missing section will negatively impact your grade.

We recommend that students first attempt an assignment without AI or other assistance, and ask for help primarily in understanding topics from the course material — most of the value of an assignment comes from that individual effort. See the Honor Principle section below for the citation requirement.

Working with a partner is allowed when so stated on the assignment, with at most two people per problem set. If you work with a partner, you must both submit the same joint work, with both names on it, and you must work with that same person for the entire assignment.

A good way to work together: one person (the driver) types, the other (the navigator) reads along, asks questions, and catches errors — then trade off. You’ll each understand the resulting code better than if you split the work in half and worked separately.

Dartmouth’s Academic Honor Principle applies to this course, and academic misconduct policies will be strictly enforced. I will report suspected cases of cheating to the Undergraduate Judicial Affairs Officer. I will assign zero points for an assignment or an exam if I conclude that the honor principle has been violated. If the Committee on Standards finds that you violated the honor principle I will assign a failing grade for the entire course. If you have questions, ask!

Quizzes must be entirely your own work, with no outside help of any kind, including AI.

On assignments, outside help is permitted — including AI, and collaboration with other students — but must be explicitly cited and described.

You are expected to attend class in person unless you have made alternative arrangements due to illness, medical reasons, or the need to isolate due to COVID-19. For the health and safety of our class community, please: do not attend class when you are sick, nor when you have been instructed by Student Health Services to stay home. You will be able to view recordings of class in Canvas if you are unable to attend due to illness.

Students requesting disability-related accommodations and services for this course are required to register with Student Accessibility Services (SAS; Apply for Services webpage; student.accessibility.services@dartmouth.edu; 1-603-646-9900) and to request that an accommodation email be sent to me in advance of the need for an accommodation. Then, students should schedule a follow-up meeting with me to determine relevant details such as what role SAS or its Testing Center may play in accommodation implementation. This process works best for everyone when completed as early in the quarter as possible. If students have questions about whether they are eligible for accommodations or have concerns about the implementation of their accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including your undergraduate dean, Counseling and Human Development, and the Student Wellness Center.

Dartmouth has a deep commitment to support students’ religious observances and diverse faith practices. Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me as soon as possible—before the end of the second week of the term at the latest—to discuss appropriate course adjustments. To assist with calendar planning and awareness of our diverse religious and spiritual community, please refer to the Tucker Center for Spiritual and Ethical Life’s holy day calendar. The list represents major holy days which may impact campus events in general, as well as student course attendance, exams, Commencement, and participation in activities in the coming year. If you have any questions about these dates or other concerns, please contact the director of the Tucker Center.

The course notes and assignments were written by Balkcom for this course with the help of Claude (Anthropic). Where earlier material existed, they adapt it, drawing mainly on two sources:

  • The CS 10 lecture notes developed by Drysdale, Bailey-Kellogg, and Pierson, for the earlier, Java-based version of CS 10. The notes on trees, recursion, graphs, and graph search draw on them, and the point quadtree assignment adapts one of their problem sets.
  • The CS 1 notes by Balkcom et al., which can be found at projectpython.net. The CS 1 notes in turn reflect material from Dartmouth’s CS 5, developed by Cormen, Kotz, et al. The notes on Python basics, objects, the analysis of algorithms, linked lists, and graphs draw on them.

Claude drafted much of the text, the Python code, the figures, and the practice problems, at Balkcom’s direction, and Balkcom edited the drafts. Claude’s drafts reflect the standard treatment of these topics in textbooks and documentation, and the notes for each topic end with a section that names the sources of its material, describes the parts that Claude drafted, and points to other places where the same material can be found.

The Python 3 documentation is the reference for the language and its standard library, and the documentation of libraries such as Lark and NetworkX is cited where they are used.

Near its end, each page of notes identifies any material on that page drawn from these sources, and suggests further reading.