Intro
Hey!
My name's Logan and I'm a U3 Computer Science - Artificial Intelligence student at McGill University in Montreal, QC.
I'm extremely interested in the theoretical and practical aspects of both AI and Software
Development, and I'm always looking for new opportunities to learn and grow as a developer and researcher.
I'm especially passionate about AI/ML, including its applications to other fields and industries, as well as
further research into its ethical impacts and possible improvements.
Please feel free to check out the descriptions of my classes and projects
for a more specific idea of what I've been working on recently, or to read more about me
and my personal life. If you'd like to get in touch, feel free to send me an email or connect
with me on LinkedIn!
Projects
Here are some of the projects I've worked on recently:
-
Red Rising Social Network Visualization
Using Python, specifically the libraries NetworkX and PyVis, I constructed a social network for each of the six books in the series Red Rising using
a .txt file of each book, and analyzed the performance of several centrality measures and the Louvain Community
Detection algorithm on each network. The visualizations, as well as a more detailed explanation is available
at the link above, and the source code is available on my GitHub.
-
COMP 424 - AI Agent
In COMP 424, my partner and I created the agent "Minimax Search with Alpha-Beta Pruning and Fixed Breadth and Depth", which plays the game "Colosseum Survival!",
and wrote a report on the process and our design decisions. The agent won 63.78% of its games against agents from other
students in the class, and 100% of its games against a random agent, achieving an A grade for the project.
-
COMP 551 - Papers
In COMP 551 I completed four team projects, for which we implemented a variety of ML models (linear regression, logistic regression,
MLPs, CNNs, Naive Bayes, and BERT classification) and wrote reports on our findings, achieving a cumulative A- grade
across the projects.
-
Tabulator
Using JavaScript, I created a chrome extension, Tabulator, which allows users to quickly group tabs by their URL using its simple, single-button interface.
It is currently available on the Chrome Web Store, with over six users (seven) and a 5-star rating.
-
McHacks 9 - ARoom
In Jan 2022, I participated in the McHacks 9 Hackathon, where my team and I created a web application, ARoom, which allowed users to create and join
voice chat rooms with people nearby. We receieved the Huawei Customs Challenge: Best Pandemic Life-Related Hack award for our project, winning a Huawei smartwatch! :D
-
COMP 322 - Version Control System
For the class COMP 322, I created a local version control system using C++, allowing users to save and track changes between versions
of a file through the command line.
-
Projects in progress:
-
A reinforcement learning agent, trained using several methods including Deep Q-Learning to maximize the agent's earnings in a game of
Blackjack with varying shoe sizes, deck penetration, and numbers of players.
-
A desktop application in Python allowing users to track the amount of time they spend studying each subject per day,
allowing them to allocate their time more effectively and efficiently.
Due to McGill regulations, I can't post assignment/project code online. If you'd like to view the code/demo/written report for any of these projects,
or just discuss any of them in more detail, please feel free to reach out!
About
When I'm not engaged in academic pursuits, I enjoy a variety of other hobbies and activities.
- I play piano, and have been for the past 15 years. I'm currently learning
the second half of this arrangement
- I play setter for the McGill Men's Volleyball (Club) Team, and I play beach volleyball competitively during the summer
- I started powerlifting in July 2022, and I am now the VP of the SSMU Powerlifting Club. The sport is
growing quickly and I'm honoured to have the opportunity to help facilitate its growth at McGill
- I've been a football and hockey fan my entire life, and when I'm away from home I watch
games with my parents over Zoom and FaceTime
- I'm a (very casual) online chess player, with a rating of ~1150 for Rapid and ~1000 for Bullet. My favourite
clock setting is definitely 1+0
- I love coffee, cilantro, and pineapple on pizza (extremely controversial, I know)
- In no particular order, some of my favourite movies and tv shows are:
- Whiplash
- La La Land
- Eurovision Song Contest: The Story of Fire Saga
- The Kid Detective
- Silicon Valley
- Queen's Gambit
- AP Bio
- Breaking Bad/Better Call Saul
- Suits
Links
Education
McGill University
Bachelor of Science: Computer Science - Artificial Intelligence (2025)
GPA: 3.64/4.0
VP Internal: SSMU Powerlifting Club
Member: McGill Men's Volleyball Club Team, Compete McGill, McGill AI Society
Recipient: Suncor Emerging Leaders in Engineering Award
University of Victoria
Engineering (General)
GPA: 8.26/9.0
First Year Representative: UVic Engineering Students' Society
Indigenous Engineering and Computer Science Entrance Scholarship
University of Victoria Entrance Scholarship
Transferred to McGill after 1 year
Courses
COMP 579 (Reinforcement Learning)
Course Website: COMP 579 (Reinforcement Learning)
In progress (Winter 2024).
COMP 551 (Applied Machine Learning)
Course Website: COMP 551 (Applied Machine Learning)
Projects
- Performed a linear regression with both analytical and stochastic batch gradient descent methods on the ENB 2012 Energy Efficiency Dataset. Performed a hyperparameter search to determine the best values for train/test split sizes, batch sizes, and learning rates.
- Implemented an MLP model on the CIFAR-10 dataset to classify images. Tested its performance with differing numbers of layers (0, 1, 2), activation functions (ReLU, Tanh, Leaky ReLU), and L1 vs L2 regularization.
- Performed classification on the IMDb review dataset using both Naive Bayes and Bidirectional Encoder Representations from Transformers (BERT) models. Used ADAM as an optimizer for BERT. Tested the performance of different train/test split sizes on the Naive Bayes model.
- Attempted to reproduce the results of the paper Deep Fair Clustering for Visual Learning on the datasets MNIST, RMNIST, and USPS.
Topics
- Parameter Estimation
- Linear Regression
- Logistic and Softmax Regression
- Gradient Descent Methods (SGD, Batch SGD, Momentum, ADAM)
- Regularization (L1, L2, Data Augmentation, Noise Robustness, Early Stopping, Dropout)
- Generalization
- Perceptrons (Optimization, Gaussian Bases, Sigmoid Bases, MLPs, Logistic/Hyperbolic Tangent/ReLU/Leaky ReLU/Softplus Activation Functions)
- Automatic Differentiation (Jacobian Matrices, Chain Rule, Gradient Calculations)
- Convolutional Neural Networks
- Recurrent Neural Networks (Vec2Seq, Seq2Vec, Seq2Seq, Transformers and Language Models)
- Naive Bayes
- Nearest Neighbours
- Classification and Regression Trees
- Bagging (Bootstrap Aggregation, Decision Trees, Random Forests)
- Boosting (AdaBoost, Gradient Boosting)
- Unsupervisted Learning (Clustering- K-means, K-medoids, Agglomorative)
- Dimensionality Reduction (Principal Component Analysis, Covariance Matrices, Singular Value Decomposition, Autoencoders)
COMP 424 (Artificial Intelligence)
Course Website: COMP 424 (Artificial Intelligence)
Projects
- Created an agent "Minimax Search with Alpha-Beta Pruning and Fixed Breadth and Depth", available on my GitHub, that plays the game "Colosseum Survival!". It achieved a win rate of
63.78% against bots created by other students in the class, and 100% against a random agent. We wrote a report that compared
our implementation to any possible alternatives, and examined possibilities and strategies for creating a more powerful agent, achieving an A grade for
the project.
- Designed and implemented an algorithm using Hill Climbing that finds a solution for the N Queens problem up to approximately N=120.
Topics
- Search algorithms: Uninformed (BFS, DFS, UCS, DLS, IDS), Informed (Best-First, Heuristic, A*), and Local (Hill Climbing, Simulated Annealing, Parallel, Beam, Genetic)
- Constraint satisfaction problems (AC-3, Backtracking Search, Forward Checking)
- Adversarial search algorithms (Minimax, Alpha-Beta Pruning, Monte Carlo Tree Search, Upper Confidence Trees, Rapid Action-Value Estimation)
- Searching under uncertainty (Belief Space, Conformant Planning, AND-OR Search)
- Decision-making under uncertainty (Bayesian Network Inference, Marginal Probabilities, Causal Reasoning, Maximum A Posteriori Queries, Variable Elimination, DAGs, and Conditional Independence)
- Learning bayesian networks (Supervised Learning, Maximum Likelihood Estimation, Laplace Smoothing)
- Learning with missing values (Expectation Maximization, K-means Clustering)
- Causal graphical models (Correlation vs Causation, Back-door Criterion)
- Time series models (Markov Chains, Hidden Markov Models, Markov Decision Processes, Forward/filtering & Backward/smoothing Algorithms, Kalman and Histogram Filters)
- Utility Theory (Maximizing Expected Utility, Value of Perfect Information)
- Reinforcement Learning (Bandit Algorithms, Deep Q Networks, Bellman Equations, Policy Iteration)
COMP 421 (Database Systems)
Course Website: COMP 421 (Database Systems)
Projects
- Designed, implemented, and refined a relational database schema in DB2 to store information for a soccer tournament based
on a set of user requirements. Using JDBC, built a Java interface capable of performing CRUD operations on the database.
Topics
- Entity-Relationship modeling
- Relational Algebra
- SQL (PostgreSQL, MySQL)
- Buffer Management
- Indexing
- Query Evaluation
- Big Data (Distributed Data Processing with Hadoop, Map-Reduce)
- Transactions and Concurrency
- Graph Databases
COMP 370 (Introduction to Data Science)
Course Website: COMP 370 (Introduction to Data Science)
Projects
- Wrote a report on the coverage of Taylor Swift in the media. Our group collected and cleaned ~700 articles from NewsAPI.org,
then conducted an open coding to develop a typology before manually annotating the rest of the data. We also manually characterized
the sentiment of each article, then created several graphs to visualize and further our understanding of the relationship between the two.
Topics
- The Data Science Process
- Unix and the Cloud (Servers, SSH, Working Remotely, Vim)
- Core Tools (Project Structure, Unit Tests, Jupyter, Bokeh)
- Version Control (Git/GitHub)
- Question Formulation
- Data Collection (APIs, JSON, Scraping, Sampling)
- Data Annotation (Typologies, Manual Annotation/Open Coding, Automated Annotation)
- Analysis (Statistical + Network Analysis)
COMP 360 (Algorithm Design)
Course Website: COMP 360 (Algorithm Design)
Topics
- Network Flows (Ford-Fulkerson, Max-Flow/Min-Cut, Capacity Scaling, Bipartite Matching, Image Segmentation, Circulation)
- Linear Programming (Geometry, Duality, Complementary Slackness, Simplex Method)
- Complexity Theory (P/NP class definitions, Reductions, NP-Completeness)
- Approximation Algorithms
COMP 322 (Introduction to C++)
Course Website: COMP 322 (Introduction to C++)
Projects
- Using plain C++, built a local version control system, capable of saving and tracking changes between versions of a file through a command line interface.
Topics
- Studied programming fundamentals (OOP, File I/O, etc.) in C++
COMP 321 (Programming Challenges)
Course Website: COMP 321 (Programming Challenges)
Projects
- Participated in NP Compete, the ICPC qualifier hosted by the McGill Competitive Programming Club, as well as three in-class competitions.
Topics
- Competitive Programming- developing optimal solutions to word problems using data structures and algorithms
- Divide and Conquer
- Dynamic Programming
- Greedy Algorithms
- Graph Algorithms- traversals, toplogical sort, MSTs, shortest paths, flow networks
- Sorting Algorithms- O(n^2) (Bubble/Selection/Insertion), O(nlogn) (Merge/Heap/Quick), O(n) (Counting/Radix/Bucket)
- Computational Geometry- points, lines, circles, triangles, rectangles, polygons, dot/cross products, segment intersections, convex hull problem
COMP 308 (Computer Systems Lab)
Course Website: COMP 308 (Computer Systems Lab)
Projects
- Using Intel x86 Assembly (TASM) emulated on DOSBOX, OpenGL, GLSL, and glfw3 compiled with CMake, built a game of Pong playable against an "AI opponent" (it used a single if statement to determine where to move lol).
Topics
- Graphics Cards- card architecture, integration, memory models
- x86 Assembly- registers, commands, subroutines, code structure
- Graphics- drawing dots, lines, triangles etc. in assembly. Colouring and more complex shapes in C/OpenGL. Shading in GLSL
COMP 303 (Software Design)
Course website: COMP 303 (Software Design)
Topics
- Principles, mechanisms, techniques, and tools for object-oriented software design and its implementation,
including encapsulation, design patterns, and unit testing.
COMP 302 (Programming Languages and Paradigms)
Course website: COMP 302 (Programming Languages and Paradigms)
Topics
- Functional Programming- OCaml fundamentals
- Fundamental Concepts in Programming Languages- higher-order functions, stateful vs stateless computation,
modelling objects as closures, deferring control (via exceptions & continuations),
polymorphism, partial evaluation, lazy programming, modules
- Applying Reasoning to Programs- typechecking, type inference, induction, operational semantics
- Programming Language Design- formal grammars, operational semantics, type systems,
interpreters, polymorphism, subtyping
COMP 273 (Introduction to Computer Systems)
Course Website: COMP 273 (Introduction to Computer Systems)
Projects
- Using a Logism circuit simulator, designed a functional 8-bit CPU containing: an ALU that can perform mathematical operations on data,
RAM from which data can be saved/loaded, a CU, a clock, and a display.
Topics
- Number representations, combinatorial and sequential digital circuits, MIPS instructions and
architecture data-paths and control, caches, virtual memory, interrupts and exceptions,
pipelining.
COMP 251 (Algorithms and Data Structures)
Course Website: COMP 251 (Algorithms and Data Structures)
COMP 206 (Introduction to Software Systems)
Course Website: COMP 206 (Introduction to Software Systems)
MATH 324 (Statistics)
Course Website: MATH 324 (Statistics)
Topics
- Sampling distributions including the Normal, Chi-squared, Student’s and F distributions
- Unbiased estimation, confidence intervals, sample size calculation
- Consistency and asymptotic normality, sufficiency, completeness, uniformly minimum variance unbiased estimators (UMVUE),
method of moments, maximum likelihood estimates (MLE’s)
- Hypothesis testing, Neyman-Pearson theory of testing statistical hypothesis, uniformly most powerful tests (UMP), the
likelihood ratio test
- Linear models, method of least squares, simple linear regression. Matched-pairs design. Analysis of variance, one-way layout
- Chi-square test, contingency tables
MATH 323 (Probability)
Course Website: MATH 323 (Probability)
Topics
- Sample space, events, conditional probability, independence of events, Bayes’ Theorem
- Basic combinatorial probability, random variables, discrete and continuous univariate and multivariate
distributions
- Moment generating functions
- Independence of random variables, Chebyshev’s Inequality, the central limit theorem, the weak law of large numbers
MATH 263 (Ordinary Differential Equations for Engineers)
Course Website: MATH 263 (Ordinary Differential Equations for Engineers)
Topics
- First Order ODEs- introduction, definitions and geometrical interpretation; existence
and uniqueness theorem; linear equations; separable equations; exact equations and
integrating factors; applications
- Second and higher order linear ODEs: linear homogeneous equations, fundamental
systems of solutions, Wronskians; Review of complex numbers; Constant coefficient
equations and Cauchy-Euler equations; Inhomogeneous equations (undetermined coef-
ficients and variation of parameters); reduction of order; applications
- Laplace Transforms: definition and properties; solution of initial value problems for
constant coefficient equations; step functions, discontinuous and periodic forcing func-
tions, impulse functions; convolutions; applications
- Series Solutions: Regular Points, Regular Singular Points and Frobenius method
- Linear Systems of ODEs: Review of linear Algebra, Solutions and stability
- Introduction to numerical methods and nonlinear differential equations
MATH 262 (Intermediate Calculus)
Course Website: MATH 262 (Intermediate Calculus)
Topics
- Series and power series
- Vector functions and curves
- Partial differentiation and differential calculus for vector valued functions
- Unconstrained and constrained optimization problems
- Multiple integrals, including surface area and change of variables
MATH 223 (Linear Algebra)
Course Website: MATH 223 (Linear Algebra)
Topics
- Review of matrix algebra, determinants and systems of linear equations
- Vector spaces, linear operators and their matrix representations, orthogonality
- Eigenvalues and eigenvectors, diagonalization of Hermitian matrices
- Applications
MATH 208 (Introduction to Statistical Computing)
Course Website: MATH 208 (Introduction to Statistical Computing)
Topics
- Basic data management
- Data visualization
- Exploratory data analysis and descriptive statictics
- Writing functions
- Simulation and parallel computing
- Communicating data and documenting code for reproducible research
CHEM 181 (World of Chemistry: Food)
Course Website:
CHEM 120 (General Chemistry 2)
Course Website: CHEM 120 (General Chemistry 2)
FACC 100 (Introduction to the Engineering Profession)
Course Website: FACC 100 (Introduction to the Engineering Profession)
PHYS 142 (Electromagnetism and Optics)
Course Website: PHYS 142 (Electromagnetism and Optics)
CSC 115 (Introduction to Programming: II) | UVIC
CSC 111 (Fundamentals of Programming with Engineering Applications) | UVIC
ENGR 141 (Engineering Mechanics) | UVIC
ENGR 130 (Introduction to Professional Practice) | UVIC
ENGR 120 (Design and Communication II) | UVIC
ENGR 110 (Design and Communication I) | UVIC
MATH 122 (Logic and Foundations) | UVIC
MATH 110 (Matrix Algebra for Engineers) | UVIC
MATH 101 (Calculus II) | UVIC
MATH 100 (Calculus I) | UVIC
PHYS 111 (Introductory Physics II) | UVIC
PHYS 110 (Introductory Physics I) | UVIC
Elements
Text
This is bold and this is strong. This is italic and this is emphasized.
This is superscript text and this is subscript text.
This is underlined and this is code: for (;;) { ... }
. Finally, this is a link.
Heading Level 2
Heading Level 3
Heading Level 4
Heading Level 5
Heading Level 6
Blockquote
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
Preformatted
i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';
Lists
Unordered
- Dolor pulvinar etiam
- Sagittis adipiscing
- Felis enim feugiat
Alternate
- Dolor pulvinar etiam
- Sagittis adipiscing
- Felis enim feugiat
Ordered
- Dolor pulvinar etiam
- Etiam vel felis viverra
- Felis enim feugiat
- Dolor pulvinar etiam
- Etiam vel felis lorem
- Felis enim et feugiat
Icons
Actions
Table
Default
Name |
Description |
Price |
Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
Item Four |
Vitae integer tempus condimentum. |
19.99 |
Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |
Alternate
Name |
Description |
Price |
Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
Item Four |
Vitae integer tempus condimentum. |
19.99 |
Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |