Link to textbook: Introduction to Algorithms and Machine Learning

Link to textbook: Introduction to Algorithms and Machine Learning

Curriculum

## Computation & Modeling

*Prerequisites:* AP Calculus AB/BC, Introduction to Programming, concurrent enrollment in Multivariable Calculus & Linear Algebra

*Computation & Modeling* is inspired by MIT's Introduction to Computer Science and goes far beyond it. In addition to implementing canonical data structures and algorithms (sorting, searching, graph traversals), students write their own machine learning algorithms from scratch (polynomial and logistic regression, k-nearest neighbors & k-means, parameter fitting via gradient descent). Students work primarily in Python.

This course interleaves through the following material:

**1. Hello World**- Some Short Introductory Coding Exercises; Converting Between Binary, Decimal, and Hexadecimal; Recursive Sequences; Simulating Coin Flips; Roulette Wheel Selection; Cartesian Product.**2. Searching and Sorting**- Brute Force Search with Linear-Encoding Cryptography; Solving Magic Squares via Backtracking; Estimating Roots via Bisection Search and Newton-Raphson Method; Single-Variable Gradient Descent; Multivariable Gradient Descent; Selection, Bubble, Insertion, and Counting Sort; Merge Sort and Quicksort.**3. Objects**- Basic Matrix Arithmetic; Reduced Row Echelon Form and Applications to Matrix Arithmetic; K-Means Clustering; Tic-Tac-Toe and Connect Four; Euler Estimation; SIR Model for the Spread of Disease.**4. Regression and Classification**- Linear, Polynomial, and Multiple Linear Regression via Pseudoinverse; Regressing a Linear Combination of Nonlinear Functions via Pseudoinverse; Power, Exponential, and Logistic Regression via Pseudoinverse; Overfitting, Underfitting, Cross-Validation, and the Bias-Variance Tradeoff; Regression via Gradient Descent; Multiple Regression and Interaction Terms; K-Nearest Neighbors.**5. Graphs**- Breadth-First and Depth-First Traversals; Distance and Shortest Paths in Unweighted Graphs; Dijkstra's Algorithm for Distance and Shortest Paths in Weighted Graphs.**Programming Languages**- basic exercises to build familiarity with SQL, Haskell, and C++.

## Machine Learning

*Prerequisites:* Computation & Modeling, Multivariable Calculus & Linear Algebra

*Machine Learning* covers more advanced machine learning algorithms such as decision trees and neural networks, as well as the development of strategic game-playing agents using game trees. Students also work together to implement Space Empires, an extremely complex board game that pushes their large-scale project skills (object-oriented design, version control, etc) to the limit. Again, students implement algorithms from scratch before using external libraries. Students work primarily in Python and Node.js.

This course interleaves through the following material:

**3. Objects**- Hodgkin-Huxley Model of Action Potentials in Neurons; Hash Tables; Simplex Method.**4. Regression and Classification**- Naive Bayes.**5. Graphs**- Decision Trees; Introduction to Neural Network Regressors; Backpropagation.**6. Games**- Canonical and Reduced Game Trees for Tic-Tac-Toe; Minimax Strategy; Reduced Search Depth and Heuristic Evaluation for Connect Four.**Space Empires**- begin developing a playable game in Node.js.

## Intelligent Systems

*Prerequisites:* Machine Learning

*Intelligent Systems* involves developing agents that behave intelligently in complex environments. Students reproduce academic papers leading up to Blondie24, a neuroevolution-based game-playing agent that learned to play checkers without having any access to information regarding human-expert strategies, and continue implementing Space Empires with the goal of designing artificially intelligent agents to play it. Students work primarily in Python and Node.js.

This course interleaves through the following material:

**6. Games**- Introduction to Blondie24 and Neuroevolution; Reimplementing Fogel's Tic-Tac-Toe Paper; Reimplementing Blondie24; Reimplementing Blondie24: Convolutional Version.**Space Empires**- finish game development; develop intelligent game-playing agents.