This class consists of two parts that are five and four weeks long, respectively. Each portion covers a collection of principles that are fundamental to Computer Science. As a motivating application of these principles, we will examine a collection of strategy games and apply these principles in the analysis/solution of these games. Each week, you will watch a set of 6-8 videos and then complete homework on the mathematical aspects of these concepts. Your main weekly task is to complete a mini-project that furthers your practical understanding of the material. Both assignments have a soft deadline of Monday and a hard deadline of Thursday. An optional collection of practice activities is also available to further reinforce the concepts introduced in the videos.

Part | Week | Concepts | Mini-project |
---|---|---|---|

1 | 1 | Introduction, coding standards | 2048 (merge) |

1 | 2 | Testing, plotting | 2048 (full) |

1 | 3 | Probability, randomness, objects/references | Tic-Tac-Toe (Monte-Carlo) |

1 | 4 | Combinatorics, generators, debugging | Yahtzee |

1 | 5 | Counting, growth of functions, higher-order functions | Cookie Clicker |

2 | 6 | Searching, data structures, inheritance | Zombie Apocalypse (BFS) |

2 | 7 | Recursion, sorting, reading files | Word Wrangler |

2 | 8 | Trees, game solvers, testing | Tic-Tac-Toe (Tree search) |

2 | 9 | Design of abstractions, invariants, models | The "Fifteen" puzzle |