Stanford Root

Schedule

Stanford Root

Schedule

CS 103

Mathematical Foundations of Computing

UNITS:3-5
GRADING:Letter or Credit/No Credit
LEVEL:Undergrad
GER:WAY-FR

What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take CS 154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS 103A. Prerequisite: CS 106B or equivalent. CS 106B may be taken concurrently with CS 103.

Syllabus for selected term:
View Autumn 2026 Syllabus

Sections

2 Terms
Lecture 1Open
ID: 1883
0 / 350 enrolled
DAYS:Monday, Wednesday, Friday
TIME:1:30 PM – 2:50 PM
LOCATION:Bishop Auditorium
INSTRUCTOR:
Szumlanski, Sean
units

CS 103: Mathematical Foundations of Computing

3-5 units · Letter or Credit/No Credit · GER: WAY-FR

What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take CS154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS103A. Prerequisite: CS106B or equivalent. CS106B may be taken concurrently with CS103.

Offered in Autumn 2026, Spring 2027 at Stanford University.

Autumn 2026 sections

  • Lecture — Monday Wednesday Friday 1:30 PM – 2:50 PM — Bishop Auditorium — Szumlanski, Sean (Undergrad)

Spring 2027 sections

  • Lecture — Monday Wednesday Friday 3:00 PM – 4:20 PM — Aiken, Alex, Bailey, Cynthia, Sotoudeh, Matthew, Avr, Mona, Gonzalez-Maldonado, Benjamin, Li, Andrew, Dalmia, Tushar, Lu, Joyce (Undergrad)

More CS courses

  • CS 80E: Dissecting The Modern Computer
  • CS 83N: Playback Theater
  • CS 88: Computer-Use Agents: Building Computers to Operate Computers
  • CS 99: Functional Programming and Theorem Proving in Lean 4
  • CS 100ACE: Problem-solving Lab for CS106A
  • CS 100BACE: Problem-solving Lab for CS106B
  • CS 103ACE: Mathematical Problem-solving Strategies
  • CS 104: Introduction to Essential Software Systems and Tools
  • CS 105: Introduction to Computers
  • CS 106A: Programming Methodology
  • CS 106AX: Programming Methodologies in JavaScript and Python (Accelerated)
  • CS 106B: Programming Abstractions

All CS courses · All departments