**Week 1**
Readings:
- No formal readings this week, but I did post some material on the forum that you might find helpful for getting up to speed/refreshed
- Slides
- week1_review.py - Basic functions/dictionaries review
- week1_object_review.py - Simple OOP review
**Week 2**
Readings:
Lecture Material:
- Slides
- week2_my_stacks.py - Various implementations of the Stack ADT
**Week 3**
Readings:
- How to Think Like a Computer Scientist: Exceptions
- How to Think Like a Computer Scientist: Inheritance
- Slides
- week3_exceptions.py - Some examples of working with exceptions
- week3_stacks.py - Our Stack implementations updated with exceptions
- week3_eval_expression.py - Evaluating arithmetic expressions using stacks
- week3_classes.py - Starting to play around with classes
**Week 4**
Readings:
- How to Think Like a Computer Scientist: Linked Lists
- Slides
- week4_triangle.py - Triangle Example to show the power of inheritance
- week4_person.py - Playing around with family trees
- week4_linked_lists.py - Linked Lists
**Week 5**
Readings:
- How to Think Like a Computer Scientist: Recursion
- Slides
- week5_hanoi.py - Tower of Hanoi
- week5_hanoi_stacks.py - Tower of Hanoi using Stacks to actually move towers around
- week5_stacks.py - A printable stack for user in Tower of Hanoi Stacks Example
- week5_recursive_examples.py - Simple Recursive Examples
- week5_palindrome.py - Palindrome and near-palindrome examples
- week5_sierpinski.py - Sierpinski Triangle example that worked right away and wasn't at all frustrating and embarrassing during lecture
**Week 6**
Readings:
- Computer Science Circles: Recursion
- week6_binary_search.py - Binary Search
- week6_grammar.py - Mutual Recursion (Grammar program to make up silly, yet properly formed sentences)
- week6_linked_list.py - Linked List (recursive version)
**Week 7**
Readings:
- How to Think Like a Computer Scientist: Trees
- Slides
- week7_binary_tree.py - Binary Tree
**Week 8**
Readings:
- CSC378 Lecture Notes: Heaps - Note that these notes start indexing from 1, so we have to move everything over by 1 in Python.
- Slides
- week8_binary_search_tree_starter.py - Starter File
- week8_binary_search_tree.py - Code from lecture
**Week 9**
Readings:
- Problem Solving with Algorithms and Data Structures: Binary Heaps
- Slides
- week9_heap_starter.py - Starter File
- week9_insertion_sort.py - Insertion Sort for analysis
- week9_heap.py - Heap
**Week 10**
Readings:
- Problem Solving with Algorithms and Data Structure: Analysis
- Algorithmic Complexity
**Week 11**
Readings:
- Problem Solving with Algorithms and Data Structure: Sorting & Searching