English | MP4 | AVC 3840×21600 | AAC 44KHz 2ch | 41 Lessons (26h 32m) | 9.59 GB

Algorithms and Data Structures can be a particular rewarding area of study, because it drives at the core of computer programming: solving difficult problems.

In the course below, you’ll learn a number of important data structures and algorithms, which we’re sure will prove useful throughout your career. Just as importantly, you’ll develop a stronger ability to understand, break down and solve novel problems, whether inventing your own techniques or repurposing those which you learn here.

At the core of this course are the sequences of problems for each topic. You should aim to solve each problem, using the worked solutions and supplementary explainers as needed. For more suggestions on how to approach CS Primer, see the how-to guide.

Also included are seminars recorded with CS Primer students, which you may like to work through as well, by stopping and asking yourself each of the questions we cover together. These were typically recorded after the students completed 1-2 problems in that module, so are designed to reinforce the fundamental concepts and prepare for harder problems.

As a supplementary resources, I recommend Steven Skiena’s video lectures and book: The Algorithm Design Manual. This tends to be a little less heavy in theory, and has a more “problem solving” orientation than the typically recommended textbooks. There are plenty of other good resources available online, such as those from Tim Roughgarden. Generally I suggest just attempting the problems below, and reaching for the textbook if you feel conceptually stuck or would like further practice problems.

## Table of Contents

1 Staircase ascent

2 Convert to Roman

3 Correct binary search

4 Splitting a chocolate bar

5 What a programmer can learn from Polya

6 Finding duplicates

7 Fizzbuzz sum

8 Just iterate

9 Analysis practice

10 The enormous difference between polynomial and exponential

11 Building an intuition for common running times

12 Best worst and average case

13 The benefits and pitfalls of asymptotic analysis

14 Big O big omega and big theta

15 Parenthesis match

16 Doubly linked list

17 Basic calculator

18 Practice using stacks

19 Hazards of using linkedlists

20 What is an abstract data type

21 Motivating stacks and queues and an intuition for when to use them

22 Motivating linked lists

23 Merge sort

24 Fast exponentiation

25 Quicksort

26 Divide and conquer intuition and convex hull problem

27 Process tree

28 Word ladder

29 Jug pouring

30 Knights tour

31 Maze solver

32 Trees graphs and flipping pancakes

33 Dijkstras algorithm and A search

34 Depth-first and breadth-first search

35 Helping Michael with Word Ladder analysis

36 House robber

37 Perfect squares

38 Minimal grid path

39 Edit distance

40 Introduction to dynamic programming

41 QA problem solving technique and wrapup

Resolve the captcha to access the links!