What is this?

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


Calendar Version

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


SIPB Classes

Co-Sponsored Classes

What else happens during IAP?

See the official IAP activities index.

I have a question about {x}

Contact sipb-iap at mit dot edu.

A Tale of Two Lisps

Duncan Townsend, Kalman Reti
Date: Jan 17 07:00pm - 09:00pm, Jan 19 07:00pm - 09:00pm in 4-237

TL;DR: LISP is awesome. We will convince you why. If you want to learn what LISP is all about, then this is the class for you! We will tell you why LISP _really_ is the language you want to program in. LISP is a functional programming language with a syntax that easily lends itself to manipulating code as data. It is also one of the oldest programming languages still in widespread use (preceded only by FORTRAN). The first class will cover the history of LISP from John McCarthy's original S-expressions, through Lisp Machine Lisp, Common Lisp, Scheme, and Clojure. You will see several REPL sessions with historic LISPs, including a working Symbolics 3630 Lisp Machine (new in 1986). You will also see sessions with more modern LISPs: Common Lisp, Dr. Racket, elisp, Clojure, and Scheme. We will discuss the differences between these LISPs. The second class will cover one of the newest additions to the LISP family, Clojure. Clojure is "LISP reloaded" and designed to run on the Java Virtual Machine and leverage all of the libraries accessible from Java. It makes concurrent programming on today's multi-core processors easier by offering Software Transactional Memory, multi-threaded higher order functions like pmap, futures, and atomic data. Clojure also lets you program using immutable data structures efficiently by using structure-sharing for all of its basic data types. We'll develop a small web application (the Dice of Doom game from Land of Lisp by Conrad Barski, MD) using Clojure to demonstrate these concepts.

Attendance: Participants welcome at individual sessions (series)
Prereqs: The ability to appreciate true beauty
Contact: Duncan Townsend, sipb-iap-lisp at mit dot edu

Advanced C

David Greenberg, Ivan Sergeev
Date: Jan 30 07:00pm - 09:30pm in 4-231

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. We'll learn how to make your C a lot less painful to write with features you thought were only in higher-level languages, we'll also go over when you might want to get closer to the hardware, and how to go about using those gcc-specific features.

Topics covered may include:

  • function pointers
  • structs, unions, bitfields
  • using gotos safely and correctly
  • dispatch tables
  • volatile, register, restrict keywords
  • gcc specific extensions
    • attributes for alignment, packing, functions
    • addresses of labels
    • nested functions
    • variadic macros
  • preprocessor magic
    • macro notation (pasting, evaluation, sub-blocks)
    • useful predefined macros
    • x-macros
  • inline asm
    • constraints on arguments
    • clobbers
    • clones

Attendance: Single event
Prereqs: basic familiarity with C and comfort with pointers
Contact: sipb-iap-advc at mit dot edu

Caffeinated Crash Course in
Computer Forensics

Jesse Kornblum
Date: in TBD

This two-hour session is a high-speed, low drag introduction to computer forensics. You'll see what kinds of data can be recovered from various devices found in the real world and in the cloud. There's treasure everywhere! Topics covered include hidden data in office documents, filesystems, flash storage, cell phones, GPS devices (which are mostly Linux boxen, anyway), computer memory (RAM), social networking sites, the Lobby 7 Anomalous Activity Hypothesis, Jesse's Dead Body Theory of Evidence, and the story of FRED. By the end you'll understand information has not been destroyed unless the media has been raised to the Curie Point.

Attendance: Single event
Prereqs: None
Contact: Jesse Kornblum, sipb-iap-forensics at mit dot edu

Caffeinated Crash Course in PHP

Steve Levine
Date: Jan 23 07:30pm - 09:30pm in 4-231

Although PHP may not stand for "Programmed Hypertext Pwnage," it just may be that awesome. PHP is a server-side scripting language that is used on millions of websites around the world to dynamically generate websites. In other words, your PHP code generates the HTML that is displayed in your internet browser. This class will be a fast-paced introduction to programming in PHP that will teach you the concepts and uses of the language, as well as take you through several examples. Some topics to be covered: basic syntax, using PHP to generate websites, accessing MySQL databases, using cookies and sessions, PHP security and web safety, an introduction to AJAX and web 2.0 techniques, and more. Some basic programming experience and familiarity with HTML is highly encouraged.

Web: http://sipb-iap.scripts.mit.edu/2012/cccphp/
Attendance: Single event
Prereqs: basic programming experience and familiarity with HTML encouraged.
Contact: Steve Levine, sipb-iap-caffphp at mit dot edu

Debathena Trainees

Liz Denys, Jon Reed, Geoffrey Thomas
Date: Jan 18 06:00pm - 10:30pm, Jan 20 06:00pm - 10:30pm in 4-237

NOTE: Start time delayed to 6pm
Interested in learning more about Debathena, or possibly becoming a Debathena developer? Attend this workshop to learn how to build Debian packages, work with the Debathena source repository, and get a behind-the-scenes look at how the Athena environment actually works. The workshop will be held across 2 afternoons, and attendees are strongly encouraged to attend both sessions. Attendees should have some familiarity with Linux and be comfortable with the command line. Knowledge of shell scripting is a plus, but not a requirement. No previous software development experience required. Please bring a laptop with an installation of Debathena, Ubuntu, or Debian. (Virtual machines are fine).

  • Session 1: Debian Packaging
  • Session 2: Athena Architecture

Both sessions will be a lecture 5pm-8pm with office hours 8pm to 10:30pm. An athena hackathon will be held at SIPB the following Saturday.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Are an athena/linux poweruser and have some programming experience.
Contact: Contact: Liz Denys, Jon Reed, Geoffrey Thomas, sipb-iap-debathena at mit dot edu

Git Will Make Your Life Better

Geoffrey Thomas
Date: Jan 10 08:00pm - 10:00pm, Jan 12 08:00pm - 10:00pm in 4-231

Have you struggled with combining changes across a team of writers e-mailing edited documents back and forth? Or created dozens of "old", "old2", etc. copies of a file for yourself, and then forgot which is which? How do large software projects such as Firefox, Linux, and Athena deal with hundreds of developers and thousands of files? The answer is version control, a software technology that takes the hard work out of managing changes to files. We will look at Git, a young decentralized version control system that is quickly becoming the standard, and how it can help you manage your own documents, whether just for yourself or for your team.

Attendance: Single event
Prereqs: Nontechnical computer literacy (Windows, Mac, or Linux)
Contact: Geoffrey Thomas, sipb-iap-git at mit dot edu

Introduction to LaTeX

Benjamin Barenblat
Date: Jan 18 05:00pm - 07:00pm, Jan 25 05:00pm - 07:00pm in 1-115

Leave Word behind forever! LaTeX is the gold standard for document typesetting in academia, and in this single-session event we will see how easy it is to make professional-looking papers and resumes, get you typesetting math like a pro, delve into macros, and finish with Beamer, the popular open source LaTeX analog to Powerpoint.

The room has Athena machines for in-class practice.

Attendance: Single event (identical session repeated twice)
Prereqs: None
Contact: Benjamin Barenblat, sipb-iap-latex at mit dot edu

Introduction to Ruby on Rails

Rajiv Manglani
Date: Jan 18 07:00pm - 09:00pm, Jan 25 07:00pm - 09:00pm in 1-115

Ruby on Rails is an open-source web framework that is optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. We will dive right in and learn the framework as we go.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Interest in web application development; familiarity with the UNIX terminal.
Contact: Rajiv Manglani, sipb-iap-rails at mit dot edu

Programming Java

Lyla Fischer
Date: Jan 09 05:00pm - 07:00pm, Jan 10 05:00pm - 07:00pm, Jan 12 05:00pm - 07:00pm in 1-115

Wake up and smell the coffee! Find out why this platform-independent object-oriented lanuage from Sun Microsystems (now an open-source project) is one of the fastest growing languages in the modern computing industry. Session topics:

  • Introduction to Java (syntax, variables, methods)
  • Object Orientation (inheritance, abstraction, etc.)
  • Cross-platform GUIs
  • Advanced Java Programming

Attendance: Participants welcome at individual sessions (series)
Prereqs: None
Contact: Lyla Fischer, sipb-iap-java at mit dot edu

Programming Perl

Quentin Smith
Date: Jan 24 07:00pm - 09:00pm, Jan 26 07:00pm - 09:00pm, Jan 27 07:00pm - 09:00pm 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 four 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 & slides from the class can be found on the class webpage.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Some programming experience
Contact: Quentin Smith, sipb-iap-perl at mit dot edu

Programming Python

David Lawrence
Date: Jan 10 07:00pm - 09:00pm, Jan 12 07:00pm - 09:00pm, Jan 17 07:00pm - 09:00pm, Jan 19 07:00pm - 09:00pm in 1-115

A general introduction to the Python programming language. This class will cover basic control flow structures, object-oriented development, cool functional language features and debugging. Basic experience with programming in any language will make the class much more helpful; it is highly recommended. Bring your laptop. You should install python on it beforehand, preferrably python2.7 You should also have a text editor of your choice. the easiest thing to do is just to install IDLE

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Some programming experience; not much needed
Contact: David Lawrence, sipb-iap-python at mit dot edu

Programming in C

Bayard Wenzel, Eugene Kuznetsov
Date: Jan 09 05:00pm - 07:00pm, Jan 11 05:00pm - 07:00pm, Jan 13 05:00pm - 07:00pm in 4-231

C's influence is deeply pervasive in today's software systems, and in the many currently-popular programming languages derived from C. In fact, C plays a role somewhat similar to the one once played by assembly language: even if you do not do any actual day-to-day C programming, knowing C can be a huge help in better understanding the other systems and languages you are working with.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Some familiarity with programming
Contact: Bayard Wenzel, Eugene Kuznetsov, sipb-iap-c at mit dot edu

Programming in Haskell

Patrick Hurst
Date: Jan 23 07:00pm - 08:30pm, Jan 25 07:00pm - 08:30pm, Jan 27 07:00pm - 08:30pm in 4-237

Haskell is the world's most *reasonable* programming language -- a language ideally suited for reasoning about code by machines, by humans, and by machines aiding humans. We'll see how to make useful, beautiful, reasonable Haskell programs.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Programming experience; affinity for programs that look like math.
Contact: Patrick Hurst, sipb-iap-haskell at mit dot edu

Programming in Postscript

Bayard Wenzel
Date: Jan 17 05:00pm - 06:00pm, Jan 19 05:00pm - 06:00pm, Jan 24 05:00pm - 06:00pm, Jan 26 05:00pm - 06:00pm in 1-115

PostScript is the standard document formatting language for printers, and the forerunner to PDF, the Portable Document Format. This class will concentrate both on PostScript as a programming language, and PostScript's approach to rendering graphics. Additional topics will include the structure of PDF documents, font encoding, and font rendering. This class should provide a working understanding of stack machine programming, vector graphics, typography, and portable document encoding.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Familiarity with programming
Contact: Bayard Wenzel, sipb-iap-postscript at mit dot edu

The GNU Debugger

Geoffrey Thomas
Date: Jan 30 05:00pm - 07:00pm in 4-231

GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it executes -- or what another program was doing at the moment it crashed. GDB can do four main kinds of things (plus other things in support of these) to help you catch bugs in the act: Start your program, specifying anything that might affect its behavior. Make your program stop on specified conditions. Examine what has happened, when your program has stopped. Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another. The program being debugged can be written in Ada, C, C++, Objective-C, Pascal (and many other languages). Those programs might be executing on the same machine as GDB (native) or on another machine (remote). GDB can run on most popular UNIX and Microsoft Windows variants.'

Attendance: Single event
Prereqs: Familiarity with C
Contact: Geoffrey Thomas, sipb-iap-gdb at mit dot edu

Getting Your Feet Wet with WordPress

Molly Ruggles
Date: Jan 11 12:00pm - 01:00pm in 26-139

Have you wanted to explore WordPress but not sure where to begin? Do you think that your lack of skills in html, css and javascript prevents you from creating your own website or blog? Do you secretly want to post your nuggets of wisdom to the world, but not sure where to start? This session is for you.

In this one hour session, you'll get up and running with WordPress, with a basic understanding of themes, widgets, plugins and other fundamental features of one of the best blogging platforms on the planet.

Open to MIT staff and students. You need to have an MIT kerberos ID (ie an @mit.edu email account) in order to participate.

Attendance: Open to MIT staff and students. You need to have an MIT kerberos ID (ie an @mit.edu email account) in order to participate.
Prereqs: None
Contact: Molly Ruggles, sipb-iap-wordpress at mit dot edu

Web Programming in Python with Django

Maria Rodriguez, Steve Levine, Andrew Farrell
Date: Jan 20 05:00pm - 07:00pm in 4-231

Developed four years ago by a fast-moving online-news operation, Django was designed to handle two challenges: the intensive deadlines of a newsroom and the stringent requirements of the experienced Web developers who wrote it. It lets you build high-performing, elegant Web applications quickly. Django comes with an easy-to-understand templating engine, an Object-relational matter that lets you manipulate your database though interactions with python objects, and an autoconfigured admin interface.

Attendance: Single event
Prereqs: Proficiency with HTML, CSS, and Python
Contact: Maria Rodriguez, Steve Levine, Andrew Farrell, sipb-iap-django at mit dot edu

Emacs for Beginners

Isaac Evans
Date: Jan 16 05:00pm - 06:00pm in 1-115

Are you using IDLE, nano, pico, Notepad++, Word, or (shudder) Notepad to edit documents and programs? Cast away your clumsy editor and begin your quest to master Emacs, the ultimate text editor. Since 1976.

Vi enthusiasts: you are welcome to teach your own class.

Attendance: Single event
Prereqs: Use of a text editor that is not Emacs
Contact: Isaac Evans, sipb-iap-emacs at mit dot edu

Modern Programming Language Design

Pavel Panchekha
Date: Jan 23 05:00pm - 07:00pm in 4-231

At some point in the early fifties, a bright chap had the idea of replacing inscrutible numbers with mnemonics and syntax: assembler was invented, and the idea of a programming language was born. Today, the field of programming languages is vaster and richer than ever before: functional, object-oriented, distributed, typed, dynamic, logic, and metasyntactic languages all vie for attention. This class will cover the main ideas of modern language design: typing, macros, constraint-solving, proofs and correctness, and extensibility and dynamism. Some implementation ideas will be discussed, but mostly the focus will be on these ideas from the point of view of the language designer and researcher, not from the point of view of the compiler and interpreter writer.

Attendance: Single event
Prereqs: Strong experience programming
Contact: Pavel Panchekha, sipb-iap-language at mit dot edu

Software Project Management

Charlotte Wang
Date: Jan 26 06:00pm - 09:00pm in 2-139

Class canceled; teacher not available for medical reasons

Software development projects usually are complex, multifaceted, and evolving through a constant state of change. Guiding these projects successfully requires solid team management and effective project controls. This course provides the tools necessary to organize project objectives, create realistic plans, and build and manage an accomplished team through every phase of the SDLC in high levels.

  • Deliver successful software projects that support your organization's strategic goals
  • Adjust your management style to reflect the chosen software development life cycle (SDLC)
  • Plan and manage projects at each stage of the SDLC
  • Create project plans that address real-world management challenges
  • Develop the skills for tracking and controlling software deliverables
  • Build an effective and committed team and keep them motivated day to day

Attendance: Single event
Prereqs: Strong experience programming
Contact: Charlotte Wang, sipb-iap-manage at mit dot edu

Secure Coding in C

Eleftherios Ioannidis
Date: Jan 31 05:00pm - 08:00pm in 4-231

Every program is limited by the language which is used to write it. C is a programmer's language. Unlike BASIC or Pascal, C was not written as a teaching aid, but as an implementation language.

K & R; "The C programming language", Preface

In this class we will demonstrate some common buffer and stack overflow exploits and how to avoid them in your own code. We will discuss common pitfalls when programming for both Windows, Linux and BSD based operating systems and finally, we'll make an introduction to the CERT secure coding standards.

Topics:

  • Common buffer/stack overflow exploits and how to avoid them
  • Shellcode injection
  • How to avoid security risks
  • Secure C coding standards

Prereqs: Strong experience programming
Contact: Eleftherios Ioannidis, sipb-iap-securec at mit dot edu

Code Injection for Fun and Profit

Rian Hunter (Dropbox)
Date: Jan 24 07:00pm - 09:00pm in 4-237

Ever since Dropbox has launched it has had deep integration with the Finder, Apple's file manager for Mac OS X. What most people don't know is that Apple doesn't actually provide any APIs for third-parties to integrate with the Finder. In this talk I'll explain the low-level code injection techniques & exploits used on Mac OS X to get the Finder to include Dropbox in the toolbar, sidebar, context menu, and over each file icon.

Attendance: Single event
Prereqs: None
Contact: Rian Hunter, rian at dropbox dot com

x86 Assembly Primer for C Programmers

Ivan Sergeev
Date: Jan 24 05:00pm - 07:00pm, Jan 26 05:00pm - 07:00pm in 4-231

A solid grasp of assembly language makes you a better programmer. Understanding assembly gives you:

  • insight into the true cost of high-level language operations
    (is modulus % cheap? when is it and when is it not?)
  • a keen understanding of how program memory is managed and manipulated
  • ability to debug at the lowest level, which means you can catch the subtlest of bugs
  • ability to utilize processor-specific instructions that squeeze the most out of every clock cycle and available processor features
  • the appreciation of time / space advantages that different compiler optimization settings can yield
  • a fluency with low-level detail that makes it easy to pick up new computer architectures

Come to the x86 Assembly Primer and get a full introduction into x86 assembly language, program memory, stack frames, system calls, the role of libc, some of the convoluted nuances of x86, and some comparisons to another architecture (ARM). Enhance your quest in becoming a systems programming ninja here!

Platform: strictly x86-32 GNU/Linux, gcc toolchain.

Assembly Syntax: AT&T/GAS. Example code for the class is available on Github.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: Intermediate C
Contact: Ivan Sergeev, sipb-iap-x86 at mit dot edu

The Internet Shouldn't Work: Networking 101

Jessica McKellar
Date: Jan 23 05:00pm - 07:00pm in 4-237

Come learn about what actually goes on in our favorite series of tubes! We'll discuss the Internet's history, structure, and protocols, with demos and hands-on experiments.

Demos include:

  • sniffing our wireless traffic with Wireshark
  • be your own web browser with telnet
  • spoofing e-mails
  • ARP cache poisoning
Bring a laptop so you can play with some of the utilities we'll be using.
The lecture slides from this event are now available.

Attendance: Single event
Prereqs: None
Contact: Jessica McKellar, sipb-iap-internet at mit dot edu

Debian/Ubuntu Bug Squashing Party

Luke Faraone
Date: Jan 11 02:00pm - 11:00pm in W20-557

From 2 pm until late evening, there will be a Debian/Ubuntu bug-squashing hackathon at the SIPB office.

This is an opportunity both to get a little more familiar with the systems that many SIPB projects build on, and to give back to them and the larger free software community. We're currently in the beta process of Ubuntu's next release, as well as in the middle of the development cycle of Debian's. SIPB previously ran this sort of hackathon in August and October (as well as several times prior), and it's been popular and has gotten good work done. We're hoping to do that again.

We'll have a couple of Debian and Ubuntu developers to help you with understanding how these projects work and to help get fixes into Debian and Ubuntu.

If you're looking to get involved with a SIPB project that uses Debian or Ubuntu and particularly Debian packaging, I especially encourage you to come, as this will be a good chance to learn more about packaging and potentially to help these projects by getting some of our local fixes upstream. As with all SIPB hackathons, we'll be getting snacks and dinner. We hope to see you there!

Attendance: Single event
Prereqs: None
Contact: Luke Faraone, sipb-iap-bsp at mit dot edu

Writing Kernel Exploits

Keegan McAllister
Date: Jan 27 05:00pm - 07:00pm in 4-231

Did you know that a NULL pointer can compromise your entire system? Do you know how UNIX pipes, multithreading, and an obscure network protocol from 1981 are combined to take over Linux machines today? OS kernels are full of strange and interesting vulnerabilities, thanks to the subtle nature of systems code. And the kernel's ultimate authority is the ultimate prize for an attacker.

In this talk you will learn how kernel exploits work, with detailed code examples. Compared to userspace, exploiting the kernel requires a whole different bag of tricks, and we'll cover some of the most important ones. We will focus on Linux systems and x86 hardware, though most ideas will generalize. We'll start with a few toy examples, then look at some real, high-profile Linux exploits from the past two years.

You will also see how to protect your own Linux machines against kernel exploits. We'll talk about the continual cat-and-mouse game between system administrators and those who would attack even hardened kernels.

Attendance: Single event
Prereqs: Experience with C on *NIX is important. x86 assembly is helpful.
Contact: Keegan McAllister, sipb-iap-kernel at mit dot edu

Building a Fast Incremental Search with HTML5

Dan Wheeler (Dropbox)
Date: Jan 27 05:00pm - 07:00pm in 4-237

Ever wonder how to add a server-backed searchbar to your website, that queries hundreds of thousands of documents in realtime and displays the results as you type? Watch me build one from scratch using a bunch of sweet technology! Partial list:

  • python
  • git
  • virtualenv
  • Flask
  • MongoDB
  • Whoosh (pure-python text indexing)
  • coffeescript
  • jquery
  • mustache
  • sass
  • heroku

Attendance: Single event
Prereqs: None. Experienced and beginning programmers welcome.
Contact: Dan Wheeler

The Evolution of the Dropbox Backend

Kevin Modzelewski (Dropbox)
Date: Feb 01 06:00pm - 07:00pm in 4-237

Curious what it will look like to scale your side project once it becomes massively successful? In this talk I'll go step-by-step through the history of the Dropbox backend, showing you how to take a standard LAMP stack and turn it into something that millions of people use every day. I'll talk about what you have to do yourself, what pitfalls there are along the way, and some of the specific things we had to do to build a write-heavy cloud filesystem.

Attendance: Single event
Prereqs: None. Experienced and beginning programmers welcome.
Contact: Kevin Modzelewski

Clickjacking - What You Don't Know Will Hurt You

Chris Varenhorst
Date: Jan 31 06:00pm - 07:00pm in 4-237

Come learn why the the subtle art of UI re-dressing (clickjacking) is a threat every web developer needs to take seriously. I recently disclosed a clickjacking vulnerability to a number of high traffic websites. Learn about this particular vulnerability and see a live demonstration. We'll also cover how to build applications that defend from clickjacking and all the subtle ways it can be done incorrectly. Sub-topics include 6 ways to bust frame-busting, nefarious uses of the 204 response code, and why every server should be sending back an X-Frame-Options header.

Attendance: Single event
Prereqs: Working knowledge of HTML/JS will be helpful for understanding this talk.
Contact: Chris Varenhorst

Get Your Ham Radio License
(co-sponsored with the MIT Radio Club)

 
Amy Yu
Session 1: Wednesday 11 January, 6-8 PM, 1-150 and Session 2: Wednesday 18 January, 4-6 PM, 1-246

Ham radio is both a fun hobby and a useful skill to have during emergencies or for event coordination. This class will familiarize you with the basic knowledge necessary to pass the 35 question exam for the entry level (Technician) ham radio license. Session 1, which is given a week before the ham exams, will cover the basic technical background as well as strategies for learning the answers to the rote-memorization exam questions, and will also include some short presentations/demos on "fun things that you can do with your ham license." Session 2, which is given on the same day as the ham exams (see w1mx.mit.edu for more information), will be a more focused and fast-paced comprehensive overview of the test material. Attendance at both sessions is recommended, but not required.

Attendance: 2 sessions
Prereqs: None
Contact: Amy Yu, sipb-iap-radio at mit dot edu

Caffeinated 6.001
(co-sponsored with Course VI)

 
Alex Vandiver, Zev Benjamin, Nelson Elhage, Michael Phillips
Date: Tue, Thu, Jan 10, 12, 17, 19, 24, 26, 31, 2, 07-09:00pm, 32-044

Zombie-like, 6.001 rises from the dead again. Unlike a zombie, however, it's moving quite a bit faster than it did the first time -- we aim to cover essentially the entire semester-long curriculum over the course of eight classes. Like the original, the class does not purport to just teach Scheme; instead, 6.S184 attempts to use Scheme to teach thought patterns for computer science, and properties of the structure and interpretation of computer programs which transcend specific programming languages. Weekly projects, mostly based on historic 6.001 projects, will be assigned.

Can be taken for credit. See course webpage for further details.

Attendance: Pre-register on WebSIS and attend first class. Listeners allowed, space permitting. Limited to 30 participants.
Prereqs: Some programming experience, high confusion threshold
Contact: Alex Vandiver, 6.001-zombies at mit dot edu

Advanced NetBeans Desktop
Application Development
(co-sponsored with Course VI)

 
Eirik Bakke, Geertjan Wielenga
Date: Fri Jan 27, Sat Jan 28, Sun Jan 29, 10:30am-06:30pm, 32-D463 (Star)

Want to develop a cross-platform desktop application of any significant size or complexity? Learn to use the NetBeans Platform! Distinct from its more well-known associated IDE, the NetBeans Platform is an open-source (CDDL/GPL) Java-based framework that provides your application with advanced GUI features such as tabbed documents, toolbars, dockable panes, property sheets, autocompleting editors, options dialogs, keyboard shortcuts, progress bars for background tasks, and full-screen mode, as well as countless libraries for dealing with common desktop application tasks such as automatic software updates, internationalization, file system interaction, diagram drawing, and persisting user data to disk. NetBeans Platform applications can be distributed with native installers for Windows, MacOS, and Linux, or launched directly from the Web.

This course is a three-day workshop taught by Geertjan Wielenga from Oracle/Sun Microsystems. It features about 50/50 lectures and in-class exercises on your laptop. Pizza lunch provided.

Graduate students and faculty are especially welcome; the NetBeans Platform is well-suited for building many kinds of research application.

See course webpage for further details.

Attendance: Enrollment limited to 44 participants: advance sign up required (see contact below)
Prereqs: Java programming experience
Contact: Eirik Bakke, ebakke at mit dot edu

Google Map APIs
& Google Fusion Tables
(co-sponsored with MIT Libraries)

 
MIT Libraries
Date: Tuesday, January 31, 2-4pm.

This session offers a hands on opportunity for integrating online maps into your website, from both Google Maps and OpenStreetMap and using Google Fusion tables. Google Fusion Tables is a modern data management web application making it easy to host, manage, collaborate on, visualize, and publish data tables online. Together, they make a powerful mapping platform, allowing people to easily upload data, and publish it on a map. Students will make a Google map from scratch, including KML files (points, lines, and polygons) developed in Google Earth or Arcgis, and points included in easily edited XML files. We will also talk about interacting with the map through HTML widgets. Some familiarity with HTML, XML, any modern programming language will make this workshop easier but is not required. You will be working in Javascript but will largely be copying lines of Javascript rather than writing original code. This room has 20 computers, but you are welcome to come with your own laptop.

Attendance: Single event
Prereqs: None
Contact: See http://libraries.mit.edu/gis/teach/current-workshops.html for contact info

The C++ 2011 Standard: What's New?
(co-sponsored with Course VI)

 
Jason Merrill (Technical Staff, Red Hat)
Date: Mon Jan 9, 08-09:30pm, 32-124

Jason Merrill has been working on the GNU C++ compiler for 18 years, and on the language standard committee for much of that time. In this talk he will discuss the newly ratified C++ 2011 standard, notable changes relative to the 1998 standard, and the experience of implementing the new features for the G++ compiler. Jason is also a local actor and a gamer.

Attendance: Single event
Prereqs: Knowledge of C++
Contact: Anne Hunter, anneh at mit dot edu

Mobile Virtualization: Smartphones
with Multiple Personalities
(co-sponsored with Course VI)

 
Steve Muir (Technical Staff, VMware), Harvey Tuch, Prashanth Bungale
Jan 23 10:00am-12:00noon, Jan 25 3:00-5:00pm in 32-144

There is a historic shift occurring today, where smartphones and tablets are overtaking PCs as the dominant end user computing platforms. Another key technology, virtualization, has achieved a huge impact on the industry over the past decade in data centers and desktops. This course will present an introduction to the essentials of virtualization technology from the perspective of VMware's Mobile Virtualization Platform (MVP) group.

The course will cover the systems and architecture concepts behind virtualization in general and techniques for core and device virtualization on mobile platforms. A focus will be given to the ARM architecture, the platform behind billions of embedded and mobile devices. We will focus on the wider solution space and explore tradeoffs when developing virtualization techniques, while providing concrete examples from the MVP hypervisor.

Attendance: Single event
Prereqs: None
Contact: Steve Muir, smuir at vmware dot com

Embedded Systems Design Competition
(co-sponsored with Course VI)

 
Clark Della Silva
Date: Mon Jan 9 thru Fri Jan 13, 10am-05:00pm, 32-044

Teams comprised of 2-5 students will compete in an System on a Chip (SoC) design competition using FPGA development boards. The goal of the competition is to design an FPGA-based processor with associated peripherals and memory components around a provided ARM Cortex-M0 DesignStart core, along with associated software to demonstrate a correctly working system. The competition will use Digilent development boards with Xilinx FPGAs. Example themes will be provided, but the competition will be completely open-ended and teams are encouraged to use their own ideas for their systems. Lectures and workshops will be provided by ARM, Xilinx, Digilent, and MIT during the first week of the competition to get teams started. This is the first ever processor design contest using a full instruction set compatible ARM core.

Attendance: Enrollment limited: first come, first served. Signup by: 08-Jan-2012. Limited to 60 participants. Participants requested to attend all sessions (non-series).
Prereqs: 6.004 or 6.111 recommended
Contact: Clark Della Silva, clarkds at mit dot edu

Relational Database Management System
& Internet Application Programming
(co-sponsored with Course VI)

 
Philip Greenspun
Date: Mon Jan 30, Tue Jan 31, Wed Feb 1, 10am-07:00pm, 1-390, lunch/coffee breaks included

After this course, you'll:
- know why the relational database management system (RDBMS) is the foundation for most multi-user Internet applications, e.g., Amazon.com, and for most business information systems
- understand a bit about the internals of the RDBMS and how popular systems manage the challenge of processing updates from hundreds of simultaneous concurrent users
- know the differences in capabilities between free RDBMSes, such as MySQL and PostgreSQL, and enterprise RDBMSes, such as Oracle and SQL Server
- know how to build multi-user application for the Web and for iPhone and Android smartphones

Not limited to Course VI students. Requirements: (1) a laptop connected to MIT's network, (2) Athena account. Optional pre-class reading list available at the course website.

Teacher: Philip Greenspun has been developing RDBMS-backed Internet applications since 1994 and started photo.net, an online community with more than 5 million monthly visitors, while an MIT EECS grad student. He co-authored Software Engineering for Internet Applications and has taught 6.001, 6.002, 6.003, 6.041, and 6.171.

Attendance: Participants requested to attend all sessions (non-series)
Prereqs: programming experience but no database or web development
Web: http://philip.greenspun.com/teaching/rdbms-iap-2012
Contact: Philip Greenspun, philg at mit dot edu

Introduction to C and C++
(co-sponsored with Course VI)

 
Frank Li, Chen Zhao
Date: Mon, Wed, Fri, Jan 18, 20, 23, 25, 27, 30, 01-03:00pm, 32-155, 1hr lecture, 1hr lab

Covers subject matter not offered in the regular curriculum. Consult department to learn of offerings for a particular term.

Fast-paced introductory course to the C and C++ programming languages. Both are useful for jobs, UROPs, and classes. Intended for those with experience in other languages who have never used C or C++. NOT a class for those experienced in those languages. Daily assignments and a small-scale individual project. Lecture will be an hour followed by an open lab hour.

A short diagnostic test is due 11:59PM Mon, Dec 12th 2011, located on the course Stellar page below. Please submit solutions to 6.s096-staff at mit dot edu.

Attendance: Can be taken for credit. Pre-register on WebSIS and attend first class. Limited to 50 participants. No listeners.
Prereqs: No C or C++ experience; completion of diagnostic text.
Web: http://stellar.mit.edu/S/course/6/ia12/6.S096/index.html
Contact: Frank Li, Chen Zhao, 6.s096-staff at mit dot edu

Intro to Software Engineering in Java
(co-sponsored with Course VI)

 
Christopher Fletcher, Anirudh Sivaraman, Joseph J. Lim
Date: Tue, Thu, Jan 10, 12, 17, 19, 24, 26, 10:30am-12:30pm, 6-120

Covers subject matter not offered in the regular curriculum. Consult department to learn of offerings for a particular term.

An introduction to software engineering, using the Java programming language. Covers concepts useful to 6.005. Students will learn the fundamentals of Java and develop intuition about object oriented programming. The overall focus is on developing working software that solves real problems. The class is designed for students with some programming experience, but if you have none and are motivated you will do fine. Students who have taken 6.005 should not take this course. Each class is composed of one hour of lecture and one hour of assisted lab work.

Attendance: Can be taken for credit. Pre-register on WebSIS and attend first class. Limited to 120 participants. No listeners.
Prereqs: No prior Java or other programming experience necessary
Web: http://web.mit.edu/iapjava/
Contact: Christopher Fletcher, cwfletch at mit dot edu