This is the website for a summer course on algorithms and programming for high schoolers, in Addis Ababa from July 17th to August 11th, 2023. 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 3.0.

We also have a textbook covering some of the course material here.

## Course Content

### Week 0

Training for teaching assistants, additionally featuring:

- All teaching assistants helped to prepare for the preliminary exercises and installed Ubuntu operating system on each computer in the school.

### Week 1

Day 1: Professor Kang’s Introduction, Part A: How to use Jupyter, calculation, operations, Part B: String, boolean, and types. Exercises 1a, 1a Supplement, 1b, 1b Supplement. |

Day 2: Part A: Variables, printing, comments, and conditionals, Part B: List and dictionaries. Exercises 2a, 2a Supplement, 2b, 2b Supplement. |

Day 3: Part A: Loops and functions, Part B: Reviews for part A. Exercises 3a, 3a Supplement, 3b, 3b Supplement. |

Day 4: Part A: Reviews for loops and functions, Part B: More reviews for loops and functions. Exercises 4a, 4a Supplement. |

Day 5: Part A: Quiz, Part B: Recursive functions. Exercise 5. |

### Week 2

Day 6: Part A: Quiz problem review, Part B: Loops, modules, and input function. Exercises 6a, 6a Supplement, 6b, 6b Supplement. Slides Part A, Part B |

Day 7: Part A: Image Basics, Part B: More with Images. Exercises 7a, 7a Supplement, 7b, 7b Supplement. Slides. SimpleImage Library. |

Day 8: Part A: Recursion Basics, Part B: More with Recursions. Exercises 8, 8 Supplement. Slides. |

Day 9: Part A: Getting the hang of recursion, Part B: Time complexity and search. Exercises 9a, 9a Supplement, 9b, 9b Supplement. Slides. |

Day 10: Part A: Quiz, Quiz Solution, Part B: List comprehension, dictionary comprehension, and string functions. Exercises 10, 10 Supplement |

### Week 3

Day 11: Heather’s Introduction, Part A: Algorithm Introduction and linear search, Part B: Binary search and sorting. Exercises 11a, 11a Supplement, 11b, 11b Supplement. |

Day 12: Part A: Bubble sort and selection sort, Part B: Quicksort. Exercises 12a, 12a Supplement, 12b, 12b Supplement. |

Day 13: Part A: Insertion sort, divide and conquer, merge sort, and python built-in sort, Part B: Introduction to graphs. Exercises 13a, 13a Supplement, 13b, 13b Supplement. |

Day 14: Part A: Depth-First Search, Part B: Breadth-First Search. Exercises 14a, 14b. |

Day 15: Part A: Quiz PDF, Quiz Jupyter Notebook, Part B: College application talk and quiz review. |

### Week 4

Day 16: Part A: Memoization, Part B: More Memoization. Exercises 16, 16 Supplement. |

Day 17: More memoization: getting the optimal solution and not just its value. Exercises 17, 17 Supplement. |

Day 18: Memoization applied to graphs: shortest paths. Exercises 18, 18 Supplement. |

Day 19: Final Exam PDF, Final Exam Notebook, Arithmetic: adding and multiplying, Dan Energy Visit |

Day 20: Graduation Ceremony. |