Here I have provided a list of all relevant computer science and business courses at MIT that I have taken to date, up to and including the current semester (Spring 2021). You will also find a short description of each course and any relevant links. Once you are done, feel free to go back to my homepage.
Use the links below to quickly jump to specific courses:
6.01 | 6.004 | 6.006 | 6.009 | 6.031 | 6.033 | 6.036 | 6.042 | 6.046 | 6.179 | 6.S097 | 6.804 | 6.857 | 6.859 | 6.877 | 6.881 | 6.UAT
Spring 2021
6.859: Interactive Data Visualzation
This course provides a thorough look at effective strategies for interactive data visualization, which is increasingly critical in today's world whre data is everywhere. Fundamental concepts including visual encoding channels, effective visualization de-cluttering strategies, and common software packages are covered. Advanced topics include animation, mapping and cartography, exploratory data analysis, and narrative visualization. I completed two key visualization projects at the end of this course: a video game sales interactive visualization, and a kindness tracking appplication with real production data from users. Read the full course description here.
Fall 2020
6.877: Principles of Autonomy and Decision Making
This course provides a rigorous overview of key algorithms, methods and approaches for autonomy and decision making. Topics include a variety of search techniques, Hidden Markov Models, Bayesian inference, temporal networks, path planning, linear, non-linear and convex optimization, and constraint programming. I will release more information soon about the final projet I completed, where I worked with a team to flesh out the details of conflict-directed A* search and its applications to component diagnosis of any logical tree gate model. Read the full course description here.
6.881: Robotic Manipulation: Perception, Planning, and Control
This course provides a rigorous overview of key concepts in robotic manipulation. Due to the COVID-19 pandemic, this iteration of the course was taught virtually and relied heavily on simulated robotic environments. Key topics included geomtric pose estimation, object detection, pick and place in cluttered scenes, sampling-based motion and task planning, inverse dynamics and kinematics via the Jacobian, optimization-based planning, reinforcement learning, and deep learning for perception. I will release more information soon about the final project I completed, where I worked with a team to implement an optimized sampling-based path planning environment with the Kuka iiwa robot in the PyDrake environment. Read the full course description here.
Spring 2020
6.857: Computer and Network Security
This course provides a rigorous theortical introduction to key principles of computer and network security, which are increasingly critical in our connected 21st century society. Key topics include signature verification, secure hashing schemes, two-factor authentication, public and private key cryptography, cryptocurrencies, secure electronic voting (what timing!), and secret sharing. I will release more information soon about the final project I completed, where I worked with a team to design a cryptographically secure sports betting platform. Read the full course description here.
Fall 2019
2.98: Sports Technology: Engineering & Innovation
This course provides a rigorous and applied introduction to the field of technology and sport. It includes technical lectures provided by guest lectures and course instructors, as well as a semester-long hands-on project where students work in groups to deliver a developmental prototype to industry partners. I am becoming increasingly interested in the field of sports analytics and this course serves as a great bridge into that field. Read the full course description here.
Spring 2019
6.033: Computer Systems Engineering
This course provides a high level overview of current approaches to combine the rise of artifical intelligence systems with advances in human cognitive studies. A key objective we looked at was creating a "truly intelligent" AI system, that can learn to learn, learn from few examples and build a complete model of the world around it. Popular strategies inlcuded probabilistic programming, Bayesian inference, one-shot learning and meta-learning. Read the full course description here.
6.046: Design and Analysis of Algorithms
This course provides a high level overview of current approaches to combine the rise of artifical intelligence systems with advances in human cognitive studies. A key objective we looked at was creating a "truly intelligent" AI system, that can learn to learn, learn from few examples and build a complete model of the world around it. Popular strategies inlcuded probabilistic programming, Bayesian inference, one-shot learning and meta-learning. Read the full course description here.
Fall 2018
6.804: Computational Cognitive Science
This course provides a high level overview of current approaches to combine the rise of artifical intelligence systems with advances in human cognitive studies. A key objective we looked at was creating a "truly intelligent" AI system, that can learn to learn, learn from few examples and build a complete model of the world around it. Popular strategies inlcuded probabilistic programming, Bayesian inference, one-shot learning and meta-learning. Read the full course description here.
Spring 2018
6.031: Elements of Software Construction
This course provides a key overview of good programming concepts when building larger software systems. It has three main principles that guide all material: writing code that is:
safe from bugs,
ready for change and
easy to understand.
The course is based on the Java language, but generally applies to all statically checked language. There is an emphasis on test-first programming, version control practices, object-orientated programming and good system design. Read the full course description here.
6.UAT: Oral Communication
This course is a relatively new MIT requirement for computer science majors. As the title suggests, this course outlines the fundamentals of oral communication and public speaking in a technical setting. We cover effective visual content, delivery strategy, talk structures and audience appeal strategies. Read the full course description here.
15.053: Optimization Methods in Business Analytics
This course introduces optimization methods with a focus on modeling, solution techniques and analysis. We cover linear programming, network optimization, integer programming, nonlinear programming, and dynamic programming. There are many applications to logistics, manufacturing, statistics, machine learning, transportation, game theory, marketing, project management, and finance. The end of the course includes a project in which student teams select and solve an optimization problem (possibly a large-scale problem) of practical interest. Read the full course description here.
Fall 2017
6.004: Computational Structures
This course provides a rigorous overview of the full stack of modern computational architecture. We work from basic circuit logic and CMOS gate implementation to increasing levels of abstraction, developing a custom 32-bit ISA, working compiler and ultimately a full working machine. Read the full course description here.
6.009: Fundamentals of Programming
This course emphasizes key concepts in software development using the Python programming language. Topics include function defintions, recursive structures and procedures, hashing, smart memory solutions, code modularity, documentation, unit testing, etc. Read the full course description here.
6.042: Mathematics for Computer Science
This course provides a rigorous introduction to core discrete mathematics concepts that are critical to understanding more advanced CS theory. These topics include predicate logic, inductive reasoning, set theory, graph theory, probability, finite state machines, counting and sorting. Read the full course description here.
Spring 2017
6.006: Introduction to Algorithms
This course provides a rigorous introduction to core CS algorithms, data structures and design principles. Topics ranging from asympotic complexity analysis, sorting, hashing, search trees, shortest path algorithms and NP completeness theory. This course is also built on an understanding of Python. Read the full course description here.
6.036: Introduction to Machine Learning
This course provides a rigorous introduction to core machine learning concepts, including both the theory and application of those concepts. Topics include multilabel classification, linear regression, support vector machines, kernelized regression, unsupervised learning, probabilistic modeling, Bayesian networks, Markov decision processes, deep neural networks and general model evaluation techniques. Read the full course description here.
IAP 2017
6.197: Programming with C and C++
This course provides a short, condensed overview of the C/C++ programming languages. I learned key concepts here like memory allocation, program compilation, array indexing and pointer arithmetic. Read the full course description here.
6.S097: Urban Data Analytics and Machine Learning
Before taking 6.036, I wanted to get a quick introduction to core ML concepts and apply them to real datasets. This course provided exactly that opportunity. Taught by colleague Parth Shah, the course goes over basic regression techniques all the way up to deep learning with imgage data. It culiminated with a final group project, developed in Python on a large urban dataset. View the course website here.
Fall 2016
6.01: Introduction to EECS via Robotics
This course provides a broad overview of some key subjects in EECS. Its four main modules pertain to systems design, circuit analysis, probabilistic modeling and graph search. This course is directed by Adam Hartz, among others, and is built on an understanding of Python. Read the full course description here.