2016 Course Materials

This is the website for a summer course on algorithms and programming for high schoolers, in Addis Ababa from July 18th to August 12th, 2016. Here you will find lecture notes, lab assignments, and contact information for the instructors. You can begin by downloading Anaconda. The version of Python used here is Python 2.7.

Course Content

Week 1

Day 1: Basic types, operations, and functions
Day 2: Control flow: for loops and if statements
Day 3: Review; Lab 1.5
Day 4: Lists and more for loops, and more for loops examples
Day 5: While loops, and more while loop examples

Week 2

Day 1: Functions I
Day 2: Functions II
Day 3: Function exercises
Day 4: Recursion
Day 5: Recursion exercises

Week 3

Day 1: Solving linear systems
Day 2: More linear system solving, sorting; morning lab exercises
Day 3: Algorithmic efficiency, MergeSort
Day 4: binary search, dictionaries, hashing, graphics
Day 5: graphs, queues, stacks, depth/breadth-first search; quiz

Week 4

Day 1: Memoization
Day 2: More memoization, tracing the dynamic programming table
Day 3: Memoization on graphs: Bellman-ford
Day 4: Fast integer multiplication: Karatsuba’s algorithm
Day 5: Final exam and course wrap-up