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

Advanced C
David Greenberg
Jan 22, 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-advc at mit dot edu

Building websites for mobile devices
Xavid Pretzer
Jan 19, 7:30-9:30pm, 4-237

Single Session Event

Prereq: some familiarity with programming

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

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

Single Session Event

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

Caffenated 6.001
Alex Vandiver
Jan 5,7,12,14,21,26,28, 7:00-9:00pmpm, 32-044

Single Session Event

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

Caffenated Crash Course in PHP
Steve Levine
Jan 12, 7:30-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

Caffenated crash course in Ruby
Donald Guy, Rajiv Manglani
Jan 19, 5:00-8:00pm, 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, Rajiv Manglani, W20-557, x3-7788, sipb-iap-caffruby at mit dot edu

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

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

Introduction to Software Exploitation
Nathan Rittenhouse
Jan 26,27,28, 4:00-6:30pm, 37-212

Single Session Event

Prereq: At least a 6.004 knowledge of x86 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.

Contact: Nathan Rittenhouse, W20-557, x3-7788, sipb-iap-exploit at mit dot edu

My First Open Source Project
Jessica Mckellar
Jan 14,21,28, 8:30-9:30pm, 4-231

Single Session Event

Prereq: some familiarity with programming

more involved description coming soon

Contact: Jessica Mckellar, W20-557, x3-7788, sipb-iap-firstfoss at mit dot edu

Caffinated Crashed Course in Computer Forensics
Jesse Kornblum
Jan 13, 6:00-8:00pm, 66-160

Single Session Event

Prereq: some familiarity with programming

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

Programming in Haskell
Edward Yang, Kyle Miller
Jan 18,20,22,25, 5:00-7:00pm, 56-114

Single Session Event

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: Edward Yang, Kyle Miller, W20-557, x3-7788, sipb-iap-haskell at mit dot edu

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

Single Session Event

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

Introduction to Latex
Benjamin Barenblat, Paul Baranay
Jan 6,19, 5:00-7:00pm, 1-115

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.

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

Running linux: introduction, configuration, scripting
Andrew Farrell, Ian Smith, Rish Gupta
Jan 4,6,8, 8:00-10:00pm, 4-237

Single Session Event

Prereq: None

more involved description coming soon

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

Introduction to Network Booting
Joshua Oreman
Jan 6, 5:00-7: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

Programming Perl
Quentin Smith
Jan 5,7,12,14, 5:00-7:00pm, 56-114

Single Session Event

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.OTE: 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 in Postscript
Bayard Wenzel
Jan 5,7,12,14, 5:00-6:00pm, 56-114

Single Session Event

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

Programming Python
Evan Broder, Andrew Farrell
Jan 19,21,26,28, 7:00-9:30pm, 56-114

Single Session Event

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.

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

Introduction to Web Design
Cathy Zhang, Haoqi Li
Jan 11,13,15, 5:00-7:00pm, 1-115

Single Session Event

Prereq: familiarity with HTML and CSS


You don't have to be a professional graphic designer to create beautiful websites. This class will cover basic elements behind great web design such as layout and composition, color theory, imagery, and typography. It will also discuss W3C standards compliance and accessibility guidelines and offer advice on how to go from design to code, whether you are doing it yourself or working with another developer.

Laptops encouraged!

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


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