IAP 2019


IAP 2019 For-Credit Subjects:

Electrical Engineering and Computer Science

See Course 6 Non-Credit Activities here.


[Updated for IAP 2019]


Structure and Interpretation of Computer Programs: Zombies drink caffeinated 6.001

Mike Phillips
Tue, Thu, Jan 8, 10, 15, 17,  22, 24, 29, 31, 07-09:00pm, 32-044
Pre-register on WebSIS and attend first class.
Listeners allowed, space permitting
Prereq: some programming experience; high confusion threshold.
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.

Cosponsored by the Student Information Processing Board.

Web: http://web.mit.edu/alexmv/6.037/
Contact: Mike Phillips, 6.001-zombies@mit.edu


[Updated for IAP 2019]


Introduction to MATLAB

Orhan Celiker
Mon Jan 28 thru Fri Feb 1, 07-09:00pm, 32-123
Office Hours 1-3, 10-250
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.

Web: https://learning-modules.mit.edu/class/index.html?uuid=/course/6/ia18/6.057
Contact: Orhan Celiker, 6.057-staff@mit.edu


[Updated for IAP 2019]                        ]


Introduction to Signals, Systems, and Feedback Control -- Preparation for 6.003

Rhian Chavez
MTWR, January 14, 15, 16, 17, 22, 23, 24, 28, 29, 30, 31, 11 am - 12:30 pm, 34-301
Pre-register on WebSIS and attend first class.
Limited to 30 participants.
Listeners allowed, space permitting
Prereq: linear algebra or differential equations
Level: U 6 units Graded P/D/F    

Preparation for 6.003 or 6.011, focusing on several key concepts, including LTI systems, convolution, correlation, continuous and discrete Fourier series and transforms, filtering, sampling, modulation, Laplace and z-transforms, feedback/feedforward, and Bode plots. Intended to prepare students for 6.003 but could also serve as a refresher for 6.011. Course will include 3 problem sets and no exam.

Contact: rhianc@mit.edu.


[CANCELLED for IAP 2019]


Introduction to Electrical Engineering Lab Skills
Use of Lab Equipment Plus MatLab

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.

Web: http://mit.edu/6.117

Contact: 6.117@mit.edu


[New Number for IAP 2019]

6.145 (Previously 6.S080)

Brief Introduction to Python 

Adam Hartz
January 7th to January 25th, MWF, 1-3, 32-044
LeveL; U  3 units  Letter Grade

Three-week introduction to programming in Python for students with little or no prior experience, designed to be taken prior to 6.01 or 6.08. Provides instruction in the basics of programming in Python through online materials and in-class laboratory exercises.

Contact htz@mit.edu.



[CANCELLED for IAP 2019]


Mobile Autonomous Systems Laboratory: MASLAB

Andrew Reilley, Kevin Morrow, Travis Libsack, Mitchell Gu
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. 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. Enrollment is limited.

Web: http://maslab.mit.edu/
Contact: maslab-staff@mit.edu


[Updated for IAP 2019]


The Battlecode Programming Competition

Jordon Docter, Stephanie Fu, Joshua Gruenstein, Adriano Hernandez, Yong Hui Lim, Kelvin Lu, Arvid Lunnemark, Diana Ma, Joshua Segaran, Benjamin Spector, Emily Wang, Ivy Wang, Geoffrey Wang, Yanni Wang
Mon-Fri, Jan 7-11, 14-18, 07-9:00 pm, 32-123, final competition  Feb 2, 4pm, TBA
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 Python, Java and Javascript. 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, 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 (with dinner) 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 battlecode.org. Lectures are optional. Knowledge of real-time strategy games or artificial intelligence is not necessary.

Web: http://battlecode.org
Contact: Joshua Segaran,  battlecode@mit.edu


[Updated for IAP 2019]


Web Lab: A Web Programming Class and Competition

Aaron Sipser,  Shannen Wu, Cynthia Liu, Jessica Tang, Cory Lynch, Andrew Chen, Zachary Collins, Rupayan Neogy, Alex Chan
Lectures MTWRF Jan 7-11, Jan 14-18,  11 am to 3 pm 10-250
Office Hours MW Jan 7, 14, 16, 22, 23, 25, 7-9 pm, 32-044
Awards Ceremony 1/31, 7-10 pm, 34-101
Pre-register on WebSIS and attend first class.
Limited to 250 participants
Listeners allowed, space permitting
Prereq: None
Level: U 6 units Graded P/D/F Can be repeated for credit    

Students for teams of 1-3 people and learn how to build a functional and user-friendly website. Lectures and workshops teach everything you need to make a complete website. Advanced topics include React.js, layouts, and security. All teams eligible to enter in competition. Sites will be judged by industry experts. Over $20K in prizes will be awarded!

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.

Web: http://weblab.mit.edu
Contact:  weblab-staff@mit.edu


[CANCELLED permanently]


Introduction to Programming Using Python

This class was discontinued after IAP 2016 and will not be offered in the future.
Please see 6.145.


[Updated for IAP 2019]


Pokerbots Competition

Jack Serrino, Nilai Sarda, David Amirault
January 9, 11, 16, 18, 3:30 to 5 pm, 4-370.   Final presentation Feb 1, 7 PM,  E25-111.
Pre-register on WebSIS and attend a class in the first week
Limited to 150 participants.
Listeners allowed, space permitting
Prereq:  Any programming language, recommend Python, C/C++, or Java; no poker experience needed
Level: U 6 units Graded P/D/F Can be repeated for credit    

Build autonomous poker players and acquire 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. 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 $20,000 in prizes from some of the best technology and finance firms.

There will be 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.

Web: http://pokerbots.mit.edu/
Contact:  pokerbots@mit.edu


[Updated for IAP 2019]


Introduction to Software Engineering in Java

Jack Choi, Julia Lee
January 9 to 2/1, MWF, 11-1pm, 2-190
Office hours TR,  Jan 8 to 31, 11-4 pm, 34-303
Pre-register on WebSIS and attend first class.
Limited to 150 participants.    No listeners
Prereq:  6.0001, 6.01, 6.009 or other intro programming class
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: 6178-staff@mit.edu.


[Updated for IAP 2019]


Debugging with C

Rodrigo Tocali
January 9, 11, 16, 18 to January 31, 4-5 pm, E25/111.  Plus afternoon office hours
Pre-register on WebSIS and attend first class.
Limited to 100 participants.
Listeners allowed, space permitting
Prereq: 6.031 or 6.009/6.006; some knowledge of C recommended
Level: U 6 units Graded P/D/F

This class will focus on learning to how to effectively debug unknown code, learn tools to use when debugging, and help students formalize their own process of debugging. It will be taught using C, though skills should be transferable to any language and some knowledge of C is recommended.


Contact retocali@mit.edu


[Updated for IAP 2019]

6.906 (U) 
6.936 (G)

StartMIT: Your On-Ramp to the Entrepreneurial World @MIT

Bill Aulet
January 7-23, 9am to 3:30 pm, 26-100
Prereq: None
6 units (P/D/F)  (Optional)

Open to any student on campus who is interested in learning more about entrepreneurship, and wants to explore the potential commercialization of a research project or any other venture. 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.
For more information and to apply, please go to https://startmit.mit.edu/ by November 19, 2019.


[Canceled for IAP 2019]


Project Engineering

Prereq: 6.911
4 units, P/D/F

Students attend a four-day off-site workshop where an introduction to basic principles, methods, and tools for project management in a realistic context are covered. In teams, students create a plan for a project of their choice in one of several areas, including aircraft modification, factory automation, enterprise software, flood prevention engineering, solar farm engineering, among others. Develops skills applicable to the management of complex development projects. Topics include cost-benefit analysis, resource and cost estimation, and project control and delivery, which are practiced during an experimental, team-based activity. Case studies highlight projects in both hardware/construction and software. Preference to students in the Bernard M. Gordon-MIT Engineering Leadership Program.


[Cancelled for IAP 2019]


A Brief Introduction to Programming in Python

This class has been renumbered.  Please see 6.145.


[New for IAP 2019]


Introduction to Consulting

Suji Balfe, Christie Hong, Cindy Yang, Kelly Zhang
Monday, January 14th to Friday, January 25th (not January 21st)), 1-2 pm, 32-124
Preregister on WebSIS
Enrollment limited to 50
Listeners permitted, space permitting
Prereq: none
Level: U (3 units)   Graded P/D/F

This course offers an in-depth overview of the consulting industry and covers the recruitment and interview process for major management consulting firms. Students will receive extensive case practice through examining sample cases and conducting mock interviews. Behavioral interviews, networking skills, and public speaking will also be covered. The course will conclude with a casework simulation project in which students will work in teams on different cases and present a final deliverable.

Contact consulting19@mit.edu.


[Updated for IAP 2019]


Transcribing Prosodic Structure of Spoken Utterances with ToBI

Stefanie Shattuck-Hufnagel, Alejna Brugos, Nanette Veilleux
January Tuesday/Thursday, 8, 10, 15, 17, 22, 24, 29, 31,  11:30 am to 1:30 pm, 34-304
Sign up in advance by January 7th, 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.

Cosponsored with HST.

Contact Stefanie Shattuck-Hufnagel, sshuf@mit.edu.


[New for IAP 2019]


Matrix Tricks for Statistics and Data Science

Farrell Eldrian Wu, Basil Saeed, Yang Yan
MWF 1/7/19-2/1/19, 7:30-10:00pm;34-301
Enrollment Limited to 30
Prereq: 18.02, 18.600, or 6.041A, 18.06 strongly recommended.
Level: U (6 units) Graded P/D/F

This course reviews matrix calculus and linear algebra with a focus on the methods from these subjects to statistics and data science. It is divided into four one-week modules that explore a particular topic in detail, highlighting the role of linear algebra in the subject’s theoretical development. The class provides extensive practice in the use of both basic and advanced matrix operations and concepts towards data science through theoretical problem sets. This class is intended to prepare students for classes in statistics and machine learning that involve heavy work with vectors and matrices, such as 6.437, 6.867, 18.655, 14.381, and 17.800, but is also helpful for classes such as 18.650, 6.438, 14.32, and 17.835.



[Cancelled for IAP 2019]


IAP in Sri Lanka: Programming Enterprise Applications with Ballerina & WSO2 in Sri Lanka

Prof. Saman Amarasinghe, Dr. Sanjiva Weerawarana
Enrollment Limited to 10 participants: Advanced Sign-Up Required
Priority Deadline by Nov. 2, rolling acceptances thereafter
Prereq: Programming Experience
Level: U  6 units P/D/F


Ballerina is a concurrent, transactional, strongly typed programming language. It provides all the functionality expected of a modern, general-purpose programming language, but it is designed specifically for integration: it brings fundamental concepts, ideas and tools of distributed system integration into the language with direct support for providing and consuming network services, distributed transactions, reliable messaging, stream processing, security, and workflows.

This class will cover the following topics:
Introduction to Ballerina
Architecture of scalable enterprise systems
Enterprise application security
Writing microservices
APIs and integrating applications
Scalable deployment architectures

Students will develop a practical scale system through the course of the class with the intention of a future completed version going live. Students will gain first-hand experience of Sri Lanka where this programming language is being developed. This immersive experience brings MIT students and Sri Lankan students together for an intense month of study and exploration. Explore Sri Lanka’s heritage, culture, natural beauty, and people. Through this MISTI IAP program, you learn cross-cultural communication by living and working together with Sri Lanka students, and software engineers. As part of the team building and country orientation, the program starts of by visiting key cultural, heritage, historic, and wildlife sites in Sri Lanka. All expenses covered by sponsors. More at https://goo.gl/Ei34Qj

Sponsor(s): Center for International Studies, MIT India Program, Electrical Engineering and Computer Science
Contact: Mala Ghosh, E40-423, (617) 452-2479, mghosh@mit.edu


[Updated for IAP 2019]


Introduction to Quantum Computing

Amir Karamlou, Megan Yamoah, Francisca Vasconcelos
Jan 7, 9, 11, 14, 16, 18, 23, 25, 28, 30, 1, 3-5pm Room 36-155
Preregister on WebSIS and email instructor
Leaners permitted
Prereq:  None
(U) 6 units Graded P/D/F

Quantum computation is a growing field at the interesction of physics, computer science, electrical engineering and applied math. This course provides an introduction to the basics of quantum computation. Specifically, we will cover some fundamental quantum mechanics (first week), survey quantum circuits (second week), and introduce important quantum algotrithms (third week). In the final week we will survey advanced topics such as quantum error correction and quantum communication as well as applications to fields ranging from machine learning to chemistry. This course is self-contained and does not require any prior knowledge of quantum mechanics. 

Contact Amir Karamlou, karamlou@mit.edu


[Updated for IAP 2019]


How to Nail a Technical Interview: Methods for Quantitative Problem Solving

Tim Plump
January 7, 9, 11, 14, 1-2:30, 4-237
Sign up on Websis and email the instructor
Limited to 50 participants
Listeners allowed, space permitting
Prereq: None, but working knowledge of calculus, basic probability, combinatorics, and statistics helpful.
Level U, 3 units, Graded P/D/F

This course will cover the many of the most common techniques and topics that come up on (technical) quantitative and software interviews. It will provide instruction in solving tricky interview questions about statistics, probability, algorithms, game theory, and various topics in mathematics. Focuses on techniques behind the solutions, rather than the theorems themselves. These include reducing problems to simpler ones, symmetry, recursion and induction, flipping problems upside down, spotting the difficulty, and what to do when you’re stuck.  Provided interview questions must be completed to receive credit. 

 *Attendance Required*

Contact timplump@mit.edu


[New for IAP 2019]


Deep Reinforcement Learning

Lex Fridman
January 22nd to January 25th, 3-4:30 pm, 54-100
Preregister and attend first class
Limited to 300 participants
Listeners allowed, space permitting
Prereq: Some programming experience; Python or Javascript preferred
Level: U 3 units Graded P/D/F 

This course covers the fundamentals of deep reinforcement learning: the use of neural networks in the context of reinforcement learning in order to build agents that takes action based on raw sensory information extract from the environment they operate in. The course is designed for those who are new to deep learning and reinforcement learning, but it can also benefit advanced researchers in the field looking to build intuition about fundamental concepts underlying the application of deep neural networks in a reinforcement learning context. Listeners are welcome.

Contact: fridman@mit.edu


[NEW for IAP 2019]


Crash Course for 6.006 Intro to Algorithms in 6+0+0+6 Hours

Ivan Ferreira Antunes Filho, Justine Jang, Alap Sahoo, Courtney Guo, Preksha Naik, Stef Ren, Rose Wang
January 9, 14, 16, 23, 28, 30, 7-9, 1-190
Pre-register on WebSIS and attend first class.
Listeners allowed, space permitting
Prereq: some knowledge of proofs
Level: U 3 units Graded P/D/F 

An overview of topics covered in 6.006, taught by experienced TAs, geared toward people who have some proofs knowledge, and want to prepare to take the class in the Spring, get some experience for algorithm questions in interviews, or who are curious about learning what all the hype is around algorithms. We will be covering topics like sort, data structures, hashing, graph search, and dynamic programming.

Contact ivanaf@mit.edu


[New for IAP 2019]


Human-Centered Artificial Intelligence

Lex Fridman
January 28th to February 1, 3-4:30 pm, 54-100
Preregister and attend first class
Limited to 300 participants
Listeners allowed, space permitting
Prereq: Some programming experience; Python or Javascript preferred
Level: U 3 units Graded P/D/F 

We will explore how deep learning approaches can be used for perceiving and interpreting the state and behavior of human beings in images, video, audio, and text data. The course will cover how convolutional, recurrent and generative neural networks can be used for applications of face recognition, eye tracking, cognitive load estimation, emotion recognition, natural language processing, voice-based interaction, and activity recognition. The course is open to beginners and is designed for those who are new to deep learning, but it can also benefit advanced researchers in the field looking for a practical overview of deep learning methods and their application.

Contact: fridman@mit.edu


[Updated for IAP 2019]


Deep Learning for Self-Driving Cars

Lex Fridman

January 7, 8,  9, 10, 11, 14, 15, 16, 17, 18, 3-4:30, 54-100
Preregister on WebSIS and follow instructions at http://selfdrivingcars.mit.edu

(U) 3 units Graded P/D/F  Can be repeated for credit
Prereq:  some programming experience; Python or JavaScript preferred
Max enrollment 300

This class is an introduction to the practice of deep learning through the applied theme of building a self-driving car. It is open to beginners and 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 deep learning methods and their application. This 2019 iteration of the course will present new content, new guest speakers, and new competitions, so it is targeted to both new students and those who took the course before. Listeners are welcome.

Contact Lex Fridman, fridman@mit.edu


[NEW Subject for IAP 2019]


Runescape, a History

Mendel Keller

Tuesdays and Thursdays, January 15 to 31, 12:30 to 2 pm, TBA

Preregister on Websis 
(U) 3 units Graded P/D/F
Prereq: Interest in MMORPGs


Back in 2005, one fantasy MMO game swept the internet, second in popularity only to WoW. For four years, Runescape reigned supreme, and then slowly faded into a memory. In this course we will investigate what made the game so popular, what went so wrong, and what has been going on with the game since. We will be taking a holistic approach, looking at: combat, gameplay, quests & lore, graphics, marketing, in game economy, and the constant fight against cheating. With the recent release of Runescape mobile, the game has seen a resurgence of interest, making this an opportune time to take a second look at this favored childhood pastime. Will the new generation of child gamers relive the nostalgia of trekking from Lumbridge to Falador?

Contact chiller@mit.edu


[NEW for IAP 2019]


Biological Digital Circuit Design

Sebastian Palacios

January 28, 29, 30, 31, February 1, 11am-1pm Location TBA Preregister on Websis (U) 3 units Graded P/D/F No Prereq Max enrollment 25

Introduces concepts and techniques used to design and engineer digital circuits and digital computation in living cells. Covers material in molecular and cell biology, synthetic biology, digital design, and discusses implementations in bacteria, yeast, and human cells. Instructor-assisted lab exercises provide computer-based practical experience with biological digital circuit design, cell engineering, and genome editing using CRISPR/Cas9. This course does not require prior knowledge of biology or digital circuit design.

Contact: spalacio@mit.edu


[New for IAP 2019]




Introduction to Julia


Alan Edelman

January 29 to Feb 1, 1-3 pm, 4-231

Preregister on Websis and attend first class

Listeners allowed, space permitting

Prereq: familiarity with programming

(U) 3 units Grade P/D/F

Max enrollment 25


Undergraduate introduction to Julia including machine learning, and optimization. We cover why Julia can be fast and easy to use.  Course includes problem-based Julia assignments. Students must provide their own laptop. Great preparation for classes that involve numerical computing.


Contact edelman@mit.edu.


[Cancelled for IAP 2019]


Introduction to R for Data Science

Olivia Brode-Roger
Preregister on Websis 
(U) 6 units Graded P/D/F
Prereq:  some programming experience
Max enrollment 50

This course will introduce you to the basics of data analysis in R. The focus of the course is on doing: getting insights ready and published. By the end of the class, you will be able to run analyses quickly, generate reports, and create beautiful web-apps! There will be a guided homework assignment every week, each building to a final project: a web app. Data will be provided for these, but you are encouraged to bring your own. To get the most out of this course, students should come in being familiar with basic programming concepts such as variables and functions. There is no need to install software ahead of time.

Contact: Olivia Brode-Roger, nibr@mit.edu


[Cancelled for IAP 2019]


Artificial General Intelligence

Lex Fridman
Preregister on Websis and follow instructions on http://agi.mit.edu
(U) 3 units Graded P/D/F
Prereq:  some programming experience; Python or JavaScript preferred
Max enrollment 300

This class takes an engineering approach to exploring possible research paths toward building human-level intelligence. The lectures will introduce our current understanding of computational intelligence and ways in which strong AI could possibly be achieved through supervised and unsupervised learning, brain simulation, artificial life, reinforcement learning in hyper-realistic simulation and virtual worlds. Additional topics will include AI safety and ethics. Projects will seek to build intuition about the limitations of state-of-the-art machine learning approaches and how those limitations may be overcome. The course will include several guest talks. Listeners are welcome.

Contact: fridman@mit.edu


[Canceled for IAP 2019]


Developing iOS 11 Apps with Swift

William Caruso, Dylan Modesitt
Register on Websis
Enrollment Limited to 25
Prerequisite:  prior programming experience (6.009 or permission of instructor)
Level: U 3 units Graded P/D/F 

Learn to create apps for iOS! Tools and APIs required to build applications for the iPhone and iPad platforms using the iOS SDK. User interface design for mobile devices and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management, Swift programming language. Other topics include: localization, accessibility, object-oriented database API, animation, mobile device power management, multi-threading, networking, and performance considerations. A Mac with Xcode installed is required and must be brought to class every day.

Contact William Caruso, wcaruso@mit.edu


[Updated for IAP 2019]


RACECAR (Rapid Autonomous Complex-Environment Competing Ackermann-drive Robotics)

Sertac Karaman, Michael Boulet, Ken Gregson
Lectures: 1/9-2/1, MWF 3-7pm Room 32-044
To sign up, preregister on websis and send an e-mail by Jan 5 to racecar-iap-course-subscribe@mit.edu with a brief description of your programming/robotics experience.
Limited to 30 participants.      No listeners
Prereq: None
Level U 6 units graded P/D/F.

Modern robots tend to operate at slow speeds in complex environments, limiting their utility in high-tempo applications. In the RACECAR course, you will be tasked with pushing the boundaries of unmanned vehicle speed. Participants will work in teams of 4-5 to develop dynamic autonomy software to race a converted RC car equipped with LIDAR, a stereo camera, an inertial measurement unit, and embedded processing around a large-scale, "real-world" course. Working from a baseline autonomy stack, teams will modify the software to increase platform velocity to the limits of stability. The course culminates with a timed competition to navigate a racecourse. Classes will provide lecture overviews of relevant algorithms and lab time with instructor-assisted development. Participants must attend every class and should plan on 4-10 hours per week of self-directed development. Students must have experience with software development. Past exposure to robotics algorithms and/or embedded programming will be useful. 

Contact boulet@ll.mit.edu


[New for IAP 2019]


Wi-Fi 101

Prof. Steven B. Leeb, Patrick Kane (Cypress Semiconductor)
January 22, 23, 24, 9-5 pm, 38-501 Engineering Design Studio
Enrollment Limited: 30 participants
Advanced Sign-Up Required
Participants must attend all sessions
Prereq: Short readings before seminar meetings, Permission of Instructor Required
Level: U  3 units Graded P/D/F   

This will be a 3 day in-depth class focused on creating an IoT device using a Cypress WICED
Wi-Fi development kit and shield. Students will receive instruction, complete exercises, and
homework to learn about the WICED Wi-Fi development environment and system, and the
basics of Wi-Fi and the TCP/IP Network Stack, including TLS security. Exercises involve
interacting with the outside world using buttons, LED's, displays, and analog sensors for
temperature, humidity, and ambient light. "Cloud" applications protocols for communication
will be discussed. Each student will build an IoT weather station that senses local weather
conditions and publishes them on the web. Students will build a final project of their own
design that involves sensor(s) and actuators and pushing sensor data to a cloud client. Some
experience with C helpful.
Email sbleeb@mit.edu for permission before registering on WebSIS. Registering for this course is a
FIRM commitment to attend; others will be turned away to make room for you.
Sponsor(s): Electrical Engineering and Computer Science

Contact sbleeb@mit.edu.


[Updated for IAP 2019]


Code for Good

Victoria Juan
Dates: Jan. 7-11, 14-18, 22-25, 28-31
Times: 3-5pm MTW, 7-10pm Thurs; Friday 8-9 pm dinner; Rooms TBA 
Project Expo: Jan. 31 12-3pm
Apply by November 16th at website and pre-register on WebSIS. 
Limited to 50 participants. 
Prerequisite: programming experience necessary 
Level: U 6 unites 
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-5 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 available on the website: http://codeforgood.mit.edu/programs/iap-class/     Apply at http://codeforgood.mit.edu/apply

Contact: codeforgood@mit.edu


[CANCELLED for IAP 2019]


Site Reliability Engineering: Keeping Cloud-Based Products Running

Raymie Stata ‘90, Course 6 ScD 1996; David Chaiken, Course 6 ScD 1994
Enrollment Limit:  24
Register at Websis and email instructor
Attendance: Participants must attend all sessions. Afternoon office hours are optional.
Prereq: Python, shell (e.g. bash), ssh. Bring your laptop!
Level: U 3 units Graded P/D/F

Do you think you know what it takes to build the next big Internet sensation? Just about every Internet company (e.g. Google, Amazon, Facebook, Netflix, Twitter, LinkedIn) has a large team of Site Reliability Engineers (SREs) who ensure that each company’s cloud-based products work. This one-week course provides a hands-on introduction to Site Reliability Engineering, the discipline practiced by the people who keep your favorite Internet services up and running. We will discuss the reasons why Site Reliability Engineering exists and subdisciplines, including Event Management, Incident Management, Configuration Management, and Problem Management. The course concludes with a description of advanced topics such as security and people-management aspects of Site Reliability Engineering.

The lab section of the course uses the running example of a Slack chatbot to provide experience with capabilities such as monitoring, alerting, feature flags, continuous deployment, metrics, and analytics. Advanced projects and the opportunity to demo to the rest of the class are available for particularly enthusiastic participants. Some experience with Slack, Kubernetes, Docker, and Amazon Web Services is helpful, but we’ll provide a firehose to teach lab participants what you need to know to get by.      URL: https://seoveriap.blog/

Contact info@seoveriap.blog


[New for IAP 2019]


Mobile Edtech: MIT IAP Hackathon

Eric Klopfer, Hal Abelson, Erdin Beshimov 
January 7th and 8th, 9am to 4 pm, 4-231
January 14th and 22nd, 1-3pm, 4-231
January 31st, 1-4pm, 4-231
Plus weekly mentor time.
Enrollment limit: 35 students
Register at Websis and enter information at https://goo.gl/forms/Jc38jlaIyS5B77Ng2
Attendance: Mandatory unless previously arranged with instructors
Prerequisites::  solid development skills or educational design skills
Level:  U  6 units  Graded P/D/F

While mobile technologies have permeated many parts of society around the world, and even become the primary mode of Internet access in many communities and countries, the mindset for much of education remains attached to the desktop. Can you design quality mobile-first educational experiences for underserved or unserved audiences domestically and abroad?  Can you imagine new ways to integrate the affordances of mobile technologies - from Augmented Reality to voice - to make learning via these devices an asset rather than a compromise?  If yes, you will be among the new generation of edtech winners.

The MIT IAP Mobile Edtech Hackathon will foray into these questions. But the foray will not be theoretical. Edtech Hackathon student-innovators will design and develop working prototypes of an edtech mobile app.  Student innovators will test their prototypes and receive feedback through industry connections and with active learners in existing programs. If this gives participants escape velocity to become an edtech entrepreneur, everyone wins.

Students may choose to use any mobile development environment that they think is appropriate.  For those that don’t have the requisite programming background for other platforms, we’ll offer a one-day workshop in MIT App Inventor (although developers need not use App Inventor for their work). The prize for the winner of the hackathon will be a scholarship to the MIT

Innovation & Technology Bootcamp in Tokyo that will be held on March 23-28, 2019. Other opportunities will be a part of the class as well.

Expect to dedicate 80 hours during the IAP. The hackathon will begin with two 8-hour days, followed by 12-15 hours per week of independent work. Each of the two middle weeks will include team meetings with mentors, and one whole-class meeting.  The hackathon will complete with an 8-hour demo day and review of the prototypes.

Contact klopfer@mit.edu.


[Updated IAP 2019]


App Development without Code

Daniela Field
January 21 - February 1, MWF 3pm-4pm, Room TBA
Sign up on websis and at url below by January 16th
Limited to 25 people

Learn the fundamentals of building apps without code. In this course, aspiring developers will be equipped with the tools necessary to build their own web and mobile applications. Completing this course is the best preparation for learning the fundamentals of app development and learn the latest low-code technologies on the market.


[Updated for IAP 2019]


Introduction to Deep Learning

Alexander Amini, Ava Soleimany
1/28-2/1 1-4pm, Room 32-123
Preregister on WebSIS and attend first class.
Limited to 250
Listeners allowed
Prereq: 18.01 or equivalent; programming experience in Python is helpful but no necessary
Level U, 3 units, Graded P/D/F

Stuents will gain foundational knowledge of deep learning algorithms and get practical experience in building neural networks in TensorFlow. Course concludes with project proposals with feedback from staff and panel of industry sponsors. Prerequisites assume elementary calculus (i.e. taking derivatives and applying the chain rule) and basic linear algebra (i.e. matrix multiplication), we'll try to explain everything else along the way! Listeners are welcome!

URL: http://introtodeeplearning.com

Contact: introtodeeplearning@mit.edu


[New for IAP 2019]


Deep Learning AI for Arts, Aesthetics, and Creativity

Ali Jahanian
Limited to 40 participants
Register on Websis and email ali-design@csail.mit.edu to sign up
Listeners allowed, space permitting
Prereq: python
Level U, 3 units, Graded P/D/F

In this course we will explore techniques in AI, specifically deep learning for creating art and Visual Design.  

Contact ali-design@csail.mit.edu


[NEW for IAP 2019]


FPGA Digital Design Competition

Gim Hom, Joe Steinmeyer
Lectures Monday through Thursday, January 7 to January 17th, 1-3 PM, 32-144
Labs Thursday, January 7 to January 29th, 3-5, 38-600
Preregister on Websis
Limited to 40 participants
Listeners allowed, space permitting
Prereq: 6.004 or 6.111
Level U 6 units, Graded P/D/F

The design competition (teams of 2-3 students) consists of using a modern SOC consisting of an FPGA and processor along with sensors and other peripherals to design and implement a working digital system. Pre-reqs. is 6.004 or 6.111 or permission of he instructor.  This an experimental, new course offering a sense of adventure to explore digital system design beyond typical course work during IAP. Each project team will be provided with a PYNQ-Z2 FPGA and other material for their project. 
Extra lectures will be provided to those student with limited FGPA experience. Lectures are Mon-Thu  1-3p for two weeks starting Mon January 7. Labs will be open 3-9p with staff available 3-6 pm. Awards will be given to innovative and engaging projects. Engineers from Apple, Google and Xilinx will be on hand and involved at various points in the course. 
Contact gim@mit.edu.


[Cancelled for IAP 2019]


Introduction to LabVIEW: Program the World!

Hope Harrison
Pre-register on WebSIS and email hopeful@mit.edu
Listeners permitted
Prerequisites: None
Level: U  6 units  P/D/F

This class will teach you the basics of programming in LabVIEW which is a language for controlling hardware in automated scientific experiments and engineering - where programming meets the real world! We will begin with basic programming concepts and how to do them in LabVIEW such as math operations, for/while loops, etc, then quickly move into LabVIEW specific things like event structures, and then talk about hardware communication, file I/O, etc. Throughout the class, we will discuss how to use programming best practices in everything. At the end of the class you will take the Certified LabVIEW Associate Developer (CLAD) and Certified LabVIEW Developer (CLD) exams, which will give you internationally recognized certification to put on your resume.

Contact Hope Harrison, hopeful@mit.edu