CS 200: Applied Problem Solving

Course Overview

In this course, we will introduce tricks and algorithmic techniques students are not typically exposed to in a conventional CS/CE program. Students will learn to approach problems similar to those seen in the ICPC (International Collegiate Programming Competition) or difficult interview questions and learn to implement their solutions in working code. This is a 1-credit P/F course, graded on attendance/participation. Some knowledge of conventional algorithms and data-structures is recommended.
Instructor:   Po Hao Chen (Howie), bupochen [at] bu [dot] edu
Office Hours:   Email to schedule
Instructor:   Benjamin Li, liben002 [at] bu [dot] edu
Office Hours:   Mon 7pm-8pm
Class Times:   Fri 2:30-3:20 (CAS B37)

Course website: https://www.howchenn.com/teaching/ . All materials will be posted here.

Piazza: piazza.com/bu/fall2021/cs200


While there is no strict prerequisites for this course, it is recommended that you have taken CS330 (Algorithms), CS112 (Data Structures). Otherwise, having a basic understanding of these also suffices

Course Outline

Tentative Schedule

Date Topics Reading/Reference Handouts/Slides
9/2 Introduction Syllabus, Lec0
9/9 Basic C++ Lec1
9/17 Efficiency Lec2
9/23 Basic Graph Reductions Lec3
9/30 Advanced Graph Algorithms Lec4
10/7 String Algorithm Lec5
10/14 Dynamic Programming Lec6
10/21 Binary Search Lec7
10/28 Segment Tree Lec8
11/4 Heavy-Light Decomposition Lec9
11/11 Convex Hull Tricks
11/18 Fast Fourier Transform
11/25 Thanksgiving Break
12/2 In-Class Programming Contest
12/9 Future Endeavors