Project-related deadlines are shown in red. Note that that there will be no extensions for projects!

Part 1: Introduction to Computer Science and Programming (Weeks 1-8)

Week 1: Basic Recursive Design and the Command Line

  • Tuesday: Introduction to Python, elements of basic recursive design
    • Lists, basic principles, etc..
    • Factorial, fibonacci
  • Lab: Setup CS accounts
  • Thursday: Principles of Basic Recursive Design

Week 2: Execution Principles

Week 3: Algorithm Specifications, Higher-Order Functions, and Graphs

  • Tuesday: Fully-Specifying / Implementing Insertion Sort, Binary Search, and Lambdas
  • Work on Project 2
  • Thursday: Graphs and Introducing Project 3

Week 4: Kris Gone to ICFP

Week 5: Variable and Mutable State

Week 6: Exam Review, Classes Preview, and Exam

Week 7: Fall Break!

Part 2: Data Structures Design and Implementation (Weeks 8-fin)

Week 8: More Classes, Linked Lists, and Stacks

  • Tuesday: Classes Review and Livecoding Linked-Lists
  • Slides on Object Orientation
  • Thursday: Operations on Linked-Lists
  • Project 6: Beginning HaverQuest, and Linked List implementation
  • Slides on Linked Lists
  • Example code on Linked Lists

Week 9: Binary Trees

  • Tuesday: Binary Trees
  • Slides on Binary Trees
  • Thursday: More on Binary Trees

Week 10: Balancing Trees, Hash Functions and Hash Tables

Week 11: Subclassing and Polymorphism

Week 12: Exam Review and Coding Exam / Exam 2 (No class)

Week 13: Tries

  • Tuesday: Tries in theory
  • Thursday: Implementing tries

Week 14: HAMT and Course Review

  • Tuesday: The Hash Array-Mapped Trie
  • Thursday: Course review (before final)

Week 15: AI Competition / End of Class

  • Tuesday: Kris gone, work on Project 8
  • Thursday: In class party / AI competition


  • Take home..