courses
relevant coursework
Artificial Intelligence & Machine Learning
COMP 551: Applied Machine Learning
Graduate level course on mathematical introduction to Machine Learning models, taught by Reihaneh Rabbany, a Core Academic Member of Mila - Quebec Artificial Intelligence Institute, and Sékou-Oumar Kaba. Developed a strong foundation in supervised and unsupervised learning, including linear and logistic regression, clustering, Naive Bayes, decision trees, and neural networks, as well as techniques including feature selection, dimensionality reduction, error estimation, empirical validation. Course assignments involved implementing neural networks from scratch (without external ML libraries) for image classification and text processing, trained and evaluated on Fashion-MNIST, and benchmarked model accuracy against pretrained baseline (BERT) to assess performance and generalization.
COMP 579: Reinforcement Learning
Graduate level course on Reinforcement Learning taught by Doina Precup, Canada CIFAR AI Chair and Research Team Leader, Google DeepMind, and Nishanth Anand. Topics covered inclue Bandit algorithms, finite Markov decision processes, dynamic programming, Monte-Carlo Methods, temporal-difference learning, bootstrapping, planning, approximation methods, on versus off policy learning, policy gradient methods temporal abstraction and inverse reinforcement learning.
COMP 511: Network Science
Graduate level course on mathematical introduction to Machine Learning models, taught by Reihaneh Rabbany covering topics in Network Science, Graph Mining and Graph Learning, including patterns in real world networks, ranking and similarity measures for graphs, graph clustering and community mining techniques, and node classification and link prediction methods.
Algorithms & Theory
COMP 360: Algorithm Design
Course on advanced algorithm design and analysis taught by Rohit Vasishta. Topics covered include advanced Flow Network techniques with special constraints (e.g., lower bounds, vertex demands), Linear Programming, Game Theory, complexity classes, NP-completeness, and advanced algorithmic reduction techniques.
COMP 252: Honours Algorithms and Data Structures
Honours-level course on design and analysis of algorithms and data structures, taught by Luc Devroye. Focus on proving algorithm correctness and analyzing computational complexity. Topics included sorting, graph algorithms, Flow Networks, Dynamic Programming, and asymptotic analysis.
COMP 330: Theory of Computation
Course on Automata theory and Turing Machines taught by Jérôme Waldispühl. Topics covered include Finite Automata, Regular Languages, Context-free Languages, Push-down Automata, models of computation, computability theory, undecidability, reduction techniques.
COMP 302: Programming Languages and Paradigms
Course on functional and logic programming using OCaml, taught by Brigitte Pientka. Programming language design issues and programming paradigms. Binding and scoping, parameter passing, lambda abstraction, data abstraction, type checking. Implemented RSA key-pair validation and encryption in OCaml, using functional programming techniques for efficiency, as part of the course project.
Mathematical Foundations
MATH 247: Honors Applied Linear Algebra
Honours-level course on matrix algebra, systems of linear equations, and linear transformations. Studied abstract vector spaces, inner product spaces, eigenvalues and eigenvectors, and diagonalizable and defective matrices. Explored quadratic and Hermitian forms, generalized eigenvalue problems, and applications relevant to algorithms and machine learning.
MATH 323: Probability
Course on probability spaces, conditional probability, and Bayes’ Theorem, with an exploration of random variables, discrete and continuous distributions, and independence. Applied probabilistic concepts to model uncertainty, understand distributions, and support statistical inference in data-driven tasks.
MATH 324: Statistics
Course on sampling distributions, point and interval estimation, and hypothesis testing. Covered analysis of variance, contingency tables, nonparametric inference, and regression, with an emphasis on statistical reasoning for data analysis and interpretation of empirical results.
Systems & Programming
COMP 310: Operating Systems
A study of the design and implementation of modern operating systems, focusing on memory management and process synchronization. Implemented demand paging, job scheduling and shell commands in a mini-OS developed throughout the course.
COMP 273: Introduction to Computer Systems
Learnt about combinational and sequential digital circuits, MIPS Assembly, cache, virtual memory and pipelining. Created a mini CPU with 4 bit instructions as part of the final project.