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

Slides

Worksheet

Code

Course survey (EOD)
1L Jan 21 Lab 0: Set up

Slides

1B Jan 22 Classes & Static keyword

Slides

Worksheet

Code


Misc Slides

Cheatsheet

2A Jan 27 Encapsulation & Inheritance

Slides

Worksheet

Code

HW1: Beginner Problems
2L Jan 28 Quiz 1 and Lab 1: Silver Dollar

Slides

2B Jan 29 Interfaces & Generics; ArrayLists

Slides

Worksheet

Code

History

3A Feb 3 Algorithmic analysis

Slides

Worksheet

History

Algebra Cheat Sheet

More Examples

HW2: Flippycard
3L Feb 4 Quiz 2 and Lab 2: Git and GitHub

Slides

3B Feb 5 Singly Linked Lists

Slides

Worksheet

Code

4A Feb 10 Doubly Linked Lists

Slides

Worksheet

Code

HW3.1: Darwin pt. 1
4L Feb 11 Quiz 3 and Lab 3: Debugger

Slides

4B Feb 12 Stacks & Queues

Slides

Worksheet

Code

History

5A Feb 17 Iterators & Comparators

Slides

Worksheet

Code

HW3.2: Darwin pt. 2
5L Feb 18 Quiz 4 and Checkpoint 1 review

Slides

5B Feb 19 Checkpoint 1
6A Feb 24 Selection & Insertion Sort

Slides

Worksheet

Code

HW4: Calculator
6L Feb 25 Lab 4: Junit
6B Feb 26 Mergesort

Slides

Worksheet

Code

History

7A Mar 3 Quicksort

Slides

Worksheet

Code

HW5: Wordle
7L Mar 4 Quiz 5 and Lab 5: Sorting
7B Mar 5 Binary Trees & Heaps

Slides

Worksheet

Code

8A Mar 10 Heapsort & priority queues

Slides

Worksheet

Code

HW6: On Disk Sort
8L Mar 11 Quiz 6 and Lab 6: Shell scripting
8B Mar 12 Binary search trees

Slides

Worksheet

Code

History

Mar 17 Spring Break
Mar 18 Spring Break
Mar 19 Spring Break
9A Mar 24 BTrees

Slides

Worksheet

HW7: Autocomplete
9L Mar 25 Quiz 7 and Checkpoint 2 review

Slides

9B Mar 26 Left-leaning red-black trees

Slides

Worksheet

10A Mar 31 Checkpoint 2
10L Apr 1 Lab 7: Binary search trees
10B Apr 2 Hashing part 1

Slides

Worksheet

History

11A Apr 7 Hashing part 2

Slides

Worksheet

Code

HW8: Hex-A-Pawn
11L Apr 8 Quiz 8, final project specs, and Lab 8: Coding interview practice

Slides

11B Apr 9 Graphs, BFS/DFS

Slides

Worksheet

Code

12A Apr 14 Shortest paths (Dijkstra's)

Slides

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)

Slides

Worksheet

History

13A Apr 21 Directed acyclic graphs

Slides

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

Slides

Slides (CP3 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

Prof. Jingyi Li

they/them

firstname.lastname@pomona.edu

Office Hours

Mon 1:30-3p, Weds 4-5:30p • Edmunds 111

Fun fact

I’ve never been to Chili’s.

Prof. Anthony Clark

he/him

Fun fact

I love electronics and embedded systems (and I am learning to play the violin).

Kellie Au

she/her

Mentor Hours

Tue 8-10pm

Fun fact

I learned to sing the alphabet backwards right after I learned it forwards :)

Jack Chin

he/him

Mentor Hours

Thu 4-6pm

Fun fact

I’m a semi-professional ping-pong player.

Ruben Millan Fabian

he/him

Mentor Hours

Fri 9-10:45am

Fun fact

I love watching competitive Pokémon and Smash Bros.

Andrew Lim

Mentor Hours

Sun 8-10pm

Fun fact

I’m an avid sudoku player.

Francisco Morales Puente

he/him

Mentor Hours

Mon 7-8pm

Fun fact

I have over a hundred (first) cousins.

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 PM
      Edmunds 111
    • Mentor Hours
      7:00 PM–8:00 PM
      Francisco
  • Tuesday

    • Lecture
      1:15 PM–2:30 PM
      Edmunds 101
    • Lecture
      2:45 PM–4:00 PM
      Edmunds 101
    • Mentor Hours
      8:00 PM–10:00 PM
      Kellie
  • Wednesday

    • Lab
      1:15 PM–2:30 PM
      Edmunds 229
    • Lab
      2:45 PM–4:00 PM
      Edmunds 229
    • Office Hours (Li)
      4:00 PM–5:30 PM
      Edmunds 111
  • Thursday

    • Lecture
      1:15 PM–2:30 PM
      Edmunds 101
    • Lecture
      2:45 PM–4:00 PM
      Edmunds 101
    • Mentor Hours
      4:00 PM–6:00 PM
      Jack
  • Friday

    • Mentor Hours
      9:00 AM–10:45 AM
      Ruben
  • Sunday

    • Mentor Hours
      8:00 PM–10:00 PM
      Andrew

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.