Adam Blank 


If you are reading this before class, please don't try the first problem until then. Thanks. :)


Welcome to CSE 390p! Here's some high level information about the course:

What Is This Course?

This course is a primer on competition programming. A "programming competition" is a timed event in which you (and your two teammates) are given some programming problems, and you attempt to solve them within a time limit. The team who solves the most problems (ties are broken by timing) wins. This course will teach you how to approach programming problems and get better at problem solving. As part of this, you will learn strategies, data structures, and algorithms that are useful both for programming problems and in general.

Should I Take This Course?

This course is meant for both students who have never done a programming competition before and those who have competed before. You don't necessarily have to be interested in competing to join this course; we only require that you want to solve interesting programming problems. In fact, programming competition problems make very good practice for technical interviews; the problems tend to be similar, but more difficult than something you might get in an interview.

What Does A Day Look Like?

Each session of this course will be a combination of the following:
  • Short lectures on techniques, data structures, and/or algorithms
  • Team problem solving of competition programming problems
  • Solo problem solving of competition programming problems
Each session will be three hours, but you may leave early if you are satisfied with how many problems you have solved.

How Is This Course Graded?

Over the quarter, you will accumulate points for various tasks such as:
  • Solving problems in class
  • Solving problems at home
  • Participating in a programming competition
This course will be graded CR/NC. To get credit, you will either need to solve many easy problems or fewer difficult problems. We will clarify this grading scheme later, but the bottom line is that if you go to class and attempt problems there, you will almost certainly receive credit for the course.

Course Staff


CSE 444
(206) 616-0034

(Tentative) Schedule

Competition Programming for Fun and Profit
Brute Force
Problem Solving Practice
Data Structures
Problem Solving Practice
Dynamic Programming
Combinatorial Games Problem Solving Practice