sipb's grumpy fuzzball
SIPB IAP 2010 Activities
 
IAP 2010 Class List:
 

Advanced C
David Greenberg
Jan 22 05:00pm-07: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-advc at mit dot edu

Building Websites for Mobile Devices
Xavid Pretzer
Jan 19 07:30pm-09:30pm, 4-237

Single Session Event

Prereq: Some Familiarity with Web Design/Development

Everything you know about browser compatibility is wrong! At least, if you want mobile users of your site to have a good experience. Using Javascript frameworks and serving the same page to everyone is great for building compatible websites for desktops, but with mobile download speeds recapitulating the days of dial-up modems, the extra overhead becomes significant. Learn about the challenges and quirks of mobile devices and how to give your users a full-featured experience without locking out those with less-capable phones. We'll cover basic techniques, limitations of popular devices, testing, and taking advantage of advanced features. Bring your favorite smartphone or other mobile device if you have one.

Contact: Xavid Pretzer, W20-557, x3-7788, sipb-iap-mobileweb at mit dot edu

Caffeinated 6.001
Alex Vandiver
Jan 5 07:00pm-09:00pm, Jan 7 07:00pm-09:00pm, Jan 12 07:00pm-09:00pm, Jan 14 07:00pm-09:00pm, Jan 19 07:00pm-09:00pm, Jan 21 07:00pm-09:00pm, Jan 26 07:00pm-09:00pm, Jan 28 07:00pm-09:00pm, 32-044

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.

Contact: Alex Vandiver, W20-557, x3-7788, sipb-iap-6.001 at mit dot edu

Caffeinated Crash Course in PHP
Steve Levine
Jan 12 07:30pm-10:30pm, 4-237

Single Session Event

Prereq: basic programming experience and familiarity with HTML encouraged.

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.

Contact: Steve Levine, W20-557, x3-7788, sipb-iap-caffphp at mit dot edu

Caffeinated Crash Course in Ruby
Donald Guy
Jan 19 07:00pm-09:30pm, 1-115

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-caffruby at mit dot edu

Caffeinated Crashed Course in Computer Forensics
Jesse Kornblum
Jan 13 06:00pm-08:00pm, 66-160

Single Session Event

Prereq: None

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 hasn't been destroyed unless the media has been raised to the Curie Point.

Contact: Jesse Kornblum, W20-557, x3-7788, sipb-iap-forensics at mit dot edu

Complex Event Processing
Richard Tibbetts
Jan 19 07:00pm-09:00pm, Jan 21 07:00pm-09:00pm, 56-114

Participants requested to attend all sessions (non-series)

Prereq: Some Programming Experience. 6.033 reccomended

Complex Event Processing Theory and Practice

Complex Event Processing (CEP) is a new infrastructure technology for processing large volumes of data in real time. CEP platforms use new programming paradigms and languages to make event processing both high performance and highly scalable. The class will cover both the functionality of these systems as well as their design and implementation. Richard Tibbetts is CTO at StreamBase, an MIT startup and leading CEP platform vendor.

High Frequency Trading System Architecture with CEP

Complex Event Processing (CEP) is a new infrastructure technology for processing large volumes of data in real time. CEP is often used for developing high frequency trading applications, which consume data about market events and execute trades with sub-millisecond latency to capture opportunities. The class will discuss the architecture and ecosystem of these trading systems, how they are implemented and how new technologies are changing the landscape. Richard Tibbetts is CTO at StreamBase, an MIT startup and leading CEP platform vendor.

Contact: Richard Tibbetts, W20-557, x3-7788, sipb-iap-eventproc at mit dot edu

Cryptographic Hash Function Design (Or, How to Shoot Yourself in the Foot Very Badly)
David Wilson
Jan 8 07:30pm-10:30pm, 56-114

Single Session Event

Prereq: Familiarity with programming (especially bitwise operations), a basic understanding of general cryptography, and a healthy dose of paranoia are all helpful but not required.

Cryptographic hash functions are used in many different applications--on their own, and as building blocks for more complicated protocols. Come learn how they actually work inside (and why you should never, ever try to implement them yourself). This course will describe what sorts of properties are desirable in cryptographic hash functions, a few techniques for achieving these properties, and what is actually done in practice. In-depth attention will be given to the MD4 family (which includes MD5 and SHA-1, among others). Time permitting, an overview of the design of selected SHA-3 candidates will also be given.

Contact: David Wilson, W20-557, x3-7788, sipb-iap-hash at mit dot edu

Esoteric Programming Languages
Kyle Miller
Jan 25 07:30pm-09:30pm, 4-237

Single Session Event

Prereq: A sense of humor

You've probably heard of Python, Java, and C. These languages were developed to be usable, idiomatic, and readable. What you've probably not heard of are those languages which test the boundaries of language design, throw out the established requirements of real-world programming, and create something nearly, but not quite, impossible to use. We will look at a multitude of examples to see just what makes them esoteric, including such innovations as INTERCAL, Brainf*ck, Piet, and Whitespace. We will also briefly talk about the concept Turing-completeness to get a grasp of what it means for a language to be powerful and come to the conclusion that it's really not hard to be equivalent to a Turing machine.

Contact: Kyle Miller, W20-557, x3-7788, sipb-iap-obscure at mit dot edu

Git Will Make Your Life Better
Geoffrey Thomas
Jan 14 03:00pm-05:00pm, Jan 21 03:00pm-05:00pm, 1-115

Participants welcome at individual sessions (series)

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.

Contact: Geoffrey Thomas, W20-557, x3-7788, sipb-iap-git at mit dot edu

Haskell Type Classes
Edward Yang
Jan 11 05:00pm-07:00pm, 56-114

Single Session Event

Prereq: Programming experience; affinity for programs that look like math.

Haskell has become infamous because of its emphasis on the monad, a construct from category theory that Haskell's designers saw fit to ordain the gatekeeper of all IO actions. While it is possible to perform IO without a deep understanding of what it means to be a monad, you will be a much improved hacker if you understand the relationships between Haskell's standard typeclasses. This class will start off with a refresher of types and syntax, and then take the journey from functor to pointed to applicative to monad, with short interruptions from other delicious typeclasses.

Contact: Edward Yang, W20-557, x3-7788, sipb-iap-haskelltype at mit dot edu

Introduction to Latex
Benjamin Barenblat
Jan 13 03:00pm-05:00pm, Jan 20 03:00pm-05:00pm, 1-115

Participants welcome at individual sessions (series)

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.

Contact: Benjamin Barenblat, W20-557, x3-7788, sipb-iap-latex at mit dot edu

Introduction to Network Booting
Joshua Oreman
Jan 6 05:00pm-07:00pm, 4-231

Single Session Event

Prereq: General technical comfort, networking knowledge a plus

Free yourself from your hard drive! Come learn about the current state of the art in booting computers completely over the network using a centralized server. The class will be split between demonstration, tutorial, and technical explanation, so people of all backgrounds should be able to take away something useful. Topics covered will include installing Linux without a CD-ROM, installing to and booting from network-attached storage, booting securely with user authentication, booting wirelessly, flashing network boot code into a BIOS, and how all this stuff is currently used at MIT. Most demonstrations will focus on the open-source network booting firmware gPXE.

Contact: Joshua Oreman, W20-557, x3-7788, sipb-iap-netboot at mit dot edu

Introduction to Ruby on Rails
Rajiv Manglani
Jan 21 08:00pm-09:30pm, Jan 26 08:00pm-09:30pm, 4-237

Participants requested to attend all sessions (non-series)

Prereq: Interest in web application development; familiarity with the UNIX terminal.

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.

Contact: Rajiv Manglani, W20-557, x3-7788, sipb-iap-rails at mit dot edu

Introduction to Web Design
Cathy Zhang, Jonte Craighead
Jan 6 07:00pm-09:00pm, Jan 13 07:00pm-09:00pm, Jan 20 07:00pm-09:00pm, 56-114

Participants welcome at individual sessions (series)

Prereq: familiarity with HTML and CSS

Come learn principles of web design: we'll be starting with an introduction to HTML, CSS, and other basics, and then we will move on to topics ranging from color schemes to internal infrastructure to validation. Whether you've never seen webpage source before or you've designed a multitude of websites in the past, join us for a good time and interesting discussion. Lectures will focus on higher-level design considerations (and will generally not take the entire 2-hour time period), while labs will generally begin with a short lecture detailing implementation and then give students a chance to experiment with the principles and elements themselves, so bring questions to lectures and questions and laptops to lab sections. Feel free to pick and choose lectures/labs to attend as appropriate for your interests and skill level. Lecture 1: Introduction to HTML & CSS This first lecture will serve as a gentle introduction to webpage source for new developers, mostly in HTML and CSS. The lecture will focus on getting everyone on equal footing in terms of a technical foundation for the following lectures. Topics will include common practices and standards, browser compatibility considerations, etc. Lecture 2: Look & Feel Layout considerations and colors schemes will be discussed in this lecture. Lecture 3: Internal Infrastructure Design of the internal structure of your website is important, from the standpoint of advanced users, future maintainers, and future developers. Issues of accessibility (including graceful degradation) and validation will also be covered.

Contact: Cathy Zhang, Jonte Craighead, W20-557, x3-7788, sipb-iap-webdesign at mit dot edu

Introduction to Web Design Lab Hours
Cathy Zhang, Jonte Craighead
Jan 8 06:30pm-09:30pm, Jan 14 06:30pm-09:30pm, Jan 22 06:30pm-09:30pm, 56-114

Participants welcome at individual sessions (series)

Prereq: familiarity with HTML and CSS

Come learn principles of web design: we'll be starting with an introduction to HTML, CSS, and other basics, and then we will move on to topics ranging from color schemes to internal infrastructure to validation. Whether you've never seen webpage source before or you've designed a multitude of websites in the past, join us for a good time and interesting discussion. Lectures will focus on higher-level design considerations (and will generally not take the entire 2-hour time period), while labs will generally begin with a short lecture detailing implementation and then give students a chance to experiment with the principles and elements themselves, so bring questions to lectures and questions and laptops to lab sections. Feel free to pick and choose lectures/labs to attend as appropriate for your interests and skill level. These are Lab hours to practice your web design skills and run through excersizes

Contact: Cathy Zhang, Jonte Craighead, W20-557, x3-7788, sipb-iap-webdesignlab at mit dot edu

Programming Java
Tony Valderrama
Jan 12 05:00pm-07:00pm, Jan 14 05:00pm-07:00pm, Jan 19 05:00pm-07:00pm, Jan 21 05:00pm-07:00pm, 1-115

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: Introduction to Java (syntax, variables, methods) Object Orientation (inheritance, abstraction, etc.) Cross-platform GUIs Advanced Java Programming

Contact: Tony Valderrama, W20-557, x3-7788, sipb-iap-java at mit dot edu

Programming Perl
Quentin Smith
Jan 5 05:00pm-07:00pm, Jan 7 05:00pm-07:00pm, Jan 12 05:00pm-07:00pm, Jan 14 05:00pm-07:00pm, 4-231

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.

Contact: Quentin Smith, W20-557, x3-7788, sipb-iap-perl at mit dot edu

Programming Python
Karen Sittig, Andrew Farrell
Jan 18 05:00pm-07:00pm, Jan 20 05:00pm-07:00pm, Jan 22 05:00pm-07:00pm, Jan 25 05:00pm-07:00pm, 4-231

Participants requested to attend all sessions (non-series)

Prereq: Some programming experience; not much needed.


Note: lecture 3 is in 56-154

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.

Contact: Karen Sittig, Andrew Farrell, W20-557, x3-7788, sipb-iap-python at mit dot edu

Programming in C
Bayard Wenzel, Eugene Kuznetsov
Jan 18 05:00pm-07:00pm, Jan 20 05:00pm-07:00pm, Jan 22 05:00pm-07:00pm, 1-115

Participants requested to attend all sessions (non-series)

Prereq: some familiarity with programming

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.

Contact: Bayard Wenzel, Eugene Kuznetsov, W20-557, x3-7788, sipb-iap-c at mit dot edu

Programming in Haskell
Kyle Miller, Patrick Hurst
Jan 4 05:00pm-07:00pm, Jan 6 05:00pm-07:00pm, Jan 8 05:00pm-07:00pm, 56-114

Participants requested to attend all sessions (non-series)

Prereq: Programming experience; affinity for programs that look like math.

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.

Contact: Kyle Miller, Patrick Hurst, W20-557, x3-7788, sipb-iap-haskell at mit dot edu

Programming in Postscript
Bayard Wenzel
Jan 5 05:00pm-06:00pm, Jan 7 05:00pm-06:00pm, Jan 12 05:00pm-06:00pm, Jan 14 05:00pm-06:00pm, 56-114

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 Wenzel, W20-557, x3-7788, sipb-iap-postscript at mit dot edu

Running Linux: Introduction, Configuration, Scripting
Ian Smith, Patrick Hurst, Andrew Farrell
Jan 4 08:00pm-10:00pm, Jan 6 08:00pm-10:00pm, Jan 8 08:00pm-10:00pm, 4-237

Participants requested to attend all sessions (non-series)

Prereq: None

January 4th: Intro to Linux What's on the command line, and how can I use it? How can I manage my files without a graphical interface? And how can I do the things I'm used to doing graphically? Please bring your own laptop and don't worry if you if doesn't already run linux. Afterward, we'll hand out liveCDs and show you how to install.

January 6th: Customizing Linux During this session, we'll talk about how to customize Linux to work exactly the way you want with dotfiles and other configuration tools, how to schedule tasks using cron, and how to take advantage of the services offered by MIT's Athena.

January 8th: Scripting Build a better life by automating things you do all the time! In this session we'll show you the real power of linux: the ability to chain together multiple tools to do something entirely unexpected. We'll show you how to use the shell as a full programming language, and at the end, how to write your own tools in your favorite scripting language

Contact: Ian Smith, Patrick Hurst, Andrew Farrell, W20-557, x3-7788, sipb-iap-linux at mit dot edu

The GNU Debugger
Geoffrey Thomas
Jan 13 05:00pm-07:00pm, 1-115

Single Session Event

Prereq: Familiarity with C

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.

Contact: Geoffrey Thomas, W20-557, x3-7788, sipb-iap-gdb at mit dot edu

Web Programming in Python with Django
Maria Rodriguez, Steve Levine
Jan 27 06:30pm-09:30pm, 56-114

Single Session Event

Prereq: proficiency with HTML, CSS, and Python

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.

Contact: Maria Rodriguez, Steve Levine, W20-557, x3-7788, sipb-iap-django at mit dot edu


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