EECS For-Credit IAP Classes (2017)



IAP 2017 For-Credit Subjects: Electrical Engineering and Computer Science



[Updated for IAP 2017]


Structure and Interpretation of Computer Programs
Zombies drink caffeinated 6.001
Mike Phillips
Tue, Thu, Jan 10, 12, 17, 14, 19, 24, 26, 31, Feb 2, 07-09:00pm, 32-044
Pre-register on WebSIS and attend first class.
Listeners allowed, space permitting
Level: U 6 units Graded P/D/F  

Studies the structure and interpretation of computer programs which transcend specific programming languages. Demonstrates thought patterns for computer science using Scheme. Includes weekly programming projects. Enrollment may be limited.

This fast-paced course covers the material in the classic book Structure and Interpretation of Computer Programs -- a class previously known at MIT as 6.001. It uses Scheme to introduce students to principles of computation, and to teach thought patterns for computer science. Students are taught to apply structural, procedural, and meta-linguistic abstraction to solve computational problems. Four projects, one per week, will be assigned and graded.

Prerequisites: some programming experience; high confusion threshold.

Cosponsored by the Student Information Processing Board.
Contact: Mike Phillips,


[Updated for IAP 2017]

Introduction to MATLAB
Orhan Celiker, James Noraky
Mon Jan 30 thru Fri Feb 3, 07-09:00pm, 34-101
Pre-register on WebSIS and attend first class.
Listeners allowed, space permitting
Prereq: None
Level: U 3 units Graded P/D/F   

Accelerated introduction to MATLAB and its popular toolboxes. Lectures are interactive, with students conducting sample MATLAB problems in real time. Includes problem-based MATLAB assignments. Students must provide their own laptop and software.   Great preparation for classes that use MATLAB.

Contact: Orhan Celiker,


[Updated for IAP 2017]


Introduction to Signals, Systems, and Feedback Control -- Preparation for 6.003
Alex Sludds, Nicholas Arango

TWRF, January 10, 11, 12, 13, 17, 18, 19, 20, 24, 25, 26, 27, Feb 1, 11 am - 12 pm, 37-212

Pre-register on WebSIS and attend first class.
Limited to 50 participants.
Listeners allowed, space permitting
Prereq: GIR:CALC1 or permission of instructor
Level: U 6 units Graded P/D/F   

Preparation for 6.003 or 6.011, focusing on several key concepts, including LTI systems, convolution, CT and DT Fourier series and transforms, filtering, sampling, modulation, Laplace and z-transforms, and feedback. Introduction to the fundamental concepts for 6.003, including Fourier and Laplace transforms, convolution, sampling, filters, feedback control, stability, and Bode plots. Problems will be solved by making extensive use of Mathematica and Matlab (both available from MIT IS&T) to help visualize signal processing in the time and frequency domains. Intended to prepare students for 6.003 but could also serve as a refresher for 6.011. 6.01 or permission of the instructor is the only prerequisite.


[Updated for IAP 2017]

Introduction to Electrical Engineering Lab Skills
Use of Lab Equipment Plus MatLab
Gim Hom, Gavin Darcey
Mon/Wed Jan 18, 23, 25, 30, Feb 1, 2:30-4:00 pm, 32-144

Labs (38-600):

There are two lab sections, one immediately after lecture 
and the following day. Students will be assigned to their choice of lab 
section (if possible).
     Section 1: 4:00-7:30p Mon/Wed Jan 18, 23, 25, 30, Feb 1
     Section 2: 2:30-6:00p Tue/Thu Jan 19, 24, 26, 27, Feb 2

Freshmen should sign up by at the url below by 12/1/16 to be guaranteed a spot, 
and preregister on WebSIS. 

Limited to 40 freshmen
Listeners allowed, space permitting
Prereq: None
Level: U 6 units Graded P/D/F   

The course is targeted to freshmen.

Introduces basic electrical engineering concepts, components, and laboratory techniques. Covers analog integrated circuits, power supplies, and digital circuits. Lab exercises provide practical experience in constructing projects using multi-meters, oscilloscopes, logic analyzers, and other tools. Includes a project in which students build a circuit to display their own EKG. Enrollment limited.

Day 1: Intro to Safety, Electronic Components and Theory
Day 2: Use of Measurement Equipment: Multi-meters & Oscilloscopes; Construction & Debugging of Simple Electronic Circuits
Day 3: Integrated Circuits: ECG, Digital ICs & Opamps, Intro to MatLab
Day 4: Digital Systems
Day 5: Video, AD&DA conversion


Contact: Gim Hom,


[Updated for IAP 2017]

Mobile Autonomous Systems Laboratory: MASLAB
Travis Libsack, Mitchell Gu, Erin Main
Lectures Mon Jan 9 thru Jan 13, 10am-12:00pm, 32-144, Lab hours MTWRF noon to 5, 38-501;  final competition  2/2, 3-10pm, 26-100

Pre-register on WebSIS and fill out form at maslab website by December 1
Limited to 50 participants.
No listeners
Prereq: None
Level: U 6 units Graded P/D/F Can be repeated for credit   

Autonomous robotics contest emphasizing technical AI, vision, mapping and navigation from a robot-mounted camera. Few restrictions are placed on materials, sensors, and/or actuators, enabling teams to build robots very creatively. Teams should have members with varying engineering, programming and mechanical backgrounds. Culminates with a robot competition at the end of IAP. Enrollment limited.

The course begins with a week of instruction intended to serve the competitors as they start to design and prototype their systems. The bulk of the course consists of spending time in the lab building robots. This course is a great choice for all of those who would like to get hands-on experience in working on a team project.

Notifications out by Dec 8
Contact: Travis Libsack,


[Updated for IAP 2017]

The BattleCode Programming Competition
Jessica Hyde, Maxwell Mann, James Gilles,  Nicholas McCoy, Aaron Vontell, Jamie Bloxham, Gina Yuan, Elijah Stiles
Mon-Fri, Jan 9-13 17-20, 07-08:00 pm, 1-190, final comp  2/4, Kresge

Pre-register on WebSIS and attend first class.
Limited to 300 participants.
Listeners welcome at individual sessions
Prereq: None
Level: U 6 units Graded P/D/F Can be repeated for credit   

Artificial Intelligence programming contest in Java. Student teams program virtual robots to play BattleCode, a real-time strategy game. Competition culminates in a live BattleCode tournament. Assumes basic knowledge of programming in Java, but resources are available to help students with less experience.   Battlecode is a real-time strategy game. Two teams of virtual robots roam the screen managing resources and attacking each other with different weapons. You will write code to strategically manage your robot army. Contestants learn to use artificial intelligence heuristics, pathfinding, and distributed algorithms.

Battlecode is a great opportunity to have fun and rapidly develop important software skills, such as building a codebase from scratch, managing a large software system, and getting hands-on Java experience. For beginners, our lecture series walks you through creating your first bots and teaches more advanced techniques, and the Newbie Tournament has its own share of the $50,000 prize pool. The class culminates in a final tournament held live in Kresge.

Compete in teams of one to four students. Freshmen are encouraged to participate. Learn more at

Lectures are optional. Knowledge of real-time strategy games or artificial intelligence is not necessary.

Cosponsored by the Student Information Processing Board.
Contact: Jessica Hyde,


[Updated for IAP 2017]


Web Programming Competition

David Wong,  Slava Kim, Kimberli Zhong, Runpeng Liu,, Budmonde Duinkharjav, Hunter Gatewood, Aaron Sipser
Lectures MTWRF Jan 9-12, 17-20, 11 am to 3 pm in 10-250; Jan 17-20  11 am to 3 pm in 4-370
Project Pitches Jan 14, 15, 1-5 pm  in 32-044
Hackathon Jan 20, 7-midnight, 56-154; 
Office Hours MW Jan 9, 11, 18, 23, 25,  7-9 pm, 36-144 and 36-153
Semifinalist Presentations, Feb 1, 8 am to 6 pm, 36-153
Awards Ceremony 2/2, 7-11 pm in 32-123
Pre-register on WebSIS and attend first class.

Limited to 250 participants.
Listeners allowed, space permitting
Prereq: Permission of instructor
Level: U 6 units Graded P/D/F Can be repeated for credit   

Teams of 1-3 compete to build the most functional and user-friendly website over IAP. Sites will be judged by industry experts. Over $15K in prizes will be awarded! Lectures and workshops teach everything you need to make a complete website. Competition will have novice and advanced divisions with separate prizes. Novice topics include web programming basics like HTML, CSS, and jQuery. Advanced topics include Node.js and other back-end frameworks, layout, debugging, and security.

Beginners and experienced web programmers welcome, but previous programming experience recommended. You will receive the instructor's permission automatically by coming to lecture or by passing the first milestone check-off.



[Updated for IAP 2017]

Pokerbots Competition
Sidd Seethepalli

January 11, 13, 18, 20, 23, 4-5 pm, E25-111.  Final presentation Feb 6, 7 PM, 10-250
Pre-register on WebSIS and attend first class.
Limited to 150 participants.
Listeners allowed, space permitting
Prereq: Any programming language; no poker experience needed
Level: U 6 units Graded P/D/F Can be repeated for credit   

Build autonomous poker players and aquire the knowledge of the game of poker. Showcase decision making skills, apply concepts in mathematics, computer science and economics. Provides instruction in programming, game theory, probability and statistics and machine learning. Concludes with a final competition and prizes. Enrollment limited.

Pokerbots is a programming competition where teams of up to four students build autonomous poker players. Learn and apply concepts in mathematics, computer science, and economics not normally taught together in classes. Poker has become a cultural phenomenon: learn the intricacies of the game and showcase your decision making skills. As a game of incomplete information, poker is an interesting problem because of its complex dynamics and real world applications, such as trading. We'll have over $30,000 in prizes from some of the best technology and finance firms.

Five lectures, in which students will learn programming, game theory, bankroll management, probability and statistics, and machine learning, and how to put them all together to make a successful pokerbot.

The final event will be held on 2/6/17, TBD.



[Updated for IAP 2017]



Introduction to Software Engineering in Java

Famien Koko, Aaron Zeng, Jennifer Zhang, Maddie Severance
January 9, 11, 13, 18, 20, 23, 25, 27, MWF, 11 am to 1, 2-190  Office hours TR,  Jan 10 to Jan 31, 11-4 pm, 34-302 and 34-304

Pre-register on WebSIS and attend first class.
Limited to 200 participants.
No listeners
Prereq: basic programming
Level: U 6 units Graded P/D/F   

Covers the fundamentals of Java, helping students develop intuition about object-oriented programming. Focuses on developing working software that solves real problems.  Concepts covered useful to 6.031. Enrollment limited. Contact:


[Updated for IAP 2017]


Introduction to C and C++

Jordan Lucier
Mon-Fri, Jan 17-20,  23-27,  30 to Feb 3, 11am-12:00pm, 54-100, Afternoon office hours

Pre-register on WebSIS and attend first class.
Limited to 100 participants.
Listeners allowed, space permitting
Level: U 6 units Graded P/D/F   

Fast-paced introduction to the C and C++ programming languages. Intended for those with experience in other languages who have never used C or C++. Students complete daily assignments, a small-scale individual project, and a mandatory online diagnostic test. Enrollment limited.

An introduction to programming in C and C++, focusing on using the languages in practice. The class will cover a broad range of C and C++ related topics, ranging from basic operations like input/output and data types, to more advanced tools like parallelism, with special treatment on using pointers. By the end of this course, students will be fully capable of contributing to production-level code, demonstrated in a week-long final project. Prior programming experience is expected.


[Application Deadline for IAP 2017 has passed.]

6.906 (U)

6.936 (G)

StartMIT: Workshop for Entrepreneurs and Innovators

Anantha Chandrakasan

Prereq: None

6 units (P/D/F)

Designed for students who are interested in entrepreneurship and want to explore the potential commercialization of their research project. Introduces practices for building a successful company, such as idea creation and validation, defining a value proposition, building a team, marketing, customer traction, and possible funding models. Students taking graduate version complete different assignments.

For more information and to apply, please go to



[New for IAP 2017]

6.S080 A Brief Introduction to Programming in Python

Adam Hartz,

Office Hours MTWRF Jan 9 to 27, Noon to 3, 32-044

Preregister on WebSIS

No enrollment limit

Listeners permitted.

Prereqs: None

Level: U 3 units Letter Grade

Three-week introduction to programming in Python for students with little or no prior experience.  

Provides experience with the basics of programming in Python through online materials and laboratory exercises. Course materials available at 

This class satisfies the Course 6 Programming Skills requirement if taken before or concurrently with 6.01 or 6.S08.  


[Updated for IAP 2017]


Transcribing Prosodic Structure of Spoken Utterances with ToBI

Stefanie Shattuck-Hufnagel, Alejna Brugos, Nanette Veilleux
January Tuesday/Thursday, 10, 12, 17, 19, 24, 26, 31 and February 2, 11:30 to 1:30, 36-156
Sign up in advance by January 5th, and preregister on WebSIS
Listeners permitted.
Prereq: linguistics, acoustic or psycholinguistics or speech science background suggested
Level: U (6 units)   Graded P/D/F

This course presents a tutorial on the ToBI (Tones and Break Indices) system, for labelling certain aspects of prosody in Mainstream American English (MAE-ToBI). The course is appropriate for undergrad or grad students with background in linguistics (phonology or phonetics), cognitive psychology (psycholinguistics), speech acoustics or music, who wish to learn about the prosody of speech, i.e. the intonation, rhythm, grouping and prominence patterns of spoken utterances, prosodic differences that signal meaning and phonetic implementation.

Contact Stefanie Shattuck-Hufnagel,


[New for IAP 2017]



Introduction to Quantum Computing

Amir Karamlou
MWF January 11, 13, 18, 20, 23, 25, 27, 30, Feb 1, 3, 3-5 PM, 36-155
Prereg on WebSIS and email instructor
Listeners permitted
Prereq: None
Level: U (3 units)  Graded P/D/F

Quantum computation is a growing field at the intersection of physics, computer science, electrical engineering and applied math. This course provides an introduction to the basics of quantum computation. In this course we cover some basic quantum mechanics (the first week), and survey quantum circuits (second week), quantum algorithms (third week), quantum error correction and quantum communication (forth week). We will also have the opportunity explore the 5 qubit IBM quantum processor and implement some of the material that has been discussed in the course. This course is self-contained and does not require any prior knowledge of quantum mechanics.

Contact Amir Karamlou,


[New for IAP 2017]


Deep Learning for Self-Driving Cars

Lex Fridman
January 9 to 13, 17-20, 3-5 pm, 54-100
Preregister on WebSIS and attend first class
(U) 3 units Graded P/D/F
Prereq:  basic Python programming
Max enrollment 350

An introduction to the practice of deep learning through the applied theme of building a self-driving car with shared control between "human" and "machine". This course is centered around two small programming projects where students develop deep learning models that compete against each other in an online driving environment. The course is designed for those who are new to machine learning, but it can also benefit advanced researchers in the field looking for a practical overview of the big picture progress of deep learning as applied to the problem of autonomous driving.
Contact Lex Fridman,

[New for IAP 2017]


Automated Reasoning in AI

Sicun Gao
January 13, 17, 18, 19, 20, 23, 24, 2-3pm, 34-301
(U) 3 units
Pre-register on WebSIS
Prereq:  Familiary with C++ programming, basic calculus and linear algebra.

Automated reasoning (AR) aims to develop computational systems that automate logical reasoning. The course will first cover the basics of propositional and first-order logic, and then focus on core reasoning algorithms and their connections to standard AI techniques, including search, learning, planning, and optimization. Experts from the Toyota Research Institute will give a lecture on the importance of AR in tackling challenging problems in the design process of trustworthy autonomous driving systems.
Contact Sicun Gao,
[New for IAP 2017]


Mobile Virtual Reality Development Challenge

Eswar Anandapadmanaban, Ryan Senanayake, Michael Shumikhin
January 17, 18, 19 , 23, 25, 27, 30, 31, Feb 1, 7 to 9 pm; 32-141, Final Competition 2/2, 7-10, TBD
Apply by December 9th at and preregister on WebSIS
Level: U, 6 units

Prereq: 6.0001, 6.01 or 6.009, or equivalent programming experience | VR Experience is a plus

This class will provide an introduction to development for Virtual Reality through Unity. Students will have the chance to hear from industry experts and use cutting edge technology to build projects for the final competition. Teams of 2-3 will build an immersive VR experience based on the teachings and techniques from the class. The class will conclude with a final judging and demo day and prizes. Enrollment is limited. Previous programming experience is expected. Bring charged laptop to class.


Application Process: Apply with a team of 2-3 and a preliminary project proposal. This is simply an idea for an application they’d like to create.



[New for IAP 2017]


Urban Data Analytics and Machine Learning

Parth Shah, Riju Pahwa
January 17, 19, 24, 26, 31, February 2, 12:30 to 2:00, 34-301
Pre-register on WebSIS and email
Prereq:  6.036 or equivalent, 6.041/6.042
Level: U 3 units.  Graded P/D/F

The class focuses on a machine learning approach to create predictive
models and effectively handle the large datasets common to urban data
On the machine learning side, the class will introduce basic classifiers,
collaborative filtering, neural networks, and other common machine learning
algorithms. However, unlike other machine learning courses, 6.S097 is
application heavy. A large part of the class will also involve
understanding the tools in the space. Some of the libraries we will work
with and you may find yourself working with in this class (such as caffe,
tensor flow, theano, etc.) are used often outside of academia.
The last couple of lectures will be focused on project
work and presentations.
The final project is the capstone of this class. It will be an exciting
opportunity to apply machine learning algorithms on never before seen
datasets, courtesy of Nodal API. Nodal API is a urban data analytics api
that has features ranging from real time bus data to collision and crime
data, from advanced route recommendation to a robust notification system.
The final project will involve augmenting standard machine learning
algorithms to create an urban data application of your choice.
Some examples of projects are as follows:
*1) a randomized route recommendation algorithm to provide a variety of
routes to everyday runners while still retaining the quality of the
recommended routes.*
*2) a popularity score that uses Nodal's user feedback system to rank
*3) a collision readiness system that uses collision data to assist with
fast ambulance response.*
Contact: Parth Shah,
[New for IAP 2017]


Advanced Analog Circuits and Control

Daniel Kramnik

January  (MWF with exceptions)  9, 11, 13, 17, 18, 20, 23, 25, 27, 30, Feb 1, 3, at 2-4 PM, 37-212; Labs TBD
Pre-register on WebSIS and submit pretest on course site by first lecture
Course Site:
Prereq: 6.301 or 6.101 and 6.302 or 2.14 or permission of instructor
Level: U 6 units  Graded P/D/F  

Covers principles of analog circuit design using control-based modeling and analysis techniques. Material is inspired by advanced circuits courses that are no longer taught (eg. 6.331, 6.376). Topics include: feedback in small-signal models, driving point impedances and return ratio analysis, application-specific opamp compensation, linear network theory and directed graphs, thermodynamics and modeling of noise, detailed performance analysis of linear and switching regulators, and discrete-time modeling and control. Students participate in 3 laboratory projects that include power amplifier design, operational amplifier and transconductance amplifier design, and filter syn- thesis. Topics and labs may change depending on student feedback and interest. Background in both analog circuit design and classical control is a prerequisite. Some prior exposure to power electronics (6.131 or 6.334) is also useful. Laboratory experience is assumed. To participate, submit solutions to the pretest posted on the course page by the first lecture.
In order to cover about a semester’s worth of material in a month, we need to move fast. The expectation is that this course will be your primary occupation during IAP. There will be 3 problem sets, 3 lab projects (each about as long as 6.301 lab 2), and a final paper and presentation on a research or design topic of your choice. Collaborative work on labs and problem sets is encouraged to make them move faster and form a 6.S185 community in the short time we have together. We expect many people to be in lab discussing the problem sets and labs during weekdays. A passing grade will be assigned if you complete all of the assignments by the end of IAP.
Recommended Texts
Rahul Sarpeshkar. Ultra Low-Power Bioelectronics. Cambridge University Press, 2011
Marc Thompson. Intuitive Analog Circuit Design. Newnes, 2013
Luca Corradini, Dragan Maksimovic, Paolo Mattavelli, and Regan Zane. Digital Control of
 High-Frequency Switched-Mode Power Converters. Wiley-IEEE Press, 2015

Contact Daniel Kramnik,


[Updated for IAP 2017]


Code for Good
Laura Pang, Elizabeth Wei
Mon-Fri, Jan 9-13, 16-20, 23-27, 30-Feb 2, 3-5 and 7-9 pm, 4-149, Expo 2/3, 12-4,  32-155
Apply by November 18th at website and pre-register on WebSIS.
Limited to 50 participants.
Prereq: programming experience necessary
Level: U 6 units Graded P/D/F Can be repeated for credit    

6.S187 provides opportunities for students to work on software-related projects with nonprofit organizations  and provide technical expertise. Teams of 3-4 students will be matched with a nonprofit that has a project that is of interest to the student. Students will be mentored by a representative from the organization and subject instructors.  Students can sign up as individuals or in groups.

Project listings and detailed information are available on the website:
Apply at


[Updated for IAP 2017]


Rapid Application Development  Competition

Daniela Field

January 17, 18, 20, 23, 25, 27, 30, Feb 1 and 3, 1-2 PM, 34-303.  Labs January 19, 24, 26, 31, Feb 2, 1-2, 34-303
Pre-register on WebSIS and attend first class.
Limited to 20 participants.
Listeners allowed, space permitting
Prereq: Permission of instructor no programming experience necessary; interest in solving real-life problems
Level: U 6 units Graded P/D/F Can be repeated for credit   

Learn how to rapidly develop web and mobile applications using the latest Platform as a Service technology. Students will learn how to build applications starting with the back-end including data structures, security, and domain modeling. Then they will learn about front-end development by building responsive UIs that are easily integrated with web and mobile applications.  Comlpetition will entail building real-life apps to solve problems.  Students should bring their laptops.

Contact: Daniela Field,


[New for IAP 2017]


Introduction to Deep Learning

Nicholas Locascio, Harini Suresh
January 30 to February 3, 10:30 am - 1:30 pm, 34-101
Preregister on WebSIS and attend first class.
Limited to 300.
Listeners allowed
Prereq:  6.008 or 6.036 or 6.034 or 6.867 or equivalent experience in Machine Learning
Level: U, 3 units, Graded P/D/F

Intro to deep learning methods with applications to machine translation, image recognition, game playing, image generation and more. A collaborative course incorporating labs in TensorFlow and peer brainstorming along with lectures. Course concludes with project proposals with feedback from staff and panel of industry sponsors.




[Updated for IAP 2017]

Rapid Prototyping: ISN Soldier Design Contest
Kurt Keville
Tue, Thu, Jan  10, 12, 17, 19, 24, 26, 03pm-04:30pm, NE47-183, labs NE47-183

Pre-register on WebSIS and attend first class.
Limited to 24 participants.
Listeners allowed, space permitting
Prereq: Permission of instructor
Level: U 6 units Graded P/D/F   

Compete in this year's Soldier Design Contest and Rapid Equipment Force Grand Challenge. Attend all sessions for a foundation in the fundamental processes of Rapid Prototyping and build a winning design for prizes.

Jan 10: SDC Contest Overview, project descriptions, interest statements and class scheduling.

Jan 12: Caffeinated Crash course in PCB design (and finish up SDC project description/signups)

Jan 17: Lab equipment training and checkout. Partial equipment list; Various Microscopy (AFM, SEM, TEM), assorted chromatography, basic metal and wood shop, 3-D printing, sundry CVD.

Jan 19: Lincoln Labs RP Facility Tour

Jan 24: US Army Sustainment Lab Tour

Jan 26: Final Project (Powerpoint) Presentations

Contact: Kurt Keville,


[Updated for IAP 2017]


Error-Efficient Computing (Exploiting Failures for Speed and Battery Life on Existing Hardware)
Phillip Stanley-Marbell
Tues to Fri, Jan 10, 11, 12, 13, 17, 18, 19, 20, 10:00am-12:00pm, 36-112, Office hours 4-5, 34-301
Pre-register on WebSIS and attend first class.
Limited to 20 participants.
No listeners
Prereq: Permission of instructor
Level: U 6 units Standard A - F Grading Can be repeated for credit   

At the end of this course, you will be able to: (1) Describe examples of computing systems and applications that exploit tolerance of errors in their inputs, in their algorithm operations, and in their outputs. (2) Use hardware based on the low-power ARM Cortex-M0 and OLED displays, as well as open-source software tools, to illustrate examples of error-efficiency. (3) Differentiate between precision, accuracy, and reliability, to describe the role they play in numerical computations, and to apply these concepts to analysis and design of new computing systems.

Course materials are funded by the MIT-SUTD collaboration office and will be provided for each participant.
Contact: Phillip Stanley-Marbell,