Current Classes

Applies the core principles and practices of computer graphics, from 2D rasters to scene graphs in 3D, polygons, and shaders using C++ and Open GL.

Covers the main methodologies and theory of computer vision, including filters, convolution, frequencies, edge and feature detection, neural networks, and 3D construction.

Applies the fundamental types of neural networks to various problems. Topics include CNNs, RNNs, and Q Learners.

Completed Classes

Applies game theory principles on auctions, pricing, and rational behavior in market scenarios.

Explores statistical models of machine learning including maximum likelihood, Bayes, logistic regression, k means, and expectation maximization.

Database design, database languages, relational theory and algebra, and system-level implementations are practiced in this course.

Explores effective methods of image analysis by studying and mimicking biological processes in the brain.

Discusses how to analyze the runtime of algorithms, and recognize the NP hardness of problems, as well as think about how to design algorithms to efficiently solve complex problems.

Practices the development process of web apps, from conceptualization, design, implementation, debugging, to maintenance. Covers technologies fundamental to web apps such as SQL, Jquery, Javascript, Node, and HTML/CSS. It allows us to learn to work in teams and efficiently divide up work.

Covers probablistic and statistical methods of making decisions. It is especially useful for machine learning. Topics include modeling and solving in sample spaces, random variables, random process probability distributions, Markov chains, and statistical inference.

Studies methods and processes of natural language processing. Topics will include machine learning, syntax, and statistical analysis.

Covers input, typography, statistical a/b testing, mental models and techniques used for best design practices. We learn about different modes of input from joysticks to mice to touchpads and how to represent them using state models. We modified a website's design and did a real life a/b test and applied tests such as the t-test and chi-square to determine effectiveness of changes. We design surveys and interviews to form a mental model of users based on real people.

Covers system programming C and assembly. We learn how to use memory addresses and pointers, then how to use bitwise operators. We learn about overflow attacks on a buffer and how to interpret and write assembly code. We learn about optimization techniques such as loop unrolling and apply them to build efficient implementations of string functions and arithmetic functions. We then build a shell and then learn about memory allocation.

Covers depth first and breadth first search, Dijkstra's Algorithm, A*, heuristics, Stochastic Gradient Descent, Bayes Nets, particle filtering using Kalman filters. We will also be covering the reverse pendulum balancing problem and Markov Blankets.

Covers basic algorithms as an introduction to computer science. We do parsing, recursion, binary search, quick sort, merge sort, trees, and interpreters.

Covers the basic data structures as an introduction to computer science. We explore how linked lists, arrays, arraylists, graphs, and hashmaps work and analyze the complexity to access and modify the data structures. Projects include xml parsing, sockets, Page Rank search, KD trees, and user interfaces.

Covers proofs on probability and discrete math topics. We start with set operations, then equivalence relations, moving onto combinatorics, modular arithmetic, circuit design, and graph theory.

Covers matrix operations, starting with row reduction, then finding the inverse matrix. Moves on to diagonalization, eigenvectors, and eigenvalues, along with Cramer's Rule, Gramm-Schmidt, and cofactor expansion.