Principles of Computing

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