Ur/Web- Types for the Tubes

Ziv Scully
  • Mon Jan 25 07:00pm – 08:30pm in 4-231
  • Wed Jan 27 07:00pm – 08:30pm in 4-231

Ur/Web is a functional programming language for web applications that runs both server-side and client-side. It follows the style of ML and Haskell but features an extra fancy type system, which it uses to statically verify immunity to code injection attacks, valid HTML and SQL generation, fields matching between forms and form handlers, type-safe metaprogramming, and more. The sever-side code generated by Ur/Web is very efficient, competitive with lower-level languages like C and Java (see https://www.techempower.com/benchmarks/#section=data-r11).

In the first session, we'll introduce Ur/Web and walk through some demos. We'll quickly review some basic functional programming, introduce Ur/Web's client-side and server-side features, and see everything in action by walking through a blog application.

In the second session, we'll talk about Ur/Web's metaprogramming capabilities. We'll begin with a tutorial on Ur/Web's type system and its main unorthodox feature, row polymorphism. We'll then use what we learned to walk through building a generic SQL table viewer and (if there's time) editor.

Attendance: Two-session series
Prereqs: Familiarity with functional programing (JavaScript counts)
Contact: sipb-iap16-urweb at mit dot edu

Reverse Engineering Software

James Koppel
Date: Mon Jan 25 05:00pm – 07:00pm in 1-115

Is something on your computer hiding something from you? Is it refusing to run unless you do something? Do you want to know exactly what someone else's software is doing? Or perhaps you even want to "open" up some closed-source software and make it do something else. This course will cover the basics of reverse-engineering binaries, as well as some of the ideas of binary modification.

Attendance: No sign-up required
Prereqs: Exposure to X86 assembly preferred
Contact: sipb-iap16-reverse-engineering at mit dot edu

Effective Technical Interviews

Gregory Marton
Date: Tue Jan 26 05:00pm – 07:00pm in 4-237

After 200+ interviews at Google, teaching a class there for candidates about to interview, and after an extensive job search in this area, I will share lessons learned, and leave plenty of time to answer your questions and concerns. Primarily for interviewees: * What to expect, * How to prepare, * How to get un-stuck, * Non-technical questions, * Time permitting: a practice problem. Bring paper, pen, and courage.

Another version's slides: https://bitbucket.org/gregory_marton/coding-interview/src

Attendance: No sign-up required
Prereqs: Some programming experience helpful
Contact: sipb-iap16-effective-interview at mit dot edu

Introduction to LaTeX

Lizhou Sha
  • Mon Jan 18 05:00pm – 07:00pm in 1-115
  • Thu Jan 28 05:00pm – 07:00pm in 1-115

Tired of aligning with the space bar in Word? LaTeX is the golden standard of typesetting in academia and beyond. In this single-session event, we will see how easy it is to create professional-looking documents in LaTeX. We'll start with the basics of LaTeX typography, learn how to typeset math like a pro, dive into macros, and finish with a glimpse of powerful LaTeX packages like Biblatex (for bibliography and references), opencv (for flawlessly typeset CV and resumes), and Beamer (PowerPoint-killer).

The room comes with Athena machines for real-time practice. Bring your own document that you want typeset in LaTeX! It can be a paper, a resume, a presentation, or more.

Attendance: Participants welcome at individual sessions
Prereqs: none
Contact: sipb-iap16-latex at mit dot edu

Introduction to Version Control using Git & GitHub

Tristan Naumann
Date: Thu Jan 28 07:30pm – 09:00pm in 4-231

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

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

Attendance: No sign-up required
Prereqs: Basic shell familiarity is helpful
Contact: sipb-iap16-git at mit dot edu

Crushing Your Coding Interview

Laney Kuenzel, Karen Sittig
Date: Wed Jan 06 07:00pm – 09:00pm in 4-237

This class will walk you through all the tips and tricks to best prepare you for your next coding interview. We'll discuss what to expect in your coding interview, what your interviewer is looking for, and advice for putting your best foot forward. We will also walk through several example interview questions and discuss common mistakes (coding and otherwise).

The presentation will last between 1-1.5 hours with the remaining time for 1:1 resume review.

Karen and Laney are both software engineers at Facebook Boston and have jointly interviewed hundreds of student and industry candidates.

Attendance: No sign-up required
Prereqs: None
Contact: sipb-iap16-interview at mit dot edu

Reproducible, Automated Server Configuration with SaltStack

Andrew Farrell
Date: Thu Jan 07 07:00pm – 08:00pm in 4-231

Do you find yourself trying to manage multiple servers? Do you find yourself wishing that installing and configuring servers could be more like programming? I will introduce you to SaltStack, an open source tool written in python that you can use to write modular configurations for one server or for one thousand. I will also teach you some techniques for troubleshooting some common server configuration problems.

Attendees must download and install Vagrant from https://www.vagrantup.com/downloads.html prior to class.

Attendance: No sign-up required
Prereqs: Unix command line fluency, Vagrant install
Contact: sipb-iap16-saltstack at mit dot edu

Learn Bash and the UNIX Command Line

Sabrina Drammis
Date: Thu Jan 07 12:00pm – 02:00pm in 56-162

An introductory workshop to the UNIX command line and Bash. Come learn how to use your terminal!

Will mostly concentrate on learning to use and navigate the terminal.

When you know how your terminal works and have an installed system that works for you it becomes a lot easier and more fun.

Sponsored by EECS department

Attendance: No sign-up required
Prereqs: none
Contact: sdrammis at mit dot edu

Survey of Advanced Topics in Web Application Security

Chris Varenhorst
Date: Mon Jan 11 05:00pm – 06:00pm in 4-237

This 1-hour talk will be a survey of some of the more advanced types of web application attacks and defenses. I'll include live demos and anecdotes from Dropbox whenever appropriate. Some topics include history leaking through cache timing, clickjacking/ui redressing attacks, logged out CSRF attacks, the benefits and challenges of deploying Content Security Protection on a large site, and implementing privilege separation for 3rd party JavaScript. Attendees should walk away with a broader knowledge around the types of attacks out there and how to defend against them.

Chris is a Course 6 alum and engineer at Dropbox where he leads the Developer Platform team.

Attendance: No sign-up required
Prereqs: experience building web applications
Contact: sipb-iap16-web-security at mit dot edu

Greatest Hits of 6.006

Amartya Shankha Biswas, Michaela Ennis
  • Mon Jan 11 07:00pm – 08:00pm in 34-301
  • Wed Jan 13 07:00pm – 08:00pm in 34-301
  • Fri Jan 15 07:00pm – 08:00pm in 34-301
  • Wed Jan 20 07:00pm – 08:00pm in 34-301
  • Fri Jan 22 07:00pm – 08:00pm in 34-301
  • Mon Jan 25 07:00pm – 08:00pm in 34-301
  • Wed Jan 27 07:00pm – 08:00pm in 34-301
  • Fri Jan 29 07:00pm – 08:00pm in 34-301

Covers the core material of 6.006 very, very fast.

Basic algorithms, data structures, including sorting, dynamic programming, and graphs.

Weekly programming assignments, twice-weekly office hours.

You will gain the background necessary to apply algorithmic techniques to your area of interest, and to succeed at software engineering interviews.

Sponsored by EECS department and Eta Kappa Nu

Attendance: Limited to 30 spaces, no advance signup; must attend all sessions
Prereqs: Some Python experience
Contact: Amartya Shankha Biswas, asbiswas at mit dot edu

How to Hack a Website- A Practical Introduction to Web Security

Scott Robinson
  • Tue Jan 12 08:00pm – 09:30pm in 4-231
  • Wed Jan 13 08:00pm – 09:30pm in 4-231

This class will teach you a practical introduction to web security. The content will cover how basic exploits and security vulnerabilities work, as well as common attacks, penetration testing strategies, and useful tools. If there is time, real world examples of exploits will be shown, as well as a sandbox site for you to test attacks shown in the class.

Disclaimer: All material in this class is provided for educational purposes only, and should not be used on real sites or services unless it abides by appropriate security program rules.

Attendance: Two-session series
Prereqs: HTML and Javascript knowledge; HTTP(S) also useful
Contact: sipb-iap16-hack-website at mit dot edu

Practical Python Lightning Talks

Chelsea Voss
Date: Wed Jan 13 06:00pm – 07:00pm in 4-237

Learn ten useful mini-lessons about Python at rapid-fire speed! At five minutes per talk, with one hour to finish them all, we'll teach you a ton of our favorite Python tips and tricks at as fast a pace as we can.

Topics will include the Python debugger, great Python libraries, web development, tools for testing, and more!

Suitable for anyone who has taken or is taking Introduction to Python.

Attendance: No sign-up required
Prereqs: novice Python familiarity is useful but not required
Contact: sipb-iap16-python-lightning at mit dot edu

Introduction to Vim

Ray Hua Wu, Ming Yang Ong
Date: Thu Jan 14 05:00pm – 06:30pm in 4-231

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

Attendance: No sign-up required
Prereqs: Familiarity with command line helpful
Contact: sipb-iap16-vim at mit dot edu

Emacs for Beginners

Mike Rolish
Date: Mon Jan 18 05:00pm – 06:00pm in 4-231

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.

Website: http://sipb.mit.edu/iap/emacs/

Attendance: Participants welcome at individual sessions
Prereqs: Use of a text editor that is not Emacs
Contact: sipb-iap16-emacs at mit dot edu

Current issues in SSL and TLS

Rajiv Aaron Manglani
Date: Tue Jan 19 05:00pm – 07:00pm in 4-231

SSL and TLS are the protocols which provide the foundation for securing internet traffic. We will explore current topics and issues facing the industry including SHA-1 to SHA-2 certificate migrations, Certificate Transparency, HTTP/2, free DV certificates from Let's Encrypt, and TLS 1.3.

Attendance: RSVP to contact address below
Prereqs: familiarity with HTTP and TLS.
Contact: sipb-iap16-ssl-tls at mit dot edu

Clojure for fn and Profit

Alex Huang, Tom Lyons, Mark Champine
Date: Tue Jan 19 07:30pm – 09:30pm in 4-231/4-237

This will be a casual, interactive workshop by clojure enthusiasts to introduce and showcase what you can do with one of the coolest [homoiconic] languages around.

No experience required, but experienced clojurians welcome too; we will have material for all levels!

Attendance: No sign-up required
Prereqs: None
Contact: sipb-iap16-clojure at mit dot edu

Hacking a Software Interview -- Mastering Programming Interview Questions

Ron Chaney
  • Wed Jan 20 05:30pm – 07:00pm in 36-156
  • Thu Jan 21 05:30pm – 07:00pm in 36-156

Ever wanted to work at a company like Akamai, Facebook, Google, or TripAdvisor? There's just one thing standing in your way: the interview. Whether you're a beginning programmer or a seasoned expert, this class can help you prepare for a technical interview. The class will focus on computer science topics that frequently come up in programming interviews. We will cover topics like time complexity, hash tables, binary search trees, and some other things you might learn in 6.046. Most of the time will be spent teaching participants how to formulate responses to technical questions during an interview. Real life examples will be used. If you have any interest in working at a computer science company, make sure you don't miss this class!

Attendance: Participants welcome at individual sessions
Prereqs: one MIT programming class or equivalent; 6.006 useful
Contact: Jaime Perkins, jperkins at akamai dot com

Crash Course in C

Bayard Wenzel
  • Wed Jan 20 07:00pm – 09:00pm in 1-115
  • Thu Jan 21 07:00pm – 09:00pm in 1-115

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

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

Attendance: Two-session series
Prereqs: The ability to appreciate true beauty
Contact: sipb-iap16-c at mit dot edu