2023 Course Materials

This is the website for a summer course on algorithms and programming for high schoolers, in Kingston, Jamaica from July 3rd to 28th, 2023. Here you will find lecture notes and lab assignments. You can follow using Google Colab or, alternatively, by downloading the notebooks and using Jupyter notebook. We are using Python 3.

For reference, morning exercises are marked by “A”, afternoon by “B”, challenge by “C”, and “Leetcode” by “L” followed by a number.

Course Content

Week 1

Day 1: Course intro, then types, variables, printing and operations and errors. Exercises A, B, C.
Day 2: Functions, lists, strings and more functions. Exercises A, B, C.
Day 3: More loops, then more functions. Exercises A, B, C.
Day 4: Loops, lists, and functions review, then tic-tac-toe intro. Exercises A, B, C.
Day 5: Nested loops and more functions, then week 1 review. Exercises A (Project), C.

Week 2

Day 1: Week 1 review, then motivation behind concepts. Exercises A, C, L1.
Day 2: More week 1 review. Exercises B, L2.
Day 3: Intro to recursion, then more recursion. Exercises A, B, C.
Day 4: Recursion continued. Exercises A, B, C.
Day 5: Mock exam, more recursion, then big picture recap. Finish and review previous exercises.

Week 3

Day 1: Logarithms and binary search (see logarithm slides) then time complexity. Exercise A.
Day 2: Time complexity wrap-up and selection sort, then merge sort and graphs intro. Exercises A, C.
Day 3: Sorting wrap-up then graphs. Exercises A, C.
Day 4: More graphs, then arithmetic and Karatsuba's algorithm. Exercises A, B.
Day 5: Week 3 exam , then Q&A with Prof. Jelani Nelson. Finish and review previous exercises.

Week 4

Day 1: Dictionaries, then graph traversals. Exercises A, B, C.
Day 2: More graph traversals, then memoization. Exercises A, B, C.
Day 3: More memoization then and dynamic programming. Exercise A.
Day 4: Final exam, then TA lightning talks, then Q&A with Prof. Daniel Coore.
Day 5: Graduation ceremony.