Hi there đź‘‹ and welcome to CS106B!
CS106B Programming Abstractions is the second course in our introductory programming sequence. The prerequisite CS106A establishes a solid foundation in programming methodology and problem-solving in Python. With that under your belt, CS106B will acquaint you with the C++ programming language and introduce advanced programming techniques such as recursion, algorithm analysis, data abstraction, explore classic data structures and algorithms, and give you practice applying these tools to solving complex problems.
We’re excited to share this great material with you and have a superb team of section leaders that will support you through the challenges to come. We hope you will find the time worth your investment and that you enjoy your growing mastery of the art of programming!
Teaching Team
Cynthia Bailey
Yasmine Alonso
We also have many, many wonderful undergraduate Section Leaders, who teach the weekly sections for the course, grade homework and exams, and help in the LaIR.
I) Online Course Essentials
Our course website is located here at https://cs106b.stanford.edu. Our website is your go-to for all course materials (schedule, lecture slides, assignment, section handouts, course policies, and more). Please regularly visit so that you are up-to-date with the latest announcements and course information.
We have a course page on Canvas but we only canvas to distribute videos and nothing more – all other materials are published on our course website.
The Ed Discussion forum is the place for students to to ask questions and discuss course topics with one another and the staff.
Paperless is our tool for assignment submission and grading. You use Paperless to submit assignments, schedule grading sessions and view grading feedback. Signing up for LaIR helper hours is also accessed through the Paperless portal.
II) Course Topics
Learning Goals
After you’re finished with CS106B, we hope you’ll have achieved the following learning goals:
- I am excited to use programming to solve real-world problems I encounter outside class.
- I recognize and understand common abstractions in computer science.
- I can identify programmatic concepts present in everyday technologies because I understand how computers process and organize information.
- I can break down complex problems into smaller subproblems by applying my algorithmic reasoning and recursive problem-solving skills.
- I can evaluate design tradeoffs when creating data structures and algorithms or utilizing them to implement technological solutions.
We’ll also be giving you tools to tackle the following questions (note that these don’t have single right or wrong answers!):
- What is possible with technology and code? What isn’t possible?
- How can I use programming to solve problems that I otherwise would not be able to?
- What makes for a “good” algorithm or data structure? Why?
Lecture Schedule
While the below schedule is subject to change over the course of the quarter, we will cover the following topics (in approximate order):
- C++ basics
- Abstract data structures
- Recursion
- Classes and object-oriented programming
- Memory management and implementation-level abstractions
- Linked data structures
- Advanced algorithms
Prerequisites
The prerequisite for CS106B is completion of CS106A and readiness to move on to advanced programming topics. A comparable introductory programming course or experience (including high school AP courses) is often a reasonable substitute for Stanford’s CS106A. If you are unsure if this course is the right for you, read more about course placement.
III) Course Structure
Units
If you are an undergraduate, you must enroll in CS106B for 5 units (this is by department and university policy, no exceptions). If you are a graduate student, you may enroll in CS 106B for 3 or 4 units to reduce your units for administrative reasons. Taking the course for reduced units has no change on the course workload.
Lectures and Attendance
Lectures will take place on MWF at 1:30PM-2:20PM in Hewlett 200.
All students (except CGOE remote stduents) are expected attend lectures in person and participate in active learning activities that take place in lecture, such as PollEv questions and group discussion. There is an attendance policy as follows:
- PollEv: Each lecture, there will be active learning activities including PollEv questions and group discussions. Credit for lecture “attendance” isn’t meant to capture only your physical presence in the room, it is meant to capture that you took advantage of these opportunities to maximize the efficiency/effectiveness of learning during our class sessions. To answer PollEv questions, go to https://pollev.com/cs106b during class while you are in the room. The PollEv questions are for learning, which often that means learning things “the hard way” by getting them wrong. So we won’t take off points if you’re wrong, as long as it appears you are present and sincerely engaged in class.
- Make-Up Quizzes: If you miss class(es), whether on a few occasions (e.g. day or two of illness) or on a regular basis (e.g., conflict with Varsity athletics practice), you will need to watch the lecture video after class and complete a brief quiz to show that you learned key topics from that lecture. These quiz questions are graded for correctness, since they are a checkpoint on learning. Lecture quizzes are on https://gradescope.com/, and are due 48 hours after the start of the missed lecture. Lecture attendance is considered “due” when the lecture actually happens (since you’re supposed to just attend! :-) ) so the 48 hours is already considered a 2-day “extension” on lecture attendance for all purposes that would normally warrant an extension. This is essential to maintain the continuity that everyone goes into the next lecture having reviewed the previous one. If you have a truly extenuating circumstance (e.g., extended hospitalization), of course reach out to the Head TA to discuss.
- Grades: You are expected to make up all the lectures you miss, so there really should be no “free” absences, but we’ll give you 1 just for that one-time “oops.” For each additional lecture you miss and do not make up, your overall grade will go down by 1% up to a maximum of 5% (see “Course Grades” below).
Sections
Students will be assigned to a small group discussion section that meets weekly for 50 minutes. The section will be facilitated by your assigned section leader. Read more about section.
Assignments
There will be regular assignments, about one per week. An assignment may include written problems, hands-on exercises with the tools, coding tasks and/or a larger complete program. Read more about assignments.
Assignments are due at 11:59pm Pacific Time on the day of the deadline.
Assessments
We plan for a mid-quarter exam and a final exam. The mid-quarter exam will serve as a check-in to help you assess your understanding of fundamental topics covered in the first half of the course.
This course is participating in the proctoring pilot overseen by the Academic Integrity Working Group (AIWG). The purpose of this pilot is to determine the efficacy of proctoring and develop effective practices for proctoring in-person exams at Stanford. To find more details on the pilot or the working group, please visit the AIWG’s webpage. Electronic resources will not be allowed during the exam.
We will have more information about these assessments and the proctoring study as the quarter progresses.
Read more about assessments.
Course Grades
Final grades for the course will be determined using the following weights:
- 35% Programming assignments
- 20% Midterm (Monday, February 9, 2026, 7-9pm)
- 35% Final Exam (Monday, March 16, 2026, 8:30am-11:30am) (note: You must pass the final exam to pass the course)
- 5% Section participation (to get an A in the course, you must not miss more than one section without an approved excuse)
- 5% Lecture attendance (1% off final grade per missed lecture after 1 “freebie,” but unlimited make-up quizzes).
Notes:
- The programming assignments are challenging, but doing them successfully is a key to doing well in CS106B. Observations over the past couple of years have shown that students who routinely use AI to help on their assignments (even though disallowed in the class) usually score in the “C” range for the course. Why? Becuase letting an AI do your assignments means that you won’t learn the concepts for the class, and then you won’t do well on the exams.
- The passing grade for the final exam will be determined when the exam is graded.
- There will not be an alternate time for the final exam. You should not be enrolled in another class with an exam at the same time as the CS106B final exam.
Incompletes
The university “I” grade (“incomplete”) is appropriate for unforeseeable circumstances of significant personal or family emergency disruption that prevent a student from finishing course requirements on schedule. To be considered for an incomplete, you must have completed all assignments up to the time of the request at a passing level. You must also have an extenuating circumstance that warrants an extension of time beyond the end of the quarter to complete the remaining work. Approval for an incomplete is at the instructors’ discretion. A key requirement is the “unforeseeable,” so Incompletes are not the appropriate mechanism for reasons such as overcommitment or quarter-long struggling performance. Retaking the course is the appropriate mechanism for those cases (consult with academic advising for details on how that works, including that the undesirable grade will be replaced by “RP” on the transcript and only the new grade will count).
IV) Course Resources
Textbook
Roberts, Eric. Programming Abstractions in C++. ISBN 978-0133454840.
You can either purchase a physical copy or use the course reader . Recommended readings for each lecture will be posted on our lecture schedule.
Software
The official CS106 programming environment is Qt Creator, which is an editor bundled with C++ compiler and libraries. The software runs on Windows, Mac, and Linux. The Qt Installation Guide has instructions for installing the tools onto your computer.
Getting help
We want to enable everyone to succeed in this course and offer different paths to help.
The instructors and head TA will hold office hours. The course helpers and section leaders staff regular LaIR helper hours. The Ed Discussion forum allows public Q&A and discussion with your peers.
Accommodations
Students who need an academic accommodation based on the impact of a disability should initiate a request with the Office of Accessible Education. Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter dated in the current quarter. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE has contact information on their web page http://oae.stanford.edu.
Important OAE Deadlines in connection with our class participation in the Academic Integrity Working Group Proctoring Study: If you have OAE accommodation requiring private exam rooms, 100% extended time, scrubbed laptops and iPads, use of own Assistive Technology device, or separated furniture accommodation needs, you will test at the Centralized Testing Center (CTC). That means you must observe some specific deadlines required by the CTC, providing your letter to the Head TA no later than:
- 10 calendar-days prior to a midterm date.
- March 2nd, 2026, at 5:00 pm for ALL Winter final exams.
Of course, we would appreciate receiving your letter immediately as part of your Assignment 0 submission. Note that you only need to provide your letter once, so the deadlines above only apply if you did not provide your letter earlier in the quarter. For urgent OAE-related accommodations needs that arise after the deadline, please consult your OAE advisor. If you are not yet registered with OAE, contact the office directly at oae-contactus@stanford.edu.
V) Syllabus Modifications
Stanford as an institution is committed to the highest quality education, and as your teaching team, our first priority is to uphold your educational experience. To that end we are committed to following the syllabus as written here, including through short or long-term disruptions, such as public health emergencies, natural disasters, or protests and demonstrations. However, there may be extenuating circumstances that necessitate some changes. Should adjustments be necessary we will communicate clearly and promptly to ensure you understand the expectations and are positioned for successful learning.
VI) Honor Code
As a student taking a Stanford course, you agree to abide by the Stanford Honor Code, and we expect you to observe our course-specific Honor Code expectations. Your programs should be your own original, independent effort and must not be based on, guided by, or jointly developed with the work of others, or with the help of Artificial Intelligence tools (e.g., ChatGPT, Github Copilot, etc.).
The CS department employs powerful automated plagiarism detection tools that compare assignment submissions with other submissions from the current and previous quarters, as well as related online resources. The tools also analyze your intermediate work, and we will run the tools on every assignment you submit.
The vast majority of you are here to learn and will do honest work for an honest grade. We celebrate and honor your commitment. Because it’s important that all cases of academic dishonesty are identified for the sake of those playing by the rules, we will refer all cases of concern to the Office of Community Standards.