While I cannot share my work from these courses publicly, I would be happy to share the github repositories for each course if you are interested in seeing some more of my work.
Click on a course title to view more details.
COMP135: Introduction To Machine Learning And Data Mining
An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine. This course was taught entirely in Python, and used libraries such as scikit-learn.
COMP121: Software Engineering
Core principles and ideas that enable development of large-scale software systems, with a focus on programming. Abstraction, modularity, design patterns, specification, testing, verification, and debugging. This course was taught entirely in Java.
COMP138: Reinforcement Learning
Agents that learn, plan, and act in complex, uncertain environments. Varying topics that may include practical successes and challenges of reinforcement learning; common software libraries and packages used to implement and test reinforcement learning algorithms, and advanced topics such as transfer learning and deep reinforcement learning.
COMP160: Algorithms
Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.
COMP116: Introduction to Security
A holistic and broad perspective on cyber security. Attacking and defending networks, cryptography, vulnerabilities, reverse engineering, web security, static and dynamic analysis, malware, forensics. Principles illustrated through hands-on labs and projects, including Capture The Flag (CTF) games.
COMP170: Computation Theory
Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages, including context-free languages and regular sets. Important problems, including the halting problem and language equivalence theorems.
COMP40: Machine Structures and Assembly Language Programming
A deep dive into both high-level programming design and the low-level structure of computing machines. This course was entirely in C and we additionally learned how to read and write Assembly Language.
COMP20: Web Programming
An introduction to techniques and practices for developing web applications. This course covered a comprehensive range of web technologies, including HTML, CSS, JavaScript, SQL, NoSQL, and APIs. It provided in-depth knowledge on how to build and deploy full-scale web applications for diverse use cases.
COMP15: Data Structures
This course offered an intensive exploration of employing diverse data structures and algorithms to tackle significant programming projects in C++. Emphasis was placed on fundamental data structures such as arrays, linked lists, trees, graphs, and hash tables.