sipb's grumpy fuzzball
SIPB IAP 2009 Activities
 
IAP 2009 Class List:
 
Google Calendar for all SIPB IAP classes.
iCal Calendar for all SIPB IAP classes.
 
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
4 5
7:00: Caffeinated 6.001
6
1:30: Packaging Software for Debian
4:00: Programming in Java
6:00: Programming in PostScript
7
3:00: Caffeinated Crash Course in Ruby
6:00: Being Productive with Emacs
7:00: Caffeinated 6.001
8
1:30: Packaging Software for Debian
4:00: Programming in Java
6:00: Programming in PostScript
9:00: Introduction to Web Application Security
9 10
11 12
3:00: Extending BarnOwl
7:00: Caffeinated 6.001
13
4:00: Programming in Java
6:00: Programming in PostScript
7:30: Caffeinated Crash Course in PHP
9:00: Programming in Python
14
3:00: Caffeinated Crash Course in C++
6:00: Being Productive with Emacs
7:00: Caffeinated 6.001
15
4:00: Programming in Java
6:00: Programming in PostScript
7:00: Caffeinated Crash Course in Perl
9:00: Programming in Python
16 17
18 19
Martin Luther King, Jr. Day
20
3:00: Git Will Make Your Life Better
5:30: Programming in Perl
7:30: Math Secrets for the Computer Scientist
9:00: Programming in Python
21
3:00: Caffeinated Crash Course in C
6:00: UNIX is Your Friend
7:00: Caffeinated 6.001
9:00: Building Filesystems with FUSE
22
3:30: Programming LaTeX
5:30: Programming in Perl
7:30: Math Secrets for the Computer Scientist
9:00: Programming in Python
23
3:00: Bad Ideas in Kernelspace
5:00: Advanced C
24
25 26
2:00: An Introduction to Software Exploitation
5:00: Introduction to LaTeX
7:00: Caffeinated 6.001
27
2:00: An Introduction to Software Exploitation
5:30: Programming in Perl
7:30: Math Secrets for the Computer Scientist
28
2:00: An Introduction to Software Exploitation
5:00: The Internet Shouldn't Work
7:00: Caffeinated 6.001
29
5:30: Programming in Perl
7:30: Math Secrets for the Computer Scientist
30 31

 
SIPB WWW home
Official MIT IAP home page.
 

Advanced C
David Greenberg
Fri Jan 23, 5:00–7:00pm, 4-231

Single session event

Prereq: basic familiarity with C

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 like LISP, and we'll also go over when you might want to get closer to the hardware and how to go about doing that with inline assembly and gcc-specific features.

Topics covered may include:

Contact: David Greenberg, W20-557, x3-7788, sipb-iap-advancedc at mit dot edu

Bad Ideas in Kernelspace
Geoffrey Thomas
Fri Jan 23, 3:00–5:00pm, 4-231 Canceled

Single session event

Prereq: some experience with some UNIX-like system, some programming experience. Something like 6.033 will be helpful, as will knowledge of C.

The operating system kernel provides the most critical services to your computer, has the most responsibility of any software on your machine, runs at the highest privilege level on your CPU… and is by far the most fun part of your system to gratuitously modify for no good reason. Join us as we take a look at the Linux kernel (mainly) and all the crazy things we can make it do to our poor, innocent, unsuspecting userspace applications. Along the way we might run across some actually useful ideas.

You are encouraged to bring your laptop. If you want to try out some of these ideas, you can borrow an Ubuntu live CD or create a virtual machine at XVM—if you're not brave enough to test them on your own Linux computer!

Web: http://stuff.mit.edu/iap/2009/kernel
Contact: Geoffrey Thomas, W20-557, x3-7788, sipb-iap-kernel at mit dot edu

Being Productive with Emacs
Phil Sung
Wed Jan 7 and 14, 6:00-7:00pm, 4-231

No enrollment limit, no advance sign up
Participants requested to attend all sessions (non-series)
Prereq: none

Emacs is a remarkably powerful text editor. It can be customized extensively to automate common tasks and help you save time. Emacs is also a platform which ships with dozens of applications (including a mail client, a calendar, a debugger, among others), with many more available for download. We'll cover some of the notable features of Emacs, basic concepts and usage, and customizing and programming Emacs.

Web: http://stuff.mit.edu/iap/2009/emacs/
Contact: Phil Sung, W20-557, x3-7788, sipb-iap-emacs at mit dot edu


Building Filesystems with FUSE
Xavid Pretzer
Wed Jan 21, 9–11pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Some programming experience.

FUSE is a library that allows you to easily create custom filesystems without needing to write any kernel code. FUSE has greatly lowered the barrier to writing custom filesystems, so whether you want to write a virtual filesystem to make information more easily accessed and modified or whether you actually want to store files in some cool new way, FUSE will have you on the ground and running in no time.

We'll go over the basics of FUSE, then break into exercises where you'll get to try your hand at using FUSE, with help available. Examples and starter code will be in Python, but basic concepts apply to using FUSE in any language.

Web: http://stuff.mit.edu/iap/2009/fuse
Contact: Xavid Pretzer, W20-557, x3-7788, sipb-iap-fuse at mit dot edu

Caffeinated 6.001
Cosponsor: Department of Electrical Engineering and Computer Science
Alex Vandiver, Ben Vandiver, Nelson Elhage, Zev Benjamin, Mike Phillips
Mon/Wed, Jan 5, 7, 12, 14, 21, 26, and 28, 7:00-9:00pm, 32-044

Limited to 30 students; attend first session.
Participants requested to attend all sessions (non-series)
Prereq: some programming experience; high confusion threshold.

Zombie-like, 6.001 rises from the dead to threaten students again. Unlike a zombie, though, it's moving quite a bit faster than it did the first time. Like the original, don't walk into the class expecting that it will teach you scheme; instead, it attempts to teach thought patterns for computer science, and the structure and interpretation of computer programs. Weekly projects, many based on historic 6.001 projects, will be assigned.

Web: http://web.mit.edu/alexmv/6.001/
Contact: Caffeinated 6.001 Team, W20-557, x3-7788, 6.001-zombies at mit dot edu


Caffeinated Crash Course in C
Geoffrey Thomas, Bayard Wenzel, and Nathan Rittenhouse
Wed Jan 21, 3:00–6:00pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Prior experience in a C-like language (C++, Java, Perl, etc.)

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 don't 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.

This class will attempt to cover the entire C programming language in 3 hours, in the grand tradition of SIPB's IAP caffeinated crash courses. Prior programming experience, preferably in a C-like language (C++, Java, Perl, etc.) is very definitely assumed.

Web: http://stuff.mit.edu/iap/2009/cccc
Contact: Geoffrey Thomas, W20-557, x3-7788, sipb-iap-cccc at mit dot edu


Caffeinated Crash Course in C++
Geoffrey Thomas and Steve Levine
Wed Jan 14, 3:00–6:00pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Prior experience in a C-like language (C, Java, Perl, etc.)

A three-hour introduction to the C++ programming language. Syntax, data types, and control flow. Object basics. Polymorphism and templates. Dynamic memory management. Standard library. Useful tools.

Web: http://stuff.mit.edu/iap/2009/ccccpp
Contact: Geoffrey Thomas and Steve Levine, W20-557, x3-7788, sipb-iap-ccccpp at mit dot edu


Caffeinated Crash Course in Perl
Ken Takusagawa
Thurs Jan 15, 7:00-10:00pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Some programming experience; high confusion threshold.

Perl is the duct tape of the computing world -- it has a light side, a dark side, and (if you're running Debian) it holds your operating system together. This class will teach you to choose the light side — that is, how to write simple, useful Perl scripts without having it turn into a gooey, sticky mess.

Contact: Ken Takusagawa, W20-557, x3-7788, sipb-iap-caffeinatedperl at mit dot edu


Caffeinated Crash Course in PHP
Steve Levine
Tues Jan 13, 7:30-10:30pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Some programming experience; familiarity with HTML; high confusion threshold.

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, security, PHP extensions such as cURL (for accessing outside websites) and GD (for making images), and more. Some basic programming experience and familiarity with HTML is highly encouraged.

Web: http://sipb-iap.scripts.mit.edu/2009/cccphp
Contact: Steve Levine, W20-557, x3-7788, sipb-iap-caffeinatedphp at mit dot edu


Caffeinated Crash Course in Ruby
Donald Guy
Wednesday Jan 7, 3:00-6:00pm, 1-115

No enrollment limit, no advance sign up
Single session event
Prereq: Some familiarity with some scripting language; high confusion threshold.

Ruby is a language that was designed to be "more powerful than Perl, and more object-oriented than Python"* It was designed taking some of the best ideas from Perl, Python, LISP, and Smalltalk to create a language "natural, not simple"* but, above all, it was designed to make programming with it an enjoyable experience.

In a quick 3 hour course I will take you through a nearly-complete tour of the Ruby language including such standbys as syntax, data structures, class creation, and control flow, along with the more unique concepts of Blocks, Mixins, Alias Chaining, and Duck Typing. If time allows, we will finish out the course showing off some of Ruby's meta-programming capabilities by creating a framework for customizable zephyrbots.

*: Yukihiro "Matz" Matsumoto, Ruby Language Creator and Chief Designer

Contact: Donald Guy, W20-557, x3-7788, sipb-iap-ruby at mit dot edu

Extending BarnOwl
Nelson Elhage
Mon Jan 12, 3:00–5:00pm, 3-133

No enrollment limit, no advance sign up
Single session event
Prereq: Basic knowledge of Perl

BarnOwl (http://barnowl.mit.edu) is the most popular Zephyr client in use here at MIT. BarnOwl is designed to run fine with no configuration or customization, but it supports the use of perl as a powerful extension and customization language. I'll talk about building extension modules for BarnOwl, as well as some of the cool, lesser-known, features available in BarnOwl.

Contact: Nelson Elhage, W20-557, x3-7788, sipb-iap-barnowl at mit dot edu


Git Will Make Your Life Better
Geoffrey Thomas
Tues Jan 20, 3:00–5:00pm, 1-115

Single session event

Prereq: nontechnical computer literacy (Windows, Mac, or Linux).

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'll 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.

Web: stuff.mit.edu/iap/2009/git
Contact: Geoffrey Thomas, W20-557, x3-7788, sipb-iap-git at mit dot edu


The Internet Shouldn't Work
Jessica McKellar and Jessica Hamrick
Wed. Jan. 28, 5:00-7:00pm, 4-237

No enrollment limit, No advance sign up required
Single session event
Prereq: none

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

After this you'll know why you get spam with only garbage characters and nothing to sell, how Comcast can tell that you're pirating all of Season 2 of Arrested Development off Bittorrent, why all this trust lets you read your friends' AIM conversations or hijack YouTube, and more.

Bring a laptop so you can play with some of the utilities we'll be using.

Web: http://stuff.mit.edu/iap/2009/internet
Contact: Jessica McKellar, W20-557, x3-7788, sipb-iap-internet at mit dot edu


Introduction to LaTeX
Jessica McKellar and Paul Baranay
Mon Jan 26, 5:00–7:00pm, 1-115

No enrollment limit, No advance sign up required
Single session event
Prereq: none

Leave Word behind forever! LaTeX is the gold standard for document typesetting in academia, and in this single-session event we'll 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.

Web: http://stuff.mit.edu/iap/2009/latex
Contact: Jessica McKellar, Paul Baranay, W20-557, x3-7788, sipb-iap-latex at mit dot edu


An Introduction to Software Exploitation
Nathan Rittenhouse
Mon, Tues, and Wed Jan 26–28, 2:00–4:30pm, 8-119

No enrollment limit, no advance sign up
Participants requested to attend all sessions
Prereq: At least a 6.004 knowledge of assembly, basic knowledge of C

Dive into the world of reverse engineering and software exploitation. Learn theory and practice for how to analyze and reverse engineer software for both understanding its internals and for gaining the ability to execute arbitrary code. This class will cover various vulnerabilities in software running on Windows, Linux, and Mac OSX.

Topics include:

At least a primitive knowledge of x86 assembly and C is preferred (read: almost necessary, but nothing's stopping you from coming!). The crackme's/exploitme's will be put online during the course, along with the presentation used.

Web: http://stuff.mit.edu/iap/2009/exploit
Contact: Nathan Rittenhouse, W20-557, x3-7788, sipb-iap-exploit at mit dot edu

Introduction to Web Application Security
Edward Yang
Thur Jan 8, 9:00–11:00pm, 56-114

No enrollment limit, No advance sign up required
Single session event
Prereq: some experience with web scripting.

When it comes to a cracker and a web application, a security vulnerability is not a question of "if" but "when." They can attack you with anything: XSS, CSRF, clickjacking, HTTP header splitting, remote file inclusion, session fixation, etc. Learn how to identify and how to defend against all of these attacks, with a special emphasis on the theory behind validating, escaping and sanitizing data in a web context. Also on the agenda: standards compliance and valid Unicode as risk mitigation factors.

Most examples will be in PHP, but techniques are applicable to any language.

Web: http://stuff.mit.edu/iap/2009/websecurity
Contact: Edward Yang, W20-557, x3-7788, sipb-iap-websecurity at mit dot edu


Math Secrets for the Computer Scientist
Greg Price
Tu/Thu 20, 22, 27, 29, 7:30-8:30pm, 56-114

No enrollment limit, no advance sign up
Participants welcome at individual sessions (series)
Prereq: None.

The computing world uses more math than you think. In this class we'll cover spectral analysis of graphs, linear programming, semidefinite programming for the only known attack on some NP-complete problems, how flipping a coin can be better than heads or tails, and why cryptography works (or does it?)

Web: http://stuff.mit.edu/iap/2009/math
Contact: Greg Price, W20-557, x3-7788, sipb-iap-math at mit dot edu


Packaging Software for Debian
Evan Broder and Greg Price
Tues/Thurs 6 and 8, 1:30–4:00pm, 8-119

No enrollment limit, no advance sign up
Participants welcome at individual sessions (series)
Prereq: some shell scripting, building software

Everyone seems to be using Debian or Ubuntu these days, but building and changing packages using Debian's .deb system remains an obscure process. We'll demystify the process for you, showing you the most efficient way to build Debian packages, as well as Debathena's system for making configuration packages. Each class will consist of a demonstration portion followed by a series of simple packaging exercises for you to practice building your own packages. Experienced Debathena developers will be present to answer questions. Bring your laptop!

Session Topics:
  1. Packaging Basics (including CDBS)
  2. Config Packages
Web: http://stuff.mit.edu/iap/2009/debian
Contact: Evan Broder and Greg Price, W20-557, x3-7788, sipb-iap-debpackaging at mit dot edu

Programming in Java
Tony Valderrama
Tu/Thu Jan 6,8,13,15, 4:00–6:00pm, 1-115

No enrollment limit, no advance sign up
Participants requested to attend all sessions (non-series)
Prereq: Some programming experience

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:
  1. Introduction to Java (syntax, variables, methods)
  2. Object Orientation (inheritance, abstraction, etc.)
  3. Cross-platform GUIs
  4. Advanced Java Programming
Web: http://stuff.mit.edu/iap/2009/java
Contact: Tony Valderrama, W20-557, x3-7788, sipb-iap-java at mit dot edu

Programming in Perl
Quentin Smith
Tu/Thu 20, 22, 27, 29, 5:30-7:30pm, 56-114

No enrollment limit, no advance sign up
Participants requested to attend all sessions (non-series)
Prereq: some programming experience.

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.

Web: http://stuff.mit.edu/iap/2009/perl
Contact: Quentin Smith, W20-557, x3-7788, sipb-iap-perl at mit dot edu


Programming in Python
Evan Broder
Tues/Thurs, Jan 13, 15, 20, and 22, 9:00-11:00pm, 56-114

No enrollment limit, no advance sign up
Participants requested to attend all sessions (non-series)
Prereq: Some programming experience; not much needed.

A general introduction to the Python programming language. This class will cover basic control flow structures, object-oriented development, and may also cover such topics as developing extensions or Python web development. Basic experience with programming in any language will make the class much more helpful; it is highly recommended.

Web: http://stuff.mit.edu/iap/2009/python
Contact: Evan Broder, W20-557, x3-7788, sipb-iap-python at mit dot edu


Programming in PostScript
Bayard Wenzel
Tu/Thu Jan 6, 8, 13, 15, 6:00-7:00pm, 56-114

No enrollment limit, no advance sign up
Participants requested to attend all sessions (non-series)
Prereq: Familiarity with programming.

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.

Contact: Bayard W. Wenzel, W20-557, x3-7788, sipb-iap-postscript at mit dot edu


Programming LaTeX
Nelson Elhage
Thursday Jan 22, 3:30–5:30pm, 4-237

No enrollment limit, no advance sign up
Single session event
Prereq: Basic knowledge of how to write documents in LaTeX

You probably use LaTeX to format problem sets or lab reports or papers for your classes, but did you realize that it's also (not) so secretly actually a full-fledged programming language, too? I'll show you some basics about programming in LaTeX, including how to define your own document classes and packages, and the basic programming tools you'll probably find yourself needing.

My list of examples from the class.
Contact: Nelson Elhage, W20-557, x3-7788, sipb-iap-latex-programming at mit dot edu


UNIX is Your Friend
Jessica McKellar and Andrew Farrell
Wed Jan. 21, 6:00-7:00pm, 4-237

No enrollment limit, no advance sign up
Single session event
Prereq: None

UNIX is your Friend!

For anyone needing a push to get comfortable on Athena or looking to expand one's UNIX toolbox. We'll rapid-fire demo and give usecases for as many utilities as we can fit into the hour and send you home with a comprehensive cheat sheet with even more tools to keep you learning.

Topics include: Bring a laptop.

Web: http://stuff.mit.edu/iap/2009/unix
Contact: Jessica McKellar, Andrew Farrell, W20-557, x3-7788, sipb-iap-unix at mit dot edu


Places to go from here:
Email: sipb-iap at mit dot edu