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 (Fall 2018). 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.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.
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.
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.
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.
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.