CS62: Data Structures and Advanced Programming
Spring 2026 • Pomona College
Lectures
- Section 1: Tue/Thu 1:15-2:30pm • Edmunds 101
- Section 2: Tue/Thu 2:45-4:00pm • Edmunds 101
Labs
- Section 1: Wed 1:15-2:30pm • Edmunds 219
- Section 2: Wed 1:15-2:30pm • Edmunds 229
- Section 3: Wed 2:45-4:00pm • Edmunds 219
- Section 4: Wed 2:45-4:00pm • Edmunds 229
Overview
This course couples work on program design, analysis, and verification with an introduction to the study of data structures that are important in the construction of sophisticated computer programs. Students are expected to program in the object-oriented programming language Java. Students will learn to design complex and reliable software engineering systems through writing code modules that are easy to read, debug, test, verify, analyze, and modify.
Students will learn to analyze programs using big-“O” notation to understand their runtimes, as well as apply affordance analysis, to understand the technical and the ethical trade-offs of using different algorithms and data structures to solve computational problems. This course focuses on the efficiency of writing programs (design) and running programs (runtime).
This course is a prerequisite for most upper level Computer Science courses.
Prerequisites: The formal prerequisite for this course is CS54 at Pomona. We also assume that all students enrolled are comfortable writing small to medium-sized programs (around 500 lines of code with several interacting classes) in either Java or Python. The knowledge assumed is generally equivalent to CS51[A/P] as offered at Pomona. Be aware that neither CS5 nor CS60 at HMC satisfy the prerequisites for this course.
This course is divided into three rough modules (each roughly corresponding to a checkpoint):
-
Java & Basic Data Structures (Weeks 1-5) Let’s transition over from Python to our object-oriented programming (OOP) language Java. We’ll learn the basics of syntax, review classes, and introduce new topics important in OOP design such as inheritance, static versus instance variables, and interfaces. We’ll learn that data structures are abstract and theoretically sound ways for holding and processing data, and we’ll see and analyze our first basic data structures: array lists, singly linked lists, doubly linked lists, stacks, and queues.
-
Sorting & Searching (Weeks 6-11) We’ll cover canonical algorithms that help with sorting data (selection sort, insertion sort, mergesort, quicksort, heapsort) in detail. We’ll talk about data structures for keeping data quickly searchable (namely, lots of different kinds of trees: binary search trees, 2-3 trees, red-black trees…). Along with trees, dictionaries and hash tables are good data structures for solving searching problems.
-
Graphs & Software Engineering (Weeks 12-16) Graphs, as a data structure, do so much for computer scientists. We’ll learn how they’re represented, and several algorithms for traversing them (breadth first versus depth first search), and traversing them efficiently, such as calculating the shortest path between two nodes in a graph. Your final project will use human-centered design methods to solve real world problems by identifying which data structures to use and applying them. Hopefully, by the end of this course, you can feel confident in tackling Leetcode problems! (And if you want to learn even more algorithms, take CS140.)
The course website will contain links to the lecture slides (posted before lecture). We will use Gradescope and GitHub Classroom for lab/assignment submission and grading. Please come prepared to lab by fully reading the lab’s README file before the lab session.
The assignments in this class are:
- 10 labs
- 10 weekly coding homeworks, released in lab and due 11:59pm the following Tuesday
- 10 short quizzes (given at the start of lab)
- 3 checkpoints
- 1 final project (groups of 3-4)
Unlike CS51, the lab section of CS62 is not for starting your homework assignments. Labs are their own assignments that either apply theoretical concepts learned in lecture, or teach general software engineering skills, and are to be completed during the evening lab session. If you finish the lab assignment early, you are welcome to stay and get started on your homework in an environment where the course staff are available to help.
In general, students should bring their laptop and something to write with to every class for the worksheets.
Schedule
Schedule subject to change (especially after checkpoint 1 and lab ordering) due to feedback and student needs.
| Week | Date | Topic | Due (Tues 11:59pm) |
|---|---|---|---|
| 1A | Jan 20 | Intro & Java Basics Worksheet Code | Course survey (EOD) |
| 1L | Jan 21 | Lab 0: Set up | |
| 1B | Jan 22 | Classes & Static keyword Worksheet Code Cheatsheet | |
| 2A | Jan 27 | Encapsulation & Inheritance Worksheet Code | HW1: Beginner Problems |
| 2L | Jan 28 | Quiz 1 and Lab 1: Silver Dollar | |
| 2B | Jan 29 | Interfaces & Generics; ArrayLists Worksheet Code History | |
| 3A | Feb 3 | Algorithmic analysis Worksheet History Algebra Cheat Sheet More Examples | HW2: Flippycard |
| 3L | Feb 4 | Quiz 2 and Lab 2: Git and GitHub | |
| 3B | Feb 5 | Singly Linked Lists Worksheet Code | |
| 4A | Feb 10 | Doubly Linked Lists Worksheet Code | HW3.1: Darwin pt. 1 |
| 4L | Feb 11 | Quiz 3 and Lab 3: Debugger | |
| 4B | Feb 12 | Stacks & Queues Worksheet Code History | |
| 5A | Feb 17 | Iterators & Comparators Worksheet Code | HW3.2: Darwin pt. 2 |
| 5L | Feb 18 | Quiz 4 and Checkpoint 1 review | |
| 5B | Feb 19 | Checkpoint 1 | |
| 6A | Feb 24 | Selection & Insertion Sort Worksheet Code | HW4: Calculator |
| 6L | Feb 25 | Lab 4: Junit | |
| 6B | Feb 26 | Mergesort Worksheet Code History | |
| 7A | Mar 3 | Quicksort Worksheet Code | HW5: Wordle |
| 7L | Mar 4 | Quiz 5 and Lab 5: Sorting | |
| 7B | Mar 5 | Binary Trees & Heaps Worksheet Code | |
| 8A | Mar 10 | Heapsort & priority queues Worksheet Code | HW6: On Disk Sort |
| 8L | Mar 11 | Quiz 6 and Lab 6: Shell scripting | |
| 8B | Mar 12 | Binary search trees Worksheet Code History | |
| Mar 17 | Spring Break | ||
| Mar 18 | Spring Break | ||
| Mar 19 | Spring Break | ||
| 9A | Mar 24 | BTrees Worksheet | HW7: Autocomplete |
| 9L | Mar 25 | Quiz 7 and Checkpoint 2 review | |
| 9B | Mar 26 | Left-leaning red-black trees Worksheet | |
| 10A | Mar 31 | Checkpoint 2 | |
| 10L | Apr 1 | Lab 7: Binary search trees | |
| 10B | Apr 2 | Hashing part 1 Worksheet History | |
| 11A | Apr 7 | Hashing part 2 Worksheet Code | HW8: Hex-A-Pawn |
| 11L | Apr 8 | Quiz 8, final project specs, and Lab 8: Coding interview practice | |
| 11B | Apr 9 | Graphs, BFS/DFS Worksheet Code | |
| 12A | Apr 14 | Shortest paths (Dijkstra's) Worksheet Code | HW9: Text generator |
| 12L | Apr 15 | Quiz 9 and Lab 9: Rising tides (graphs) | |
| 12B | Apr 16 | Minimum Spanning Trees (Prim's, Kruskal's) Worksheet History | |
| 13A | Apr 21 | Directed acyclic graphs Worksheet | |
| 13L | Apr 22 | Quiz 10 and Lab 10 | |
| 13B | Apr 23 | TBD | Final project part 1 |
| 14A | Apr 28 | TBD | HW10: On The Road |
| 14L | Apr 29 | Checkpoint 3 review | |
| 14B | Apr 30 | Course evaluations and final project work day | |
| 15A | May 5 | Checkpoint 3 | |
| 15L | May 6 | Final project work day | Final project (seniors) |
| 15B | May 7 | Reading day (no class) | |
| 16 | May 13 | Final project |
Course Staff
More from Prof. Li: This is my fifth semester at Pomona College! I’m happy to be teaching many familiar faces from CS51P last Fall. My role in this course is to help you learn data structures (and how to learn data structures), to help facilitate learning from and teaching your peers, and to emotionally and academically support you through the material.
Outside of the classroom, I do human-computer interaction research on various art related things in the Doodle Lab. Before moving to Claremont, I lived in the Bay Area for the past decade (I have a BS in EECS from UC Berkeley and a PhD in CS from Stanford).
My preferred method of contact is the course Slack channel. Slack is great for asking and answering questions: your classmates may have the same questions as you, you may have the answers to your classmates’ questions, and I can upvote and expand on student responses. I will be posting course announcements through Slack as well. Feel free to DM me for individual requests; I will try my best during the weekdays to respond within 24 hours.
More from Prof. Clark: This is my sixth year at Pomona College! I typically teach upper-level courses so I am excited to see a lot of new faces this semester! Like Prof. Li, I am a big fan of learning from failure, so please don’t be afraid to make mistakes in this class.
Grading
- 40% checkpoints (13.33% each)
- 30% weekly homework assignments
- 20% final project
- 5% quizzes (lowest score dropped)
- 5% labs
Completing (i.e., turning in) every assignment is required to pass the course. This course may be taken for a letter grade only. There might be a slight curve at the end of the semester to bump up grades or more cleanly distribute grades. The curve will never hurt you based off of your raw points percentage.
Quizzes are bucket graded to prevent grade hyper-fixation: check plus (equivalent to a 100), check (equivalent to a 92), and check minus. You may only retake quizzes if you get a check minus. All retakes must be completed within one week of receiving your original quiz grade.
Course Policies
- Homework assignments are due by Tuesday 11:59pm on Gradescope. Homework assignments have an automatic 13 hour extension to 12:59pm Wednesday (i.e., before the first lab section). If you find yourself struggling to finish the last few parts of the assignment and too tired to focus, go to bed so you can take a fresh look Wednesday morning. If you need an additional extension due to extenuating circumstances (e.g., physical or mental health), please email or Slack the instructor explaining your circumstances before the assignment is due. Work turned in past the extension deadline without prior instructor consent will receive 20% off each 24 hours it is past due.
- Labs are strictly due before Thursday morning (i.e., Wednesday night) if you do not finish them during lab time.
- I strongly believe in mastery based grading and second chances: maybe you had a bad day when you took an exam, which shouldn’t unfairly impact your grade. As such, students may redo their checkpoints for up to 50% of their points lost back within a week of receiving their checkpoint grade. Answer keys will be released after regrades are due. Students are also able to retake quizzes by showing up to the instructor’s office hours within a week of originally taking the quiz if they receive a check minus.
- You may have 3 excused absences throughout the semester but you must inform the instructor prior to their absence. Exceptions may be made for, e.g., athletes during the season. It is your responsibility to review the posted slides, do the worksheet, and come to office/mentor hours for help to catch up on missed class work.
- Students with disabilities should contact the Student Disability Resource Center (SDRC) to request accommodations, particularly around finding SDRC proctored times for the checkpoints. I am happy to have a conversation with you to help establish the best plan.
- I expect everyone to be an active and engaged member during our class activities. I strive to create an inclusive classroom where every student feels comfortable and safe sharing their thoughts. If I believe you are not participating and learning to the best of your ability, I will send you a message (or please feel free to initiate a conversation with me) so we can brainstorm ways to reduce your barriers to participation.
- All policies are flexible. If you are facing an extenuating circumstance, I am happy to listen and help however possible.
To be blunt, CS62 is a class that is a lot of work. Assignments can be extremely challenging (but rewarding), and labs are different from homework assignments. The first few weeks of learning Java Syntax can feel too fast paced to some students. Scaling up from writing CS51 sized programs (~100 lines of code) to our larger programs (500-1000 lines) can be intimidating, but the course staff are here to help! If you need support, please come to office/mentor hours or post on Slack. I truly believe that everyone can learn—and excel in—computer science, and that every student should be accommodated to learn at their own pace.
AI Policy
Please don’t let AI tools take valuable failure opportunities away from you. Starting your assignment with an LLM will rob you of the chance to learn from your mistakes. You may use AI to help you get past things you do not understand, but you must tell us about your usage when submitting your assignments. Here are some examples of acceptable usage:
Understanding Concepts
- “Explain the difference between a breadth first search and a depth first search using an analogy.””
- “What is the intuition behind Dijkstra’s algorithm?”
Generating Practice Questions
- “Quiz me on the properties of a binary search trees.”
- “Give me a practice problem that can be solved with recursion.”
Writing and Debugging Code
- “I am getting the following exception when running my code:
IndexError: list index out of range. What does this mean?” - “Show an example of a Python program that takes two command line arguments.”
Appropriate response to a violation of the AI policy will be determined on a case-by-case basis with a meeting with the instructor.
Resources
This is no required textbook for the course. One online textbook that may be helpful is the CS61B Textbook from UC Berkeley which the course occasionally draws from. Students may also read Algorithms, 4th edition; there are copies in the CS library.
To practice solving problems in Java, students may use CodingBat.
Calendar
- 9:00 AM
- 9:30 AM
- 10:00 AM
- 10:30 AM
- 11:00 AM
- 11:30 AM
- 12:00 PM
- 12:30 PM
- 1:00 PM
- 1:30 PM
- 2:00 PM
- 2:30 PM
- 3:00 PM
- 3:30 PM
- 4:00 PM
- 4:30 PM
- 5:00 PM
- 5:30 PM
- 6:00 PM
- 6:30 PM
- 7:00 PM
- 7:30 PM
- 8:00 PM
- 8:30 PM
- 9:00 PM
- 9:30 PM
-
Monday
- Office Hours (Li)1:30 PM–3:00 PMEdmunds 111
- Mentor Hours7:00 PM–8:00 PMFrancisco
-
-
Tuesday
- Lecture1:15 PM–2:30 PMEdmunds 101
- Lecture2:45 PM–4:00 PMEdmunds 101
- Mentor Hours8:00 PM–10:00 PMKellie
-
-
Wednesday
- Lab1:15 PM–2:30 PMEdmunds 229
- Lab2:45 PM–4:00 PMEdmunds 229
- Office Hours (Li)4:00 PM–5:30 PMEdmunds 111
-
-
Thursday
- Lecture1:15 PM–2:30 PMEdmunds 101
- Lecture2:45 PM–4:00 PMEdmunds 101
- Mentor Hours4:00 PM–6:00 PMJack
-
-
Friday
- Mentor Hours9:00 AM–10:45 AMRuben
-
-
Sunday
- Mentor Hours8:00 PM–10:00 PMAndrew
-
Credits
Thank you to Alexandra Papoutsaki (and the long lineage of other Pomona faculty who worked on CS62 before me) for most of the course material. Site theme based on Just the Class, a documentation theme for Jekyll.