Programming, problem solving, and algorithms

CPSC 203, 2026 W1

September 10, 2026

Warning

  • This course uses slides.
    • It is familiar and easy way to learn, but often leads to poor understanding and retention.

  • Learning is a contact sport!
    • You will be surprised, confused, angry, and sad on the path to enlightenment

How Learning Works

Introductions

Teaching Staff

  • Instructor: Ian Mitchell (he / him)
  • TA: Markus Chu
    • Office Hours: TBA
  • TA: Jayden Lieu
    • Office Hours: TBA
  • TA: Timothy Solnyshkin
    • Office Hours: TBA

You!

  • Turn to your neighbor and introduce yourself 👋

  • Together, come up with one binary question that you think will divide the class about in half

  • Examples:

    • Coke or Pepsi?
    • Spaghetti or Sushi?
    • Morning person or Night owl?

Let’s Play a Game

Rules:

  • Everyone starts with their hand up

  • Each turn, a student poses a valid yes/no question

    • YES = Put your hand down
    • NO = Keep it up
  • YES people are now on vacation 🌴 (your hand stays down from now on — relax and enjoy!)

  • A question is valid if more than four and less than half the remaining people say “yes”

End of Game:

  • We stop when ten or fewer people remain in play
  • Everyone else is happily on vacation 🌴

Debrief 💡

Punchline questions:

  • What is the minimum number of questions?

  • What is the maximum number of questions?

  • Why did we stop at 10 instead of 1?

  • Why did we do this game?

The Course

Where to start?

Course Website: https://ubc-cs.github.io/cpsc203

PrairieLearn: https://us.prairielearn.com/pl/course_instance/228149

Piazza: https://piazza.com/ubc.ca/winterterm12026/cpsc203

Not Canvas: https://canvas.ubc.ca/courses/193007

About This Course

This course will teach you a bunch of different things!

  • (More) Python!
  • New data types and patterns: classes, dictionaries, tables, graphs
  • Data science: pandas, data frames, visualizations
  • Algorithms and complexity
  • Art and creativity: lots of examples!
  • Tools and Techniques(?): Terminal, marimo, PrairieLearn, unit tests, Markdown, Git,

Schedule, Syllabus and Logistics

https://ubc-cs.github.io/cpsc203

Course Components: Lecture and Take-Home

All elements are accessed through PrairieLearn.

  • Lectures: Tuesdays and Thursdays, in-class activities based on problem solving and design.
  • Labs: Mondays / Tuesdays / Thursdays, practice on lecture material.
    • Released on Sunday night, due the following Sunday night.
  • Problems of the week (POTW): One per (week)day, ~ 50 / term.
    • Released in batches of five on Sunday night, due the following Sunday night.
  • Projects: Three total, involve more substantial programming practice.
    • Released on Monday morning, due three weeks later.

Course Components 2: Invigilated

  • Examlets: Five, roughly every two weeks.
    • Schedule your own 50 minute block.
    • Available Thursday through Monday.
  • Final Exam:
    • Schedule your own 110(?) minute block.
    • Available during a five day window TBA.
    • Practice version released a week before.
  • You will physically go to an ORCA facility.
  • Scheduling is done through PrairieTest.
    • Opens Tuesday at 10:00am, two weeks before the assessment.
  • Practice versions released through PrairieLearn a week before.

Semester overview

Handcraft Billboard Hot 100 The Overstory and Pointillism Artificial Music Composition Road Trip Planning Spiderman’s Social Network

Design

Objects

Iteration

Web Scraping

Data Frames

MatPlotLib

Voronoi Diagrams

Efficiency

Markov Chains

Random Numbers

Graphs

Traveling Salesperson

Intractable Problems

Natural Language

This course consists of a sequence of six explorations, assembled to provide a tour through data structure applications and algorithmic design. Built around topics from arts, sciences, and technology, the explorations are thought provoking and engaging. You will emerge from the course with increased proficiency in Python programming, and with a broad spectrum of tools for algorithmic problem solving.

How to Succeed in CPSC 203

On the use of computers in class

Laptop use is encouraged in CPSC 203 lectures and labs 

However, there is a restriction:

  • You may only use your laptop (or other screens, such as phones) for CPSC 203 material.
    • Using screens for other purposes has been shown to reduce your learning and lower your grades.
    • Using screens for other purposes has also been shown to reduce the grades of those around you.
  • If you have something urgent to do, just leave the classroom!

How to Study

  • This is learn by doing material!
    • Passively watching videos / live coding and reading our solutions will not be enough.
    • You must solve the problems yourself and write out their solutions.
  • There are many opportunities for you to practice:
    • In lecture, labs, POTWs, practice examlets, projects, …

From a Former CPSC 110 Student (Applies to CPSC 203 too)

It’s funny how repetition in actually doing the work leads to it all of a sudden making sense to me. I can’t explain it. I don’t have a sense of growing understanding. I have confusion, repetition, and suddenly a sense of understanding. It’s not coming through watching or reading, though. It comes from replicating what I’ve watched several times. This has happened repeatedly for me in this class. I start the week with a sense of accomplishment, well being, peace of mind, and confidence from the victory over last week’s homework. I am then submerged in doubt, confusion, and erm, terror. (Why not be melodramatic?) Suddenly there is a working epiphany and I have victory again.

Possible sources of negative emotions

  • Feeling confused about a topic.
  • Feeling of falling behind/not having enough time.
  • Some external event.
  • Something else.

We can usually find a solution!

  • Talk to us!

Don’t Be Afraid to Try (and Fail)!

Elegance

Elegance Example?

Scissors

A set of scissors.

A pair of scissors with a single merged handle instead of two making it impossible to open and close blades.

A variety of scissors in different colours.

Summary

Conclusions

Today we have begun to introduce some of the themes and ideas that we’ll see all term long:

  1. Counting steps: What’s the best that can happen? What’s the worst?

  2. Course schedule, syllabus and logistics.

  3. Elegance.

Get Yourself Registered

PrairieLearn: https://us.prairielearn.com/pl/course_instance/228149

Piazza: https://piazza.com/ubc.ca/winterterm12026/cpsc203