Exploring Biodiversity

In this course, we will take a leap back in time to the origins of life, discuss the evolution of major organismal lineages, and investigate physiology and cellular processes. Through the lectures, labs, and in-class discussions, students will be able to explain how scientific knowledge is generated. In lab, students will explore biological diversity, physiology, and cellular dynamics, with a focus on gaining skills in scientific inquiry, including hypothesis development, experimental design, collecting and analyzing results, and scientific writing.

Software Design & Development

Building large software systems introduces new challenges to software development. Appropriate design decisions and programming methodology can make a major difference in developing software that is correct and maintainable. In this course, students will learn techniques and tools that are used to build correct and maintainable software, improving their skills in designing, writing, debugging, and testing software. Topics include object-oriented design, testing, design patterns, and software architecture. This course is programming intensive.

Engineering Robotic Systems

This intermediate-level course presents a hands-on introduction to robotics. Each student will construct and modify a robot controlled by an Arduino-like microcontroller. Topics include kinematics, inverse kinematics, control-theory, sensors, mechatronics, and motion planning. Material will be delivered through one weekly lecture and one weekly guided laboratory. Assignments include a lab-preparatory homework, guided lab sessions, and out-of-class projects that build upon the in-class sessions.

Algorithms

How does Google Maps find the best route between two locations? How do computers help to decode the human genome? At the heart of these and other complex computer applications are nontrivial algorithms. While algorithms must be specialized to an application, there are some standard ways of approaching algorithmic problems that tend to be useful in many applications. Among other topics, we explore graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, and network flow.

Operating Systems

An introduction to the issues involved in orchestrating the use of computer resources. Topics include operating system evolution, memory management, virtual memory, resource scheduling, multiprogramming, deadlocks, concurrent processes, protection, and design principles. Course emphasis: understanding the implications of OS design on the programs you run and write (i.e., on their security, performance, etc.). This course is programming intensive.

Intro II: How Organisms Devel

Developmental biology is a topic full of fantastic questions: how does a single egg transform into an organism with many cells and tissue types? What controls gene expression? What is the interplay between environmental signal and plant hormones? In this course plant and animal development will be studied at the level of genes, cells and tissues, in model organisms such as sea urchins, ferns, chicks and lilies. The laboratory is at the heart of the course, and classwork is designed around the live material students will meet each week.

Machine Learning

How does Neflix learn what movies a person likes? How do computers read handwritten addresses on packages, or detect faces in images? Machine learning is the practice of programming computers to learn and improve through experience, and it is becoming pervasive in technology and science. This course will cover the mathematical underpinnings, algorithms, and practices that enable a computer to learn. Topics will include supervised learning, unsupervised learning, evaluation methodology, and Bayesian probabilistic modeling.
Subscribe to