Courses

Spring 2025

Computer Science

Machine Learning: Deep Learning

An introduction to machine learning and deep learning: supervised, unsupervised and reinforcement learning, linear models, loss functions and maximum likelihood estimation, and building neural networks in PyTorch.

Spring 2025

Computer Science

Operating Systems

Operating systems theory and practice: processes and threads, CPU scheduling, concurrency and synchronization, virtual memory, file systems, and protection. Course work includes implementing critical parts of a small but functional operating system (Pintos).

Spring 2025

Computer Science

Software-Defined Networking

Software-defined networks make data networks programmable, using software controllers to direct traffic instead of fixed-function routers and switches: router architecture, OpenFlow, SDN controllers, Mininet, consistent network updates, P4 data plane programming, and SDN's role in 5G through network function virtualization.

Fall 2024

Computer Science

Databases

Relational and non-relational databases at Universidad Carlos III de Madrid: the SQL language (data definition, data manipulation, triggers, and database administration), NoSQL data models, MongoDB, and Neo4j with Cypher.

Fall 2023

Computer Science

Computer Networks

How the internet works, layer by layer: application protocols (HTTP, DNS, CDNs), transport protocols (UDP, TCP, flow and congestion control), the network layer (IP, routers, routing, BGP, SDN), the link layer and wireless networks, security, and datacenters.

Fall 2023

Psychology

Industrial and Organizational Psychology

A survey of industrial and organizational psychology, the scientific study of human behavior in the workplace: the psychological bases of work behaviors, cognitions, and emotions, and practices that create a good fit between employees and work demands, from recruiting and selection to performance management, teams, and leadership.

Fall 2023

Computer Science

Mathematical Foundations of Computer Science

An introduction to mathematical reasoning and discrete structures relevant to computer science: propositional and predicate logic, proof techniques including induction, sets, relations, functions, counting, graphs, and number theory.

Fall 2023

Computer Science

Software System Design

Modern software systems design, with an emphasis on designing large-scale systems, weighing common design trade-offs, and tackling system design challenges: non-functional requirements, databases and scaling, API design, distributed systems concepts, architecture patterns, and case studies such as a URL shortener.

Spring 2023

Computer Science

Algorithms

The design of algorithms and the rigorous analysis of their efficiency: algorithmic complexity, greedy algorithms, divide and conquer, dynamic programming, graph algorithms such as minimum spanning trees and shortest paths, network flow, and intractability.

Spring 2023

Psychology

Introduction to Cognitive Psychology

An introductory survey of current research and theory in cognitive psychology, emphasizing relationships among mind, brain, and behavior, from how we find and study a mind to the computational theory of mind.

Spring 2023

Public Health

Introduction to Public Health

An overview of the field of public health: the major causes of morbidity and mortality; the socioeconomic, behavioral, and environmental factors that affect health; the analytical methods used in the field, including epidemiology; and the role of government in protecting the public's health.

Spring 2023

Computer Science

Software Testing and Debugging

A comprehensive study of software testing principles, methodologies, tools, and techniques: coverage criteria, unit and higher-order testing, white-box and black-box testing, property-based and mutation testing, test doubles, GUI and load testing, and debugging.

Fall 2022

Computer Science

Computer System Fundamentals

Modern computer systems from a software perspective: binary data representation, machine arithmetic, assembly language, computer architecture, performance optimization, memory hierarchy and cache organization, virtual memory, Unix systems programming, network programming, and concurrency.

Fall 2022

Math

Discrete Mathematics

Introduction to the mathematics of finite systems. Logic; Boolean algebra; induction and recursion; sets, functions, relations, equivalence, and partially ordered sets; elementary combinatorics; modular arithmetic and the Euclidean algorithm; group theory; permutations and symmetry groups; graph theory.

Fall 2022

Math

Introduction to Probability

Probability and its applications at the calculus level. Probability, combinatorial probability, random variables, distribution functions, important probability distributions, independence, conditional probability, moments, covariance and correlation, limit theorems.

Fall 2022

Electrical Engineering

Mastering Electronics

Fundamental electronic concepts and rules to be able to build and design a wide range of electronic devices. Topics include phase and frequency response, transistors, operational amplifiers, filters, and other analog circuits.

Fall 2022

Computer Science

Object-Oriented Software Engineering

Object-oriented software construction methodologies and their application, centered on a large team project: object-oriented analysis and design, UML, design principles and patterns, refactoring, testing, and version control.

Spring 2022

Engineering

Computational Modeling

Solving real-world electrical and computer engineering problems with computational modeling: mapping engineering tasks to mathematical models, and programming the numerical algorithms needed to work with them in MATLAB, from linear systems and root finding to curve fitting, ODEs, and control systems.

Spring 2022

Computer Science

Data Structures

The design, implementation and efficiency of data structures and their algorithms, including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees and graphs. Other topics include sorting, hashing, Java generics, and unit testing.

Spring 2022

Physics

General Physics II

Principles of electricity and magnetism, wave motion, optics, and modern physics.

Spring 2022

Math

Linear Algebra

Vector spaces, matrices, and linear transformations. Solutions of systems of linear equations. Eigenvalues, eigenvectors, and diagonalization of matrices. Applications to differential equations.

Intersession 2022

Humanities

Uncommon Sense

A practical approach to problem solving for your personal and professional life, the intersession course created by former Johns Hopkins president William R. Brody: open-ended problems, communication, randomness and luck, behavioral economics, and how to think about success.

Fall 2021

Math

Calculus III

Calculus of functions of more than one independent variable. Topics include the analytic geometry of the graphs of either scalar or vector-valued functions, limits, continuity, partial derivatives and their applications, including optimization, multiple integrals, including line and surface integrals, and the big three theorems of Green, Stokes, and Gauss. Includes handwritten lecture notes and typed notes from Stewart's Multivariable Calculus.

Fall 2021

Physics

General Physics I

Basic principles of mechanics as summarized in Newton’s laws of motion and their related concepts, used in conjunction with calculus. Topics include classical mechanics, waves, and fluids.

Fall 2021

Computer Science

Intermediate Programming

C and C++ for intermediate to advanced programming. Covers low-level programming techniques, object-oriented class design, and the use of class libraries. Topics include pointers, dynamic memory allocation, polymorphism, overloading, inheritance, templates, collections, exceptions, and others.