What is this?

SIPB, the computing club at MIT, sponsors a series of classes over IAP. Visit our homepage.

Over for now!

Check back again next year!

What else happens during IAP?

See the official IAP activities index.

I have a question about {x}

Contact sipb-iap at mit dot edu.


These events are available as a Google Calendar along with the SIPB calendar.

IAP 2015

Programming in Perl

Quentin Smith
Date: Jan 8, Jan 13, and Jan 15, 8-10pm in 4-231

Introduction to programming in Perl: syntax, flow control, I/O, regular expressions, data structures, objects, and some CGI programming.

NOTE: It is highly recommended that participants attend all three sessions, as different material will be covered in each session. The last session will probably be a question and answer session and will cover participant-requested material.

More information and slides from the class can be found on the class webpage.

Attendance: Participants requested to attend all sessions.
Prereqs: Some programming experience in other languages.
Contact: sipb-iap-perl at mit dot edu

A Purely Functional Sudoku Solver

Ziv Scully, Anthony Lu, Ben Kraft
Date: Jan 9, 5-7pm in 4-231

Why would anyone ever want to write a program in a language that didn't have variables? We're going to see a few reasons as we write a Sudoku solver in Haskell, a purely functional programming language. Please leave your ++'s at home.

Download the code created during this class here.

Attendance: Single event.
Prereqs: Familiarity with at least one programming language.
Contact: learn-haskell at mit dot edu

Introduction to Haskell

Joshua Cough
Date: Jan 12 5-7pm and Jan 14 5-7pm in 4-231. Jan 16 CANCELLED.

In this class we will cover the basics of the Haskell programming language and functional programming in general. We'll do so by writing a typechecker and/or an interpreter for a language similar to the simply typed lamdba calculus extended with some basic data types.

Topics covered will include:

  • The basic constructs of Haskell (functions, ADTs, pattern matching, modules, typeclasses, IO, Monads, etc)
  • Getting familiar with GHCI
  • How to create, layout, build, and test Haskell projects
  • How and where to find libraries
  • Probably more...

You'll need to bring a laptop to the sessions, and it would help to have GHC installed, preferably 7.8.3.

Attendance: Three-session series.
Prereqs: Be able to clone a Git repository with the course material.
Contact: sipb-iap-intro-haskell at mit dot edu


Ray Hua Wu
Date: Jan 13 5-6pm in 4-231

Learn the basics about using the mysterious and slightly ancient text editor you have probably heard quite a bit about, Vim.

Attendance: Single event.
Prereqs: Familiarity with the command line.
Contact: sipb-iap-vim at mit dot edu

The Secret Life of C++11: What your compiler doesn't want you to know (C++ Internals)

Richard Tibbetts
Date: Jan 13 6-8pm, Jan 14 6-8pm in 4-237

C++ is filled with strange and wonderful features, with a few more added in C++11. We will explore in detail how these features are implemented under the covers, in terms of the assembly code generated. Features to be explored include construction and destruction, copying, references, virtual methods, method dispatch, object layout, exceptions, templates, anonymous functions, captures, and more. No one should claim to be a C++ expert (including the instructor) but this class should help you win a geek fight (or job interview) with anyone who does. Examples will be worked on OSX or Linux with clang or gcc, but we will encourage experimentation if you show up with a Visual Studio 2013 environment.

Attendance: Two-session series.
Prereqs: Familiarity with C and C++, 6.004 useful.
Contact: sipb-iap-cpp at mit dot edu

How to Build Reliable Systems

Tim Abbott
Date: Jan 15 5-6pm in 4-231

This is a 1-hour talk on principles for how to build reliable software systems at scale, focused on issues like monitoring, error reporting, debuggability, and engineering processes that are essential to success to the industry but aren't covered in classes like 6.033.

Tim Abbott was a co-creator of Debathena, Linerva, and XVM, and a co-founder of Ksplice (sold to Oracle in 2011) and Zulip (sold to Dropbox in 2014). Today he is a Staff Engineer at Dropbox.

Attendance: Single event.
Prereqs: None; 6.033 useful.
Contact: sipb-iap-reliable-systems at mit dot edu

Building iOS, Android and OS X Applications with RubyMotion

Rajiv Aaron Manglani
Date: Jan 20, 5-7pm in 4-231

RubyMotion is a revolutionary toolchain for iOS, Android and OS X. It lets you quickly develop and test cross-platform native applications for the iPhone, iPad, Mac OS X and Android devices. RubyMotion apps are written in Ruby and use native platform APIs. Applications are compiled, run at full speed on iOS, Mac and Android hardware, and can be submitted to the app stores for each platform. RubyMotion runs on OS X and is a commercial product. Come to the class then decide if it is the right technology to use for your next application. We will explore the history of the project, tour the framework, and build a functioning app.

Course website here.

Attendance: Single event.
Prereqs: Some familiarity with iOS or Ruby development suggested.
Contact: sipb-iap-rubymotion at mit dot edu

Building Mobile Apps with Parse

Jamie Karraker, Christine Yen, Eric Nakagawa
Date: Jan 19, 5pm-midnight in 4-237

Do you have an idea for an app that you want to build over IAP? Not sure where to start, and feel a bit overwhelmed by building the app top to bottom? Don't want to reinvent the wheel by building a complex backend infrastructure just to get your app working?

With Parse, you can add a scalable and powerful backend in minutes and launch a full-featured app in record time without ever worrying about server management. We offer push notifications, social integration, data storage, and the ability to add rich custom logic to your app’s backend with Cloud Code. Parse is cross-platform, allowing you to use the same data backend for iOS, Android, JavaScript, Windows 8, Windows Phone 8, and OS X.

We are having a Parse hackathon starting at 5pm on January 19, and finishing with demos and prizes at 11am the next day. There will be a short intro presentation, where we'll go over what Parse is and how it can help you build a backend for your mobile app. We'll cover data sharing, basic login, social login with Twitter and Facebook, push notifications, and more. After the presentation, we will start the hackathon, where our MIT alumni Parse engineers will be circulating to help you with your projects. Snacks and pizza will be provided, and everyone who participates in the hackathon will get $100 in Parse credit!

Prizes for the best hackathon projects are:

  • 1st place - $2000 Parse credit and an iPad Air for each team member (up to 3)
  • 2nd place - $1000 Parse credit and a GoPro HERO for each team member (up to 3)
  • 3rd place - $500 Parse credit for each team member

Preexisting projects are allowed, but we will be judging based on what you complete during the hackathon, with an emphasis on how well you incorporate Parse into your project.

If you are planning on attending the hackathon, please fill out this form: <http://goo.gl/forms/VrMAZJp6yS>

Pass it on, forward it around, and sign up!

Attendance: Single event.
Prereqs: 6.01, 1.00, or basic familiarity with iOS / Android / Javascript / .NET apps.
Contact: sipb-iap-parse at mit dot edu

The Athena Command Line

Jonathan Reed
Date: Jan 22 5-7pm in 4-237

Not sure how to do anything on Athena besides browse the web and print? Never used that Terminal window, except to type in some commands you found on a web page? Ever wondered what your friends are doing when they have a single giant green-on-black text window taking up their entire screen? This class is for you. We'll explore Athena using only the command line, and talk about shells, filesystems, dotfiles, Kerberos and much much more. Because Athena is based on Ubuntu Linux, many of the skills you'll learn are transferrable to other Linux distributions and Mac OS X.

If you have a laptop, and would like to follow along, please bring it. If you choose to bring a laptop, take some time prior to class to ensure you can connect to the Athena remote login servers (athena.dialup.mit.edu) from your laptop. If you have already installed Debathena, you should feel free to use it, but you do NOT need to install it specifically for this class.

Attendance: Single event.
Prereqs: None.
Contact: sipb-iap-athena at mit dot edu

Introduction to Version Control using Git & GitHub

Tristan Naumann
Date: Jan 23, 7:30-9:00pm in 4-237

Version control systems are essential for the organization of multi-developer projects. Likewise, familiarity with such tools can greatly simplify even small projects. This short course will discuss version control as a problem and focus on how it can be managed with Git. Further, we will discuss how to share code using GitHub and some common workflows.

Git is a free and open source distributed version control system designed to handle everything from small to very large projects. GitHub is a web-based hosting service for projects using Git which has quickly become one of the most popular code repository sites for open source projects.

Attendance: Single event.
Prereqs: Basic shell familiarity is helpful.
Contact: sipb-iap-git at mit dot edu

Programming in C

Bayard Wenzel
CANCELLED due to inclement weather

C is the finest assembler known to humanity, and as such it is one of the high-points of technological endeavor. However, its importance goes beyond this limited and historical aspect, because C continues to be used extensively in embedded systems, operating systems, device drivers, and user space applications.

This class will present a brief introduction to C, the C pre-processor, the C run time model, practical C programming, and C libraries.

Attendance: Two-session series.
Prereqs: None.
Contact: sipb-iap-c at mit dot edu

Programming in Python

Lauren Huang, Antonio Moreno, Yaning Zhang
Date: Jan 19, 5:30-6:30pm in 4-231; Jan 21, Jan 23, and Jan 26, 5:30-7:30pm in 4-231

Don't know how to program? Know how to program, but not in Python? This is the class for you!

Python is a beautiful and simple language, perfect for beginners and for fast development. In this course, you'll interactively learn the basics of programming with Python. Before long, you'll be harnessing the power of code and tackling problems confidently on your own.

Attendance: Participants can attend sessions freely but knowledge from prior sessions is assumed for later ones. Please RSVP.
Prereqs: None.
Contact: sipb-iap-python at mit dot edu

Secure Programming in C

Lef Ioannidis

C, love it or hate it, is somewhere at the foundation of most software today. While some may call it a glorified assembler, C does provide many useful features while giving you the option to get close to the hardware and have precise control over everything your machine does. It is also inherently insecure and writing secure software takes experience and practice. We will show you common security pitfalls and how to avoid them in your code. The materials will include:

Attack Cases:

  • Smashing the Stack.
  • Injecting Shell Code.
  • Trampoline Attacks.
  • Return-to-libc Attacks.
  • Smashing the heap.
  • Capturing the Allocator.


  • Secure strings.
  • Stack/Heap Canaries
  • System-wide measures
  • ASLR.

Attendance: Single event.
Prereqs: 6.004, familiarity with C.
Contact: sipb-iap-securec at mit dot edu

Better Living Through Clojure

Mark Champine, Paul Lam, Alex Huang
Date: Jan 28 8:00pm, Jan 29 8:00pm in 4-231

Clojure is a general-purpose language with seamless Java interoperability, a modern Lisp dialect, and a rich set of immutable, persistent data structures. Elegant and powerful, Clojure aims to reduce the incidental complexity of software engineering by making functional programming practical and accessible.

This two class series introduces Clojure's philosophy, Lisp syntax, and primitives for expressive functional programming on immutable collection types. We’ll work on several tutorial problems oriented toward both fun and practical uses of Clojure.

The class will be interactive, with an emphasis on functional problem solving, so bring a laptop.

Slides for the class can be found here.

Attendance: Participants are requested to RSVP to sipb-iap-clojure at mit dot edu. Two-session series; participants recommended to attend both sessions.
Prereqs: Some programming experience.
Requirements: Laptop and network access.
Contact: sipb-iap-clojure at mit dot edu

WebSockets from the Wire Up

Christine Spang
Date: Jan 22, 7-8pm in 4-231

HTML5 WebSockets power the real-time web. Come take a deep dive into how they work, from the big picture down to what goes over the wire, including insight into the performance benefits of the protocol, via a real-world example of how WebSockets are implemented client- and server-side in Python.

Attendance: Single event.
Prereqs: Familiarity with Python and basic web programming.
Contact: sipb-iap-python-web at mit dot edu

Introduction to the Command Line

Co-sponsored with HKN and Course 6

Sheena Nie
Date: Jan 7 7:30-8:30pm and Jan 15 7:30-8:30pm in 56-114

New to the command line? In this hands-on workshop, you'll learn to use this fundamental tool, essential to becoming a savvy and efficient programmer in class work, on the job, and in everyday tasks. We will start with the basics and where to learn more for more advanced topics. Please bring a laptop.

Attendance: Repeating event; participants welcome at any session
Prereqs: No experience with the command line. If you are using Windows, please install Cygwin beforehand at https://www.cygwin.com/.
Contact: Sheena Nie, xnie at mit dot edu

Hacking the Software Interview

Co-sponsored with Course 6

Ron Chaney
Date: Jan 21 5:30-7pm, Jan 22 5:30-7pm in 32-155

Ever wanted to work at a company like Google, TripAdvisor, Akamai, or Facebook? There's just one thing standing in your way: the interview. But there's no need to fear. We've mastered the interview questions and topics, and we want to show you how you can nail every programming question. Whether you're a beginning programmer or a seasoned expert, this class is for you. The class focuses on computer science topics that frequently come up in programming interviews. It covers time complexity, hash tables, binary search trees, and some other things you might learn in 6.046. However, most of the time is devoted to topics you won't learn in class, such as crafty bitwise logic and tricks to solving problems. If you have any interest in working at a computer science company, make sure you don't miss this class!

Attendance: Participants welcome at individual sessions
Prereqs: one MIT programming class or equivalent; 6.006 useful
Contact: Ashley Moniz, amacri at akamai dot com