Introduction to important concepts like ideas on Absolute Knowledge, the existence of a universal
Scientific Method used throughout history, and mechanisms of scientific change and progress.

Divide and Conquer, Dynamic and Linear Programming, Greedy Algorithms, Network Flows. The course had
a focus on theoretical proofs around complexity and correctness. Included introduction to NP-Completeness.

Topics in biotechnology, recombinant RNA, and applications in health, agriculture and the environment.

An introduction to probabilistic models for machine learning. Probabilistic Graphical Models, sampling
algorithms, variational inference, and other statistical methods to learn probability models on data.

Introduction to Deep Learning with PyTorch, taught by Professors Bo Wang and Jimmy Ba. Convolutional,
recurrent, and transformer architectures among topics covered.

Working with Dr. Anna Goldenberg and Sana Tonekaboni, I worked on a Bayesian non-parametric model
to learn states of time series data. I worked on finding and running baseline methods, and incorporating
a normalizing flow architecture into our model.

This history and philosophy of science course covered major developments in the world of mathematics
after 1700. Covered various tools developed during this period for exploration and measurement of
celestial bodies, counting problems in number theory, and the introduction of new mathematical
frameworks and objects that revolutionized the field.

This course covered a variety of topics including greek constructions of numbers, important ideas in modular arithmetic like
Fermat's Little Theorem, and countability of sets.

Continuing research on Representation Learning for time series data.

"Fields, complex numbers, vector spaces over a field, linear transformations, matrix of a
linear transformation, kernel, range, dimension theorem, isomorphisms, change of basis,
eigenvalues, eigenvectors, diagonalizability, real and complex inner products, spectral theorem,
adjoint/self-adjoint/normal linear operators, triangular form, nilpotent mappings, Jordan canonical
form."
Link

"At a time when headline-making AI breakthroughs are an almost daily occurrence, it might seem that we
are on the cusp of living with artificial systems that match or exceed human intelligence. But there
are longstanding philosophical challenges around the definition of intelligence, how we measure it,
and what machines could really be capable of, that still need addressing. For example, could a machine
ever be conscious, or creative, or have common-sense? How close are we to building human-level AI?
What do we need to get us there? This course aims to explore these questions in greater depth."
Link

"Introduction to basic concepts in computer vision. Extraction of image features at multiple scales.
Robust estimation of model parameters. Multiview geometry and reconstruction. Image motion estimation
and tracking. Object recognition. Topics in scene understanding as time permits."
Link

"An introduction to methods for automated learning of relationships on the basis of empirical data.
Classification and regression using nearest neighbour methods, decision trees, linear models, and
neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy. Basics
of reinforcement learning."
Link

This is a course required for the CS degree at UofT. While I have no intention of doing any hardware
related work in my career, it is quite cool to understand at the deepest possible level how computers
actually work. We started with the chemical composition of simple MOSFET transistors, quickly abstracted
to logic gates (AND, OR, XOR, etc), and then built our way up to memory devices and sequential circuits
that utilized a clock. We later learned about the MIPS architecture and the full datapath for CPUs that
use this architecture.

This course gave an introduction to important concepts in multivariable calculus. We learned about
how different curves behave in 3D space, vector functions, line integrals, divergence, curl, and more.
"Parametric equations and polar coordinates. Vectors, vector functions and space curves. Differential
and integral calculus of functions of several variables. Line integrals and surface integrals and
classic vector calculus theorems. Examples from life sciences and physical science applications."
Link

"Theories and algorithms that capture (or approximate) some of the core elements of computational
intelligence. Topics include: search; logical representations and reasoning, classical automated
planning, representing and reasoning with uncertainty, learning, decision making (planning) under
uncertainty. Assignments provide practical experience, in both theory and programming, of the core
topics."
Link

"Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity,
randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries,
priority queues, and disjoint sets. A variety of data structures for implementing these abstract data
types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of
data structures. Introduction to lower bounds."
Link

"This course offers a concise introduction to ethics in computing, distilled from the ethical and
social discussions carried on by today's academic and popular commentators. This course covers a wide
range of topics within this area including the philosophical framework for analyzing computer ethics;
the impact of computer technology on security, privacy and intellectual property, digital divide, and
gender and racial discrimination; the ethical tensions with Artificial Intelligence around future of
work and humanity, the emerging role of online social media over voice, inclusion, and democracy;
and the environmental consequences of computing."
Link

"Software techniques in a Unix-style environment, using scripting languages and a machine-oriented
programming language (typically C). What goes on in the operating system when programs are executed.
Core topics: creating and using software tools, pipes and filters, file processing, shell programming,
processes, system calls, signals, basic network programming."
Link

This is an unofficial course put on by the club I'm apart of (UofT AI).
Here is the link to the syllabus, showing what we covered.

This introductory software design and development course taught the core concepts of good design: SOLID
design principles, Clean Architecture, and common design patterns. During this course I learned the
ropes of Java in order to work on a team of 7 people over the course of 2 months or so to design and
develop a large program based on the provided specifications. We heavily utilized Git Version Control
for this project.

This course builds on the foundation built in CSC165. We covered complete induction, structural
induction, the principle of well ordering, and their applications in formal language theory (including
finite state automaton), algorithmic complexity proofs, and recursive and iterative algorithm
correctness proofs.

An introduction to linear algebra. Topics covered included systems of linear equations, matrix algebra,
linear independence and dependence, linear transformations, determinants, eigenvalues, eigenvectors,
eigenspaces, and diagonalization of matrices.

This proof based statistics course provides a mathematically rigorous introduction to probability.
We covered various continuous and discrete distributions, learned about moments and moment generating
functions for these distributions. We covered conditional and joint distributions, as well as
conditional expectations, the Law of Total Expectation, and the Law of Total Variance. We also defined
and proved the Law of Large Numbers and the Central Limit Theorem.

This is an introductory programming course in Python. We learned important principles of OOP, recursion,
Unit Testing, and some good coding practices. We also used memory models to better understand the
performance of some Abstract Data Types (Linked Lists, Stacks, Queues, etc) over others. We also learned
various sorting algorithms.

This course introduces important concepts in predicate logic and proof writing, and applies it in
various domains. Over the course of the semester I learned to write proofs for graph theory,
algorithm runtime analysis, and number theory.

In this first year (single variable) proof based calculus course I learned how to write proofs for
various domains within calculus. From epsilon delta proofs for limits, to proving the Fundamental
Theorem of Calculus, and quite a lot in between.

This intro philosophy course asks many interesting questions about the nature of science. We learned
about underdetermination, Hume's problem with induction, the importance of falsifiability (Karl Popper),
and the structure of how scientific revolutions work (Thomas Kuhn).

This course is a combined introductory micro/macro economics course. We learned important concepts in
how competitive markets function (at a basic level), and how external forces like government
fiscal/monetary policy can impact it.

In this introductory linguistics course I learned various concepts in syntax, morphology, and
phrase structure.