IAP 2018


IAP 2018 For-Credit Subjects:

Electrical Engineering and Computer Science

See Course 6 Non-Credit Activities here.


[Updated for IAP 2018]


Structure and Interpretation of Computer Programs:
Zombies drink caffeinated 6.001

Mike Phillips
Tue, Thu, Jan 9, 11, 16, 18,  23, 25, 30, Feb 1, 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.
Web: http://web.mit.edu/alexmv/6.037/
Contact: Mike Phillips, 6.001-zombies@mit.edu


[Updated for IAP 2018]


Introduction to MATLAB

Orhan Celiker, James Noraky
Mon Jan 29 thru Fri Feb 2, 07-09:00pm, 32-123
Office Hours 1-3, 34-301
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



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

Alex Sludds, Nicholas Arango
MTWR, January 9, 10, 11, 15. 16 17, 18, 22, 23,  24, 25, 29, 30, 31 Feb 1, 11 am - 12:30 pm, 34-301
Pre-register on WebSIS and attend first class.
Limited to 50 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, 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.

Contact: asludds@mit.edu


[Updated for IAP 2018]


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

Alex Sloboda
Mon/Wed Jan 17, 22, 24, 29, Feb 31, 2:45-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 17, 22, 24, 29, 31
     Section 2: 2:30-6:00p Tue/Thu Jan 18, 23, 25, 26, Feb 1

Freshmen should sign up by at the url below by 12/22/17 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

Web: http://mit.edu/6.117

Contact: 6.117@mit.edu


[Updated for IAP 2018]


Mobile Autonomous Systems Laboratory: MASLAB

Andrew Reilley, Kevin Morrow, Travis Libsack, Mitchell Gu
Lectures Mon Jan 8 thru Jan 12, 10am-12:00pm, 32-124, Lab hours MTWRF noon to 5, 38-501;  final competition  2/1, 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
Web: http://maslab.mit.edu/
Contact: Andrew Reilley, maslab-staff@mit.edu



[Updated for IAP 2018]


The Battlecode Programming Competition

James Bloxham, Sanjay Ganeshan, James Gilles, Joshua Gruenstein, Jessica Hyde, Maxwell Mann, Joshua Segaran, Elijah Stiles, Aaron Vontell, Yanni Wang, Gina Yuan.
Mon-Fri, Jan 8-12, 16-19, 07-9:00 pm, 32-123, final competition  2/3, 7 pm (doors open at 6), 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 (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: Gina Yuan, battlecode@mit.edu


[Updated for IAP 2018]


Web Programming Competition

Aaron Sipser, Slava Kim,  Budmonde Duinkharjav, Joanne Lee, Aashish Welling, Rupayan Neogy, Robert Vunabandi
Lectures MTWRF Jan 8-12, 11 am to 3 pm in 10-250; Jan 16-19, 11 am to 3 pm in 4-370
Project Pitches Jan 13-14,  1-5 pm  in 32-044
Hackathon Jan 19, 7-midnight, 32-124 and 32-144
Office Hours MW Jan 8, 10, 16 (36-112), 22, 29,  7-9 pm, 32-044
Semifinalist Presentations, Jan 31, 8 am to 6 pm, 56-154
Awards Ceremony 2/1, 7-11 pm in 34-101
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 over IAP to build the most functional and user-friendly website. 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.

Web: http://webdevelopment.mit.edu
Contact:  6.148-staff@mit.edu


[CANCELLED for IAP 2018]


Introduction to Programming Using Python

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


[CANCELLED for IAP 2018]



Pokerbots Competition

Nilai Sarda, David Amirault
January 10, 12, 17, 19, 22, 4-5 pm, E25-111.  Final presentation Feb 4, 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 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 $25,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 7, 9, 11, 14, 16, 18, 23, 25, 28, 30 and Feb 1, MWF, 11 am to 1,  2-190
Office hours TR,  Jan 8 to Jan 30, 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; prior programming experience expected.
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.  Weekly laboratory assignments as well as in-class exercises.  Concepts covered useful to 6.031. Enrollment limited.

Contact: 6.178staff@mit.edu.


[Updated for IAP 2018]


Introduction to C and C++

Thomas Leech
Mon-Fri, Jan 16-19,  22-26,  29 to Feb 2, 1-3pm, 4-270.  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.

Contact:  6.179-staff@mit.edu


[Updated for 2018]

6.906 (U)

6.936 (G)

StartMIT: Workshop for Entrepreneurs and Innovators

Bill Aulet

January 8-24, Room 34-101

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 https://startmit.mit.edu/ by November 19, 2018.



[Updated for IAP 2018]

6.914 Project Engineering

Prereq: 6.911

4 units, P/D/F

1/29 to 2/1

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.



[Updated for IAP 2018]

6.S080 A Brief Introduction to Programming in Python

Adam Hartz, 6.S080iap17@mit.edu
Office Hours MTWRF Jan 8 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 https://sixohone.mit.edu/tutor/6.s080 

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



[New for IAP 2018]


Creating Software Analysis Tools

Masa Bando
January 8, 9, 10, 11, 12, 16, 17, 18, 19, 22, 23, 24, 25, 26, 29, 30, 31, 1, 2, 11-1 pm, 34-302
Preregister on WebSIS
Enrollment limited to 25
Listeners permitted, space permitting
Prereq: C/C++ programming experience required
Level: U (6 units)   Graded P/D/F

We'll analyze software, design and construct analysis tools, and study powerful analysis techniques such as shadow memory.  Learn to create tools for code coverage, memory monitoring, etc.  Class concludes with a final project designing and creating your own analysis tool.  

Contact Masa Bando, bando@mit.edu


[Updated for IAP 2018]


Transcribing Prosodic Structure of Spoken Utterances with ToBI

Stefanie Shattuck-Hufnagel, Alejna Brugos, Nanette Veilleux
January Tuesday/Thursday, 9, 11, 16, 18, 23, 25, 30 and February 1, 11:30 to 1:30, 36-112
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.

Cosponsored with HST.

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


[New for 2018]


Frame by Frame: Learn to Animate with Stop-Motion

Joanna Gerr, Magnus Johnson, Caleb Richardson, Sharon Lin
January 10, 12, 17, 19, 22, 24, 26, 31, MWF 2-4 pm, W20 Private Dining Room Third Floor, 1 & 2
Prereg on WebSIS and email instructor
Listeners permitted
Prereq: None
Level: U (3 units)  Graded P/D/F

Learn the basic principles of animation through various stop-motion projects.  Though we won’t exhaustively explore every animation concept in this class, we will discuss a few concepts in detail, e.g. frame-by-frame animation, onion-skinning, tweening (with digital methods), squash and stretch.  By the end of this class, you will know about the stop-motion animation pipeline and how to take a stop-motion film scene idea from storyboard to final cut.  Two assignments and a final project.  
Contact Magnus Johnson, magntron@mit.edu


 IAP in Sri Lanka: Programming Enterprise Applications with Ballerina & WSO2 in Sri Lanka
 Prof. Saman Amarasinghe, Dr. Sanjiva Weerawarana
 Inclusive Dates: December 30 to January 27th
 Enrollment Limited to 10 participants: Advanced Sign-Up Required
 Sign-Up by 10/31
 Prereq: Programming Experience
 Prereq: Programming experience
 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. 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



[New for IAP 2018]


Statistics for Research Projects

Samantha Dale Strasser
January 16, 17, 18, 19, 22, 23, 24, 25, 10:30 to 12:30, 35-308
Preregister on WebSIS and email instructor
(U) 6 units Graded P/D/F
Prereq:  some programming experience; R or MATLAB preferred; probability class preferred
Max enrollment 20

This class is a practical introduction to dataset visualization, statistical modeling and experimental design, intended to provide essential skills for doing research. We'll cover basic techniques (e.g., hypothesis testing and regression models) for both traditional experiments and newer paradigms such as evaluating simulations. Students with research projects will be encouraged to share their experiences and project-specific questions.
Students are expected to attend class and participate in discussions. Coursework will consist of two "practicals"—analyzing simple datasets to solidify core concepts—and two "case studies"—critical reading assignments of actual articles. Each assignment should take roughly one hour. Students are welcome to work in groups, but each student must submit an individual write-up in his or her own words. If you do work in a group, please also indicate with whom you worked. To pass, students must get a check/check+ on all assignments.
Finally, as this class is meant to be practical, we welcome any suggestions on topics and teaching style that will help you gain more from this course.



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

Tim Plump
January 11, 16, 18, 23, 25, 1-2:30, 32-155
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, statistics and algorithmic run-time notation 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.


[New for IAP 2018]



Artificial Intelligence and Global Risks

Leilani H. Gilpin, Matias Aranguiz
January 11, 16, 18, 23, 25, 30 and February 1, 10 am to noon, 32-155
Pre-register on WebSIS and attend first class.
Limited to 100 participants.
Listeners allowed, space permitting
Prereq: 6.034 recommended but not required, programming knowledge recommended but not required.
Level: U 6 units Graded P/D/F Can be repeated for credit   

As we move towards artificially intelligent systems that are now responsible for making decisions previously entrusted to humans, there is an immediate need to question these “intelligent” machines. How do we know if the machines are working in our best interests? When something goes wrong, as it inevitably will, how do we determine the reason for the problem? How do we assign blame, if that is necessary? Will individual users and owners of these systems know enough about them to trust them? The goal of this course is to present the realistic risks (and possible solutions) of artificially intelligent systems from a global lens.  4 hours per week.  There will be a short written assignment due every week.

For more information go to http://people.csail.mit.edu/lgilpin/ai-risk-course

Contact lgilpin@mit.edu.

[Updated for IAP 2018]


Deep Learning for Self-Driving Cars

Lex Fridman
MTWRF January 9 to 12, 16-19, 7-9 pm, 54-100
Preregister on WebSIS and follow instructions at http://selfdrivingcars.mit.edu
(U) 3 units Graded P/D/F
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 2018 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
Contact Lex Fridman, fridman@mit.edu
[New for IAP 2018]


Programming for the Puzzled:  Learn to Program While Solving Puzzles

Professor Srini Devadas
January 8, 9, 10, 11, 12, 16, 17, 18, 19, 11 am to 12 noon, 35-225
Preregister on Websis 
(U) 3 units Graded P/D/F
Prereq:  6.0001 or AP CS or some knowledge of Python 
This class builds a bridge between the recreational world 
of algorithmic puzzles (puzzles that can be solved by algorithms) and 
the pragmatic world of computer programming, teaching readers to program 
while solving puzzles. Few introductory students want to program for 
programming's sake. Puzzles are real-world applications that are 
attention grabbing, intriguing, and easy to understand.
Each lesson starts with the description of a puzzle. After a failed 
attempt or two at solving the puzzle, we arrive at an Aha moment -- a 
search strategy, data structure, or mathematical fact -- and the 
solution presents itself. The solution to the puzzle becomes the 
specification of the code to be written. Students will thus know what 
the code is supposed to do before seeing the code itself. This 
represents a pedagogical philosophy that decouples understanding the 
functionality of the code from understanding programming language syntax 
and semantics. Python syntax and semantics required to understand the 
code are explained as needed for each puzzle.
The class will cover puzzles such as scheduling selfie time with 
celebrities to solving Sudoku problems in seconds to verifying the six 
degrees of separation hypothesis. There will be variant puzzles 
suggested as exercises for students to solve in their own time.
Contact: Srini Devadas, devadas@mit.edu
[CANCELLED for IAP 2018]


Virtual Reality Development Challenge

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

This class provides an introduction to Virtual Reality (VR) development
through Unity. Students will hear from industry experts and use
cutting-edge technology to build projects for the final competition. Teams
of two will build an immersive VR experience based on the teachings and
techniques from the class. The class will conclude with a showcase, with
prizes given to the best projects. Enrollment is limited. Previous
programming experience is expected. Prior Virtual Reality experience not


Contact: vriap@mit.edu

[New for IAP 2019]



Introduction to Julia

Alan Edelman
January 29 to Feb 1, 1-3 pm, TBA
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
Contact edelman@mit.edu.
[New for IAP 2018]


Introduction to R for Data Science

Olivia Brode-Roger
January 9, 11, 16, 18, 23, 25, 30, February 1, 3-5 pm, 37-212 
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.
Olivia Brode-Roger, nibr@mit.edu
[New for IAP 2018]


Artificial General Intelligence

Lex Fridman
MTWRF Jan 22, 23, 24, 25, 26, 29, 30, 31, Feb 1, 2, 7-9 pm,  54-100
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 Lex Fridman, fridman@mit.edu
[New for IAP 2018]


Developing iOS 11 Apps with Swift

William Caruso, Dylan Modesitt
January 22, 24, 26, 29, 31, February 2, 1-3, 34-302
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
A Mac with Xcode installed is required and must be brought
to class everyday.

Contact William Caruso, wcaruso@mit.edu



[New Number for IAP 2018]


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

Sertac Karaman, Michael Boulet, Ken Gregson
Lectures: 1/10, 1/12, 1/17, 1/19, 1/22, 1/24, 1/26 at 2pm - 4pm, 32-081
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. 
[Updated for IAP 2018]


Code for Good
Elizabeth Wei, Kevin Weng
Mon-Fri, Jan 8-12, 15-19, 22-26, 29-Feb 2, 3-5, 32-155 and 7-9 pm, 56-154, Expo 2/2, 12-3,  32-155
Apply by November 17th 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: http://codeforgood.mit.edu/programs/iap-class/
Apply at http://codeforgood.mit.edu/apply
Contact: codeforgood@mit.edu


[New for IAP 2018]


Site Reliability Engineering: Keeping Cloud-Based Products Running

Instructors : Raymie Stata ‘90, Course 6 ScD 1996; David Chaiken, Course 6 ScD 1994
January 8, 9, 10, 11, and 12, 10 am to 11:30, 34-304.  Optional office hours 2 pm to 3:30, TBD.
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.


[Updated for IAP 2018]



Rapid Application Development Competition

January 22, 23, 24, 25, 26, 29, 11-2 pm, TBD
Daniela Field
Sign up on websis and at url below by January 16th
Limited to 25 people
Level U, 3 units, Graded P/D/F
Learn how to rapidly develop web and mobile applications using the latest
no code tools. 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 and
build web and mobile applications. The competition will entail building
real-life apps to solve problems. Students should bring their laptops and
no coding experience is necessary. You can learn more here: https://mitrad.


[Updated for IAP 2018]


Introduction to Deep Learning

Alexander Amini, Ava Soleimany
January 29 to February 2, 10:30 am - 1:30 pm, 32-123
Preregister on WebSIS and attend first class.
Limited to 250
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.

URL: http://introtodeeplearning.com

Contact: introtodeeplearning@mit.edu