# Splash! 2013 Course Catalog

Computers and Programming Engineering
Lunch Languages and Literatures
Mathematics Performing Arts
Pop (and not-so-pop) Culture Science
Visual Arts Walk-in Activity
Miscellaneous Social Studies

You can browse the Splash! 2013 class offerings below. To register for the program, see our student guide.

Computers and Programming

C7380: Promiscuous Mode-Network Protocol Analysis Full!
Difficulty: **
Teachers: Harvey Yee

Do you want to be in Promiscuous (Monitor) mode? You may if you are a network engineer. Join us in learning what is involved in Network Protocol analysis, and along the way learn about network architecture and protocols. Depending on what is available in the classroom, a demonstration of a wired or wireless network session will be provided. A free copy of Linux LiveCD will be provided so that you can continue your learning of network protocol analysis after this class.

Prerequisites
just come with a sense of curosity

C7459: How to pass the Turing Test
Difficulty: **
Teachers: Megan Belzner

Have you ever wondered whether the person you were talking to over the internet was secretly a computer? In this class we'll discuss a simple test for artificial intelligence which measures whether a computer and a human can be distinguished in conversation. We'll discuss some of the potential pitfalls of such a test, as well as look at some real life examples from ELIZA to Cleverbot. From here, we'll touch on the nature of intelligence, and the ways in which machines are (or are not) intelligent.

C7900: Quantum Computation
Difficulty: ***
Teachers: Bennett Amodio

This will be a very flexible class with an introduction to quantum computation. We can cover basics of quantum computation, including a brief overview of the history of quantum computing, the qubit, and quantum algorithms. From there, we can move to promising future applications for quantum computation. We could also talk about current topics in quantum computation, or we can go more in depth to gain a more rigorous understanding of the math of quantum computation.

Prerequisites
Some linear algebra highly recommended. Being comfortable with math and physics would be helpful. Quantum mechanics experience is NOT required -- we will go over some basic necessary concepts in class.

C7503: Intro to Circuit Design
Difficulty: **

Ever wondered how a computer works, how to build your own 3D printer, or how to be a better programmer?

Circuit boards are awesome. They connect our digital lives and the resistors, capacitors, and microchips that run them. This class will jumpstart your knowledge about circuits by teaching you how to make your very own Printed Circuit Board (PCB). We'll use a free program called Eagle to teach you everything from the components you'll need to how to lay them out. Build your own Arduino! Make a LED light game! Hack your own web server!

Join us for this exciting class that will teach you everything you need to know about circuits and hardware. At the end you’ll even get to take home the PCB that we designed together!

C7838: Web application security
Difficulty: ***
Teachers: Favyen Bastani

As we increasingly rely on web applications for a variety of tasks, their security is becoming paramount. We'll discuss common vulnerabilities such as cross-site scripting, SQL injections, and cross-site-request-forgery attacks, and look at some examples and their implications. Then we'll see how modern technologies prevent these attacks by design, but why they continue to be a problem.

Prerequisites
Basic knowledge of how websites work. Knowing what GET and POST mean is useful but not required.

C7988: Bits and Bytes: How to Compute
Difficulty: ***
Teachers: Quentin Smith

We'll take a whirlwind tour of the foundations of computing. Starting from the humble electron, we'll introduce transistors, logic gates, binary numbers, and instruction sets, and then we'll show how you can put them together to make a very basic computer.

Prerequisites
A basic interest in electronics and math is helpful, but not required. If you know what a "volt" is, and how to add and subtract numbers, you're good!

C7800: Intro Programming for Newbs Full!
Difficulty: ***

Don't know programming? Excited to learn? We'll try to help out! Warning: expect no pity. No seriously, you won't remember anything =D!

Prerequisites
no programming experience

C7352: Computer Building 101 Full!
Difficulty: **
Teachers: Joseph Lodin

Ever thought about building your own computer? Maybe the possibility of potentially saving HUGE gobs of cash is enticing, perhaps the prospect of playing Skyrim on MAXIMUM settings may lure you in, or maybe you’re just a hobbyist who’s curious about how to build a desktop computer.

In this class, we’ll go over the process of picking out the right parts for your specific needs, what those parts actually do in your computer, how to survive the interminable wait for your parts to arrive (curse you, Newegg 3-day shipping!), how to actually put the parts together once they DO arrive, and we’ll also go over some questions like “which operating system do I use” and “why is this actually way easier than I thought it would be.”

If you’ve ever considered building a desktop computer so you don’t have to deal with the painful process of owning a Dell or HP, or maybe just want to learn a thing or two about computers, this is definitely the class for you!

Prerequisites
A basic knowledge of computing would be good, like knowing the difference between a desktop and a laptop, but anyone should be able to get some good stuff out of this class. -IMPORTANT NOTE- This is just a crash course in the fundamentals of computing hardware, we’re only going over the basics - if you’re looking for a hardcore discussion on the merits of Intel vs. AMD or some other in-depth lecture, you probably won’t find it here. Find me after class if you want to duke it out over which graphics card is superior.

C7946: Bitcoin: everything you ever wanted to know
Difficulty: **
Teachers: Duncan Townsend

Bitcoin is a cryptographic, pseudonymous, peer-to-peer internet currency. It's also really, really cool. Bitcoin's meteoric rise has made some people millionaires overnight.

This class will cover in depth the technical details of the Bitcoin protocol. We will also touch on some of Bitcoin's interesting economics and events in Bitcoin's history.

C7860: Scheming Away Full!
Difficulty: ***
Teachers: Brian Lee

Have you ever wanted to learn how to program?

Learn how to program in Scheme, one of the simplest yet most powerful languages ever designed.

Prerequisites
None

C7805: Learn to Program Your Own Apps with App Inventor! Full!
Difficulty: **

Program your own apps for an Android phone or tablet by using App Inventor 2.

Prerequisites
None

C7875: How Computers Work: Voltages and Transistors
Difficulty: **
Teachers: Nicole Glabinski

You might know that computers run on 1s and 0s, but how in the world does that actually work?

In this class, we'll talk about how computers work at their lowest level. We'll cover how voltages can represent 1s and 0s and how processors use transistors and CMOS circuits to perform basic logic expressions.

If we have time, we'll also talk a little bit about the higher levels of computer architecture and how all those binary numbers allow computers to do all the complex tasks we're familiar with.

Prerequisites
You should have some familiarity with boolean expressions or boolean algebra and truth tables. A very basic understanding of circuits (e.g. knowing what a voltage is) would also be helpful.

C7355: Communication is Key: How to be a Professional Nerd
Difficulty: **
Teachers: Joseph Lodin

Us techies are awesome. We can write our own operating system, build robots from junk, fix a computer just by looking at it, you name it - we can do it. But, is that enough to get a job or start a business? In short, probably not. In long... come to this class.

We'll have a (mostly) informal chat about how to be successful, and what important skills you may not have considered.

Prerequisites
Technical knowledge is NOT required, just an open mind and willingness to think outside the box.

C7894: Demystifying the Command Line
Difficulty: **
Teachers: Lars Johnson

Unleash your computer's hidden power by using the UNIX command line that underlies the Linux and Mac operating systems. Learn command-line syntax to speed up common tasks such as file management, data entry, and text manipulation. We will explore Unix from the ground up, starting with the basics of the command line and ending with to powerful, advanced tools.

You will be able to search your computer using regular expressions, quickly compare what has changed between two files, create simple secret codes, quickly convert units, and even write your own simple program, all using only a few commands on the terminal.

Prerequisites
Basic surface understanding of the computer filesystem (filepaths, directories, etc.)

C7665: Dynamic Programming
Difficulty: **

Ever wondered what is dynamic programming? Come and discover what it's about!

Prerequisites
Basic knowledge of programming

C7539: Make Your Own Website! Full!
Difficulty: **
Teachers: Abhishek Nagaraj

The objective of this class is simple --
we will make our own website with the most basic tool out there, HTML and learn how the internet works in the process!

I will host your pages for you, for a year and you can share what you've created among your friends and family!

Prerequisites
some familiarity with using a computer, typing and using the internet is needed.

C7902: Learn You A Haskell: Functional Programming
Difficulty: **

FUNCTIONS ARE DATA
LISTS ARE INFINITE

Haskell is a purely functional, strongly typed programming language with non-strict evaluation. If none of those words made sense to you, you should take this class to fix that! We'll talk about the basics of programming in Haskell, why it's the best programming language, and how you can fit an infinite list in your computer's memory.

Prerequisites
You should have experience programming in some language, but no knowledge of Haskell is necessary.

C7502: How to Fold Anything!: Computational Origami
Difficulty: **

Lots of people like folding origami, but have you ever wondered how those models were actually designed? Here in the 21st century, we have computers to help us!

Come learn the theory behind techniques like "circle packing" and Robert Lang's "tree method," and even try your hand at designing and folding your own model!

Already an origami expert and looking to break into design? Never made a paper crane, but interested in folding as a computational problem? This class is for you!

C7392: Write a Sudoku Solver
Difficulty: ***
Teachers: Ziv Scully

There's this really cool programming language called Haskell. We could spend a while going over all of its features, slowly and rigorously introducing the language. Alternatively, we could jump in and write a Sudoku solver.

I like being alternative. It's gonna be wild.

Prerequisites
Willingness to accept a concept that's a bit confusing and not let it block you from understanding other concepts that use it. Programming experience helpful but not required

C7898: What's Better than Free? Full!
Difficulty: *
Teachers: Lars Johnson

Why pay hundreds of dollars for software when there are free, open-source alternatives that are just as good? After a brief discussion about what open source software is, we will take a whirlwind tour of available open-source software. We will quickly overview a variety of programs including free office suites, 3D modeling programs, audio editors, graphics programs, and assorted productivity tools. (Although all of the programs covered work on the Mac operating system, many are cross-platform and work on Windows and Linux as well.)

C7736: A Secret to Faster Typing
Difficulty: **
Teachers: Kevin Chen

Working faster doesn't just come from faster typing speed; you can switch to the world's most powerful editor.

Imagine an editor where you can go to the next sentence in one keystroke.
Auto-complete an entire line in two keystrokes.
Encrypt files and browse the internet.

Well, this editor exists, and it can do much much more. It's called Vim. Come and learn how to use it.

Prerequisites
typing speed of at least 50 wpm recommended. some coding experience lightly recommended.

C7433: Programming Concepts Full!
Difficulty: **
Teachers: Aaron Dunbrack

Learn how to write a program, at least in theory. Note that this course will not use any particular language, because languages have syntax, and syntax is annoying. Instead, we are going to learn conceptually how to program in any language, which you can then use in any language you want, whether it’s Python, C, Java, or something else entirely.

Prerequisites
None - if you have some experience with programming (in fact, if you know how to program in just about any language) then this course will probably be too easy.

C7653: Graph theory
Difficulty: **

Learn about search algorithms and graph theory!

Prerequisites
Basic knowledge of programming

C7381: Wireshark Workshop
Difficulty: ***
Teachers: Harvey Yee

Here is follow-up course to Promiscuous Mode-Network Protocol Analysis. In this course, we will hone our knowledge and skills in understanding and decoding network traffic.
Come prepared to get a deep dive into network protocol analysis by bringing a laptop so you can participate in a course discussion of some of the problems that we will uncover and solve.

C7928: How to be an AI Full!
Difficulty: **
Teachers: Megan Belzner

This class will discuss some of the topics covered in MIT's Introduction to Artificial Intelligence course. But there's a twist - you'll be playing the role of the AI! Ever wondered how the facial recognition software in your camera works? Or what sorts of rules govern decision making? Learn about the algorithms that make an artificial intelligence tick in this interactive class.

Prerequisites
Some exposure to trigonometry would be useful.

C7683: Hacking Solitaire
Difficulty: ***
Teachers: Damon Doucet

Want to learn how to hack video games? Technically games (just like programs) are files on your hard drive. What's to stop us from modifying them just like you edit your Word documents?

Prerequisites
Programming experience in any of Java, C++, C#, Python, etc. Preferably a year at least

C7340: Let's Talk About Servers And Server Hosting!
Difficulty: ***
Teachers: William Little

In this class I'll be explaining the practical side of servers. I'll be answering questions such as "those big humming boxes in a dark room, what do they do?" And "why do I lag on some game servers but don't lag on others?" And most importantly, "how do I do all of this myself?"

Well, I can't tell you how to do everything you want to do, but I can point you in the right direction and give you an introduction! We'll be looking at some cheap hardware and free software that may help you understand some of the more power hungry tasks that these marvelous creations handle. Want to host a Minecraft server? Sure! File server? Web server? Mail server? MySQL server? All possible with very little budget, as long as you're willing to stretch your mind muscles a bit.

Prerequisites
Some knowledge in how the Internet works may help. Decent knowledge in how your own computer works will be beneficial as well.

C7934: How Computers Recognize Patterns: An Introduction to Machine Learning Full!
Difficulty: ***

How can you teach a robot to distinguish red objects from blue objects? How does Facebook know which of your friends appear in your photos? Can you use today’s articles in the Wall Street Journal to predict tomorrow’s trends in the stock market?

Machine learning is a popular field. It helps computers to understand patterns that humans can find "intuitively" without too much effort on the programmer's part. But how does it all work? Take this class and find out!

Prerequisites
You should be comfortable with thinking abstractly. We will be using some more "advanced" mathematical tools, like vector/matrix algebra and probability distributions, but mostly at an intuitive level. I do not assume any prior knowledge of these subjects. This class also makes use of Python and NumPy for working with actual datasets, so familiarity with Python is a plus, but not absolutely necessary. (And if you don't know any Python at all, don't worry!)

C7584: Learn Python Full!
Difficulty: **

This is not a class on snakes nor Monty Python. We will go over the fundamentals of python, and teach you all about the power a programming language can give. Take this class if you have little to no programming background, but want to learn how to program.

C7353: Not Everyone's a Programmer! Computer Majors/Careers in an Hour
Difficulty: *
Teachers: Joseph Lodin

So, you're a high school student who's interested in computers, right? You know you want to study them, but every counselor you talk to just tells you the same thing, "go into computer science!" 5 minutes of research online and you realize that no, computer science isn't right for you, you want to build and run servers, or sanitize databases, or work as a security analyst, or whatever!

In an hour, we're gonna go over a bunch of different majors and possible careers for computer hobbyists like you, so maybe now you can do your own research instead of letting your counselor or someone else tell you that CS is the only way to go.

Prerequisites
Having an interest in computers. :)

C7510: Computers at the Lowest Level
Difficulty: ***
Teachers: Letitia Li

Ever wonder about the location of every electron in your computer? Probably not, but we'll get as close as possible to that level of detail! We'll go over gates and how to build them, encoding, and everyone's favorite programming language: assembly language!

Prerequisites
Some Physics E+M

C7837: Hadoop - tackling "embarrassingly parallel" big data
Difficulty: ***
Teachers: Favyen Bastani

Learn how to write programs that process large amounts of data in parallel! We'll be using the Apache Hadoop framework for Java. We'll discuss how the framework works in general and its applications, and then write a program in Hadoop for a simple task.

Prerequisites
Basic knowledge of Java.

C7897: How Operating Systems Work
Difficulty: ***

You deal with operating systems on a day-to-day basis -- Macs, Windows, Linux, etc. An operating system is the software that lies between your computer hardware and the applications you would interact with on a day-to-day basis.

Operating systems have to be carefully designed for security, modularity, and speed. In this class we'll look at the basics of how operating systems function to meet these goals.

Prerequisites
Knowledge of C programming is highly recommended. Knowledge of x86 architecture would be helpful but is not necessary.

C7984: The Digital Abstraction Full!
Difficulty: **
Teachers: Sara Sinback

What's inside your computer? A CPU, hard drive, a motherboard -- stuff like that. What's inside those? Wires and transistors. But at the very heart of your computer, beating with all the regularity of an insistent square wave, is an idea. That idea is what we know as the digital abstraction. What is it about that sequence of 0's and 1's we always hear about that is so valuable to us? Learn about how digital systems make complicated behaviors predictable and controllable. We'll talk about binary mathematics, boolean logic, and the ways systems manage digital signals.

Prerequisites
Previous exposure to boolean logic, base-2 math, or simple rules about how voltages and current work might make this class easier, but we'll assume no background in computing, logic, or anything like that. I will stop to take questions so don't be afraid to take this class if you don't know much about computers!

C7627: Intro to Graphics Programming with Processing Full!
Difficulty: **
Teachers: Daniel Richman

Always wanted to do computer programming, but didn't know how to get started? We'll learn how to think the way computers do. Then we'll program some cool graphics/animation programs in Processing.

Not for you if you have substantial programming experience.

Prerequisites
Basic trigonometry. If you know what the unit circle is, you're good.

C7509: Living Optimally with Dynamic Programming
Difficulty: **
Teachers: Letitia Li

Imagine on Halloween, some grouch only lets you keep a certain weight in loot. How would you optimize your candy-induced happiness for the next year, while you plot revenge against that grouch? Learn a certain type of optimization algorithms along with map-finding and other algorithms.

C7400: A Brief History of Web Design Full!
Difficulty: **
Teachers: Megan Belzner

Ever wondered what web developers spend their time thinking about? Want to know how we got from "text on a page" to today's intricate and highly interactive websites? Want to know how to make more website with less code? This is the class for you!

In this class, we'll discuss the timeline of web design paradigms and technologies, from the first days of the World Wide Web to today. We'll get an overview of the different basic technologies, where they came from, and how they work together. Then, we'll see some of the new ideas and technologies that make modern web design possible. Finally, I'll send you home with some tips on how to start learning this stuff yourself.

Prerequisites
Some experience with web design (or any sort of programming) helpful, but not strictly necessary.

C7440: The Crashiest Crash Course in Computer Vision
Difficulty: ***
Teachers: Tommy Chen

Learn a bunch of ways to program a computer to "see like we do." We will chat about the awesome field of computer vision, program a panoramic camera together, and see some amazing live demos. There will also be cookies provided. (Also Splash is my birthday this year, so please come! :D)

Prerequisites
Okay programming skills and a good foundation in matrix math.

C7435: Automated Theorem Proving
Difficulty: ***
Teachers: Jason Gross

Are you interested in getting computers to do your math homework for you? Are you confused about what constitutes a "valid" proof? Are you interested in seeing computers check your proofs? Come experiment with the interactive proof assistant, Coq!

I'll begin by talking a bit about the history of computer-assisted proofs, including the first proof of the four color theorem and the recent formalization of the odd order theorem. Then, you'll experiment with simple arithmetic and logic proofs in the Coq proof assistant, while I walk around and answer questions and give help.

Prerequisites
You should understand basic logic (if you can do the puzzles on http://www.math.hawaii.edu/~hile/math100/logice.htm, you'll be fine). You should understand the programming concepts of "function" (or "procedure" or "method"), "function arguments", "if statement", and "data types" (such as integer, string, double, etc.). You should understand what it means to prove something (reading and understanding http://www.mathcamp.org/prospectiveapplicants/quiz/proofs.php should be sufficient).

C8098: Cracking a Hackathon
Difficulty: **
Teachers: Siddharth Trehan

So you know how to code, and you've always wanted to team up with a few others to build something incredible, but you've never gotten the chance to do a hackathon before. This class is an opportunity to do just that. We begin with a few tips for hackathon success (including how to host your own hackathon, which can be just as fun), and cover some useful API's. Later, we split into teams and try to hack our own projects, and we finish by showing off our creations to the class.

Prerequisites
Knowledge of at least one programming language is required, experience with platforms other than the desktop may be helpful

C7354: How Websites Work, Home Networks, and Run Your Own Game Server: Networking 101 in Three Parts
Difficulty: **
Teachers: Joseph Lodin

You may not realize it, but 99% of things you do on your computer require an Internet connection. Computer networking is an extremely advanced field with countless different uses, protocols, and experimental research making things faster and more reliable. To save time, I'm gonna summarize basic networking with three short topics:

-How Websites Work: When you click a link, what happens in the seconds between that click and when the next page is displayed on your screen? It's not as simple as it sounds, and often it involves a hundred (or even thousand)-mile journey happening in the blink of an eye. Also, I promise I'll briefly address why Splash registration always seems to hang. ;)

-Home Networks: So you probably know about the big Internet, the World Wide Web, right? Did you know that in most of your homes/apartments/wherever, you have a mini "internet" that functions all on its own? Let's look into the setup of a normal home network, and I'll even explain how to host your very own LAN party!

-Run Your Own Game Server: Ever feel like hosting your own Minecraft server, just so you can be the evil game admin for once? Maybe host a TF2 server and go crazy with mods. The sky's the limit! We'll go over just what a game server is, how to run your own, and even how to set it up so people across the world can join!

Prerequisites
Anybody who uses a computer can come to this class and learn something! We really won't go into too much technical detail, so if you already run your own game server or make/host your own websites, you probably won't see much new information.

C7960: Software Engineering: Building Big Programs
Difficulty: **
Teachers: Louis Wasserman

If you’ve ever worked on a program for longer than a week, you know it can start to run away from you, and become a tangled morass of code.

We’ll talk about how big software engineering companies like Google, Amazon, and Facebook avoid these problems and manage hundreds of thousands of lines of code without their programs degenerating into spaghetti.

Prerequisites
Some basic knowledge of programming in any language.

C7947: Artificial Intelligence in Video Games
Difficulty: ***
Teachers: David Bocek

Ever wondered about the vast world of video games that the player DOESN'T control? Then come learn about the wonderful land of game AI! This class will focus on video game AI techniques and how modern and classic games implement them to present challenges to players. Will cover game genres including: RPGs, strategy games (RTS & TBS), shooters, and side scrollers! Come learn how games are made from navmeshes and state machines to emergent behavior, planning, and dynamic difficulty! (Not knowing one of many of these terms is perfectly fine!)

Prerequisites
Some experience playing video games, basic understanding of programming (helpful, but not necessary)

C7888: Splay trees are magic!
Difficulty: **

Computer programs need to store and manipulate data--but that data can stored in many different ways! Sometimes it makes sense to store data in a binary tree, but in order to maintain quick lookups, binary normally need to be balanced. And there are lots of different specialized binary trees for different applications.

That's where the magic comes in: splay trees don't stay balanced, but are in many cases provably as or more efficient than more complicated, specialized data structures for particular types of problems. And it gets better--the (as-yet unproven) dynamic optimality conjecture proposes that for any sequence of accesses of elements, splay trees are at least as efficient as a specialized data structure which knew the sequence of accesses ahead of time!

C7983: Introduction to Algorithms
Difficulty: **

Algorithms describe a "recipe" for doing something. Having good algorithms that are fast and easy to use is important for every area of life.

This class will be a survey of several computer science algorithm topics including sorting, hashing, and graph algorithms.

C7909: The History of Operating Systems
Difficulty: *
Teachers: Michael Skuhersky

Let's go back to a time before any of us were born to learn about the formative years of operating system development! Learn why DOS dominated! Learn about the Unix family tree! Learn how the rise of personal computing forced OS designers to innovate! Emphasis on pre-1990.

Difficulty: ***
Teachers: Dan Noe

I started teaching this course in 2006 when dual core processors were a newfangled thing. Now even cell phones have multicore processors! Programming to take advantage of today’s multicore processors is tricky and filled with pitfalls. We’ll talk about Amdahl’s law and how it benefits the performance increases from adding processors. I’ll discuss how programming language locks are actually implemented under the scenes. And I’ll talk about different ways computer scientists like to abstract concurrency to make it easier to program.

Prerequisites
You should know the hardware parts of a computer (Processor, RAM, etc) and have some experience with any programming language.

C8091: Cyberespionage
Difficulty: **
Teachers: Benjamin Tidor

What happens when a government gets into the business of computer hacking? Back in the good old days, viruses were written by criminals out to steal your money. Nowadays, we can do more interesting things—like sabotaging a nuclear enrichment facility, for example, or spying on an entire country’s private email messages. In this class, you’ll hear about recent break-ins and sabotage on the international stage while learning a bit about the everyday systems that keep us safe and secure on the Internet.

Prerequisites
Know how to use a computer.

Difficulty: **

Ever wondered how computers can do so much with only those 1s and 0s you see in movies? Come learn about how your computer works at the lowest level!

Prerequisites
Basic logic

C7587: How to Conquer Your Fear of Programming!
Difficulty: **
Teachers: Akshara Thejaswi

Most people shy away from programming because it tends to look intimidating. If you want to be an engineer or a scientist of any sort, you're probably going to have to learn how to use MATLAB. Come learn the basics! Programming is really nowhere near as intimidating as everyone thinks it is. I'll be going through basics of the software, going through example problems, and maybe having fun, too.

Kidding. Fun guaranteed. Come have some fun while simultaneously learning something you'll actually use!

Prerequisites
None, but previous experience with programming (however little) may be helpful. But it's an intro course, so don't worry if you've never programmed before!

C7892: How To Talk To Your Computer Full!
Difficulty: **
Teachers: Miriam Gershenson

You probably know that you can program your computer. You might even have done some programming yourself! But how does your computer understand and execute what you've written? Come learn about how you get from a text file with a bunch of code in it to a running program.

Prerequisites
Having programmed before in any language will be helpful, but not at all necessary

C8035: Under the Internet's Clothes with Wireshark
Difficulty: **
Teachers: Quentin Smith

How many times have you typed "google.com" or "wikipedia.org" into your web browser? Have you ever wondered what's actually going on behind the scenes to get you the summary of Hamlet you so desperately wanted? We'll lift up the skirt and show you all the hidden stuff that makes the Internet work. We'll talk about things like IP (Internet Protocol), DNS (Domain Name System), HTTP (HyperText Transport Protocol), and more, as we look at all the data your computer sends and receives on the Internet.

C7870: Put Together The Pile of Junk! Full!
Difficulty: **

Ever wondered how to build a computer, or what all of those random parts do? Help us put together computers that are older than you are, and learn about the innards in the process!

Prerequisites
Interest in computer hardware, patience.

C7336: What Makes The Internet Work?
Difficulty: ***
Teachers: William Little

Let's open up the internet and see what's what! In this class I'll be showing you how things like how Minecraft and Team Fortress 2 servers are accessible to you from anywhere around the world, how websites such as Facebook are able to handle so much traffic, why domain names exist, what kind of hardware goes into your daily browsing, all the way down to why there's no place like 127.0.0.1! (or for some people, there's no place like ~)

Put on your nerd/geek hats! You'll be in for a wild technical ride.

Only a small portion of this class is going to be a presentation. Try to think up some questions/discussions/rants to bring up! We'll have plenty of time for talking.

Prerequisites
Some basic knowledge in computers. If you know how to turn a computer on and open a web browser then you should be able to at least understand most of the concepts that I'll be teaching.

C7434: Working with Databases Full!
Difficulty: **
Teachers: Aaron Dunbrack

Learn the basics of working with databases - mainly SELECT, UPDATE and DELETE - using SQL. We'll go over advanced topics such as joins if we have time.

Prerequisites
If you know another programming language, that’s great; if not, that’s fine too, but you might find it more difficult if you want to use it outside of class. If you already know SELECT, UPDATE and DELETE (including WHERE clauses) then you'll probably be bored.

C7504: Computational Photography: Make an image look like it was painted
Difficulty: **

Learn about what makes a photograph a photograph, and how to use them in a program to make them look like they're painted by a human! See this link for examples:
https://skydrive.live.com/view.aspx?resid=81C8A82979AEED8F!1364&app=WordPdf&authkey=!AGMgqriGta8Ovrg

Prerequisites
Computer Programming helpful, but not required

C7601: Wi-Fi (in)security Full!
Difficulty: ***
Teachers: Roger Zurawicki

Every wanted to learn how Wi-Fi works?

We will be exploiting WEP, WPA, and WPA2. (That's right, no one is safe.) We will learning all about Wi-Fi, TCP/IP networking, and the internet along the way.

Students bring home a free Linux live. CD

Prerequisites
Just an interesting in any of the following: Computers, the internet, radios, hacking

C7802: Reverse Engineering (aka serious hacking) Full!
Difficulty: ***
Teachers: Yuchen Fu

Ever wondered how hackers actually get stuff done? How are exploits found? How are keygens made?

Reverse engineering is a key to all of those things. In simple terms, the goal of reverse engineering is to take a compiled program and discover how it works without ever seeing the source code. This technique enables hackers to have very good (often complete) understanding of the behavior of the programs, and all the rest follow from there.

Within the two hours that we have, we're going to do some quite serious work together, including decoding encrypted data, writing our own keygens, bypassing security checks and some other stuff--of course, all in a legal, safe, and education-oriented settting. In addition, we will also cover the legal aspects of reverse engineering--when are you allowed to reverse engineer, and what are you allowed to do with your product--which is of great importance as we deal with this rather "grey area" subject.

Prerequisites
Basic programming ability will be assumed. Understanding of modern computer structures (CPU, memory, stack model, thread model, etc.) would also be assumed to a basic degree, although we will go into more detail in class. In addition, students will be assumed to be able to read at least one kind of assembly language, i.e. to be able to understand the meaning of basic commands. Students who haven't had that experience may learn about x86, which is what we'll use primarily, with the following web pages: https://en.wikibooks.org/wiki/X86_Assembly (you only need the first two sections, "x86 Basics" and "x86 Instruction Set") http://www.cs.virginia.edu/~evans/cs216/guides/x86.html

C8020: Alice - 3D Computer Animation
Difficulty: **
Teachers: Michelle Ng

Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. For this course, we will be using Alice as a learning tool for introductory computer programming. The 3D graphics and a drag-and-drop interface makes it easy to learn and facilitate a more engaging experience for students with no programming background. We will begin with the navigation of the Alice tool and the basic steps in creating an animation - storyboard, character (objects), actions (methods). We will also learn about fundamental programming concepts such as class, object, parameter, if/else, loop, etc. The final hour of the course will be devoted for an “animation-hour” to encourage students to apply their new skills to create their own animation programs using Alice. The Alice software is developed by Carnegie Mellon University and can be downloaded for free (http://www.alice.org).

Prerequisites
Strong interest to learn and explore animation - no prior programming experience is required.

C7785: Learn to LaTeX!
Difficulty: **
Teachers: Descartes Holland

Learn how to use the most powerful typesetting language in the world! Ever wondered if you could type your math homework and have it look extra nice? Come learn how!

Prerequisites
Any previous programming experience helpful but not necessary

C7520: Make A Computer! (On Paper)
Difficulty: ***
Teachers: Ben Horkley, David Xiao

1) Here's a transistor. 2) Take this class. 3) ??? 4) Computer! This class will take you through the basics of what makes a computer work, from the transistor level all the way up to putting it together into a basic processor. Learn what it takes an MIT class 2 months to cover in 3 hours!

Prerequisites
Knowledge of basic Boolean algebra (and, or, xor, etc.)

C8092: Probabilistic Robotics
Difficulty: **
Teachers: Benjamin Tidor

Let's face it: from a robot's perspective, the real world kind of sucks. There are people to bump into, stairs to fall down, and distances that are never quite what you measure them to be. In this class, we'll discuss how noise plays a central role in the field of robotics, then learn about Bayesian probability and how it can help us out.

Prerequisites
Familiarity with basic probability, Venn diagrams.

C7907: Introduction to Parallel Computing
Difficulty: **
Teachers: Michael Skuhersky

Have a lot of computer hardware? Link it together to make your calculations go faster! This class will explain the philosophical approaches to coarse and fine-grained parallelism, go over how different types of hardware are utilized by software and programming techniques, and include some real world examples of how researchers use parallel methods. Half the class will focus on multi-CPU methods, the other half will focus on advances in GPU methods.

Prerequisites
Basic understanding of computer hardware, basic knowledge of programming structure.

C7493: Machine Learning & Audio Analysis with Python
Difficulty: ***
Teachers: Daryl Sew

Machine learning is a field of computer science that concerns writing programs that can make and improve predictions or behaviors based on some data. The applications of machine learning are very diverse - they range from self driving cars to spam filters to autocorrect algorithms and much more. Using scikits-learn, an open source machine learning library for Python, we'll cover reinforcement learning (the kind used to create artificial intelligence for games like chess), supervised learning (the kind used in handwriting recognition), and unsupervised learning (the kind eBay uses to group its products). We'll then cover audio analysis through Fourier transforms with numpy, an open source general purpose computational library for Python, and we'll use our newfound audio analysis and machine learning skills to write very basic speech recognition software.

Prerequisites
Prior programming experience strongly recommended. Knowledge of calculus helpful but not necessary.

C7743: Interactive Computer Algorithms
Difficulty: **

Don't just sort lists -- get sorted! Don't just hash objects -- get hashed! Learn about common computer algorithms by getting out of your seat and getting sorted, hashed, balanced, and more!

Prerequisites
An interest in computer science and algorithms. Some background helpful but by no means required.

Engineering

E7514: Environmentally Benign Design and Manufacturing Full!
Difficulty: **
Teachers: Vrajesh Modi

After this class, you will be able to: (1) justify why environmentally benign design and manufacturing matters; (2) evaluate and compare the environmental impact of various products and technologies; and (3) recognize and challenge questionable environmental analysis. Format will consist of a 25-minute lecture on theory followed by a 25-minute discussion/exercise. Students will be divided into groups for the exercise.

E7788: Design of Energy Systems
Difficulty: **
Teachers: Amos Meeks

In the US we don't think about our electricity very much. It's just a few holes in the wall that make things work when we plug them in, and then at the end of the month we get an electricity bill. But where and how is all of this electricity made? Why does it cost what it costs?

This class will be about the engineering and economics of energy systems. We'll talk about common and not-so-common ways of generating electricity, and some of their potentials. Then we'll talk about different ways of putting these together into a system, and ways of characterizing and measuring that system.

Prerequisites
Knowing the difference between a Joule and Watt will help, but I'll also talk about it.

E7993: Questions about Living in Space and Future Space Settlements Full!
Difficulty: **
Teachers: Bruce Mackenzie

Bring your questions about how we might live in Space, on Mars, asteroids, moons of planets, or Luna (what Earthlings ‘the Moon’, forgetting that there are lots of moons)
I will try to answer them. and maybe throw some
questions back at you. Preference for questions about how to live in
space, construct spinning space settlements for artificial gravity, grow
food, find air and water, stay warn or cool, etc. There will be little
math or equations, just general information.

E7476: Programming Life: Introduction to Synthetic Biology
Difficulty: **

Play god with cells! We'll explore the fast-emerging field of synthetic biology, with a focus on learning how to develop genetic circuits (like electrical circuits but with DNA) to control cellular behavior. By the end of the class you'll be able to design your own biological circuit and understand how to build it in real life - theoretically, anyway!

Prerequisites
A basic understanding of molecular biology (DNA replication & transcription, etc.) will be helpful

E7566: Slotted Disk: How to find the velocity of a falling ball.
Difficulty: ***

If the disk is spinning, and the ball is falling through the slot, how do you calculate its velocity? Come find out and learn concepts of dynamics.

Prerequisites
algebra 2, physics mechanics

E7711: Sustainability Series: Biofuels n' Smores Full!
Difficulty: *
Teachers: Divya Arcot

Want to learn about Biofuels? Want to eat some s’mores? You can do both!

Come take a relaxed class about the application of synthetic biology to biofuel production and make your own s’mores!

Prerequisites
AP Biology or a high school Biology course.

E7982: How to Live on Mars Full!
Difficulty: **
Teachers: Bruce Mackenzie

How would you build a house on Mars? I’ll show lots of pictures of
possible Mars structures. We will review the conditions on Mars which
affect how you would live, work, grow food, and build houses.
Differences from Earth include: low temperature, very low pressure,
carbon-dioxide atmosphere, almost 25 hour days, long seasons, dust,
and radiation. One advantage is lots of cheap land. The Mars soil and
air have every element we need to live and build structures, but not
in convenient building forms such as wooden 2x4’s. We might have to
make fiberglass, brick, or aluminum structures. They must be
cylindrical to hold the internal air pressure, with air-locks for
doors. Oh, incidentally, how to pay for the rocket to get you there is
not included. I will also suggest ways you can get involved and help
the settlement of space.

E7981: Design that analog circuit! Full!
Difficulty: **

Ever wished you could turn off the light without having to get out of bed? Wanted a system that will close your curtains when it's too bright out? We're here to help you take that first step!
Here are some cool things we *might* use to make even cool-er things: LED, diodes, transistor, temperature sensor, photocell, comparator, Op Amps, motors, potentiometers, and switches.

E7771: Build-It with D-Lab!
Difficulty: **
Teachers: Jessica Huang

D-Lab is a program at MIT building a network of innovators to design and disseminate technologies that meaningfully improve the lives of people facing issues of poverty around the world.

Our "Build-It" modules provide basic technical training on how to use tools to make something, while applying the skills learned to build practical technologies. For example, we have offered "Build-It" modules to make useful agricultural tools and battery chargers with communities in Haiti, Brazil, Ghana, Uganda, and Zambia, while teaching basic circuitry, woodworking and metalworking.

A team of D-Lab university students will be traveling to Ghana over January to lead "Build-It" modules with high school students in the community of New Longoro. We would like to practice with you first, and get your feedback.

Please come try out some of our "Build-It" modules, and make your own versions of technologies that D-Lab has used in international development! Become a part of our global network of innovators!

E8079: Hydro Carnival! Full!
Difficulty: **
Teachers: Michelle Dutt

Step right up! Come get your hands wet tackling the most challenging challenges, solving the most mysterious mysteries in the known hydrosphere! This year's Hydro Carnival features three midway games that test your brain and braun. Do you have what it takes to win a battle against water with nothing but your lungs? Can you explain the unexplainable and reason what makes a "special" ice cube sink? Are you capable of great magic by creating a cloud in a bottle that doubles as a rocket? You'll perform three hydrology experiments to answer these questions and learn about the physics of water. So come on down to the Hydro Carnival where great prizes are to be won and great science is to be discovered!

1) Lungs of Steel
2) A Sinking Feeling
3) Cloud in a Bottle Rocket

Come for the prizes or come for the thrill, but be ware...you might learn something!

E7833: Natural Biomaterials for Tissue Repair, Reconstruction, and Regeneration
Difficulty: *
Teachers: Sujata Bhatia

A new class of implantable medical materials, constructed from naturally-derived and renewably-sourced polymers, is poised to transform clinical medicine by providing materials with improved performance and versatility. Biochemical engineering and biomedical engineering, both of which fall under the broad category of biological engineering, are being brought to bear for the development of bio-based polymers as biomedical materials. Toward the goal of a sustainable bio-economy, research in biochemical engineering is increasingly devoted to the development of renewably sourced materials, such as bio-polymers and bio-composites derived from biomass and obtained from agricultural resources or microbial production. At the same time, innovators in biomedical engineering are seeking novel materials for implantable medical devices which will be optimally compatible with the human body. Such optimized materials will have properties of biocompatibility and mechanical tunability that maximize the clinical benefits of the implant. A natural intersect exists between these two areas of emerging research: naturally sourced polymers may be ideal for the design of new biomedical devices, as such polymers can effectively interface with human cells and tissues. Moreover, naturally-derived polymers can allow developing nations to join in the biomedical revolution in ways that were not previously possible. Bio-based polymers can empower developing countries to leverage their own agricultural capabilities to enter the biomedical revolution. This class will discuss the evolving field of bio-based polymers as biomedical implants, and describe examples of success stories in wound closure, tissue repair, and tissue regeneration. The class will describe several specific examples of bio-based materials for biomedical applications from our work. Students will brainstorm potential applications of natural biopolymers for medical applications.

Prerequisites
An understanding of high school biology and chemistry is helpful.

E7796: Applications of Trolling in Society
Difficulty: ****

In this class we will study the applications of trolling in social engineering, as well as mathematical modeling of such behavior. Topics will include Internet Transfer Functions and Discrete Internet Psychology

Prerequisites
Advanced Calculus, Thermodynamics, AP Carpentry, AP Engrish

E7565: Static Equilibrium Full!
Difficulty: ***

Do objects deform and move when a force is applied? Do the objects produce a reaction force?

If these questions interest you, come learn how to solve for these unknowns in any system that is currently at rest.

Prerequisites
physics mechanics, algebra 2

E7998: One Way to Mars Full!
Difficulty: **
Teachers: Bruce Mackenzie

Would you go to Mars, if there was no way to come back to Earth?

A major reason to explore Mars is to plan to live there, so why not just set up a settlement on the first trip?
Note, Mars has every chemical element needed to grow food and live.
And, much of the risk and cost of a trip to Mars is the return trip back to Earth.

This is a general presentation of a possible mission plan to send just a couple
of people to Mars, planning to stay many years, without really knowing if a
return rocket will be available.
This plan is a 'work in progress'.  I would like to hear your opinions and ideas
to improve the mission plan.  (If you want to see a more polished
plan, attend the other class on “How to Live on Mars “.)

E7696: How to land on the Moon: Getting out of Earth
Difficulty: **
Teachers: Olivia Brode-Roger

Rocket science!! How do rockets work? What are the challenges? How does it not explode?
First part of the "How to land on the Moon" course. Both parts are independent from each other.

E7699: How to land on the Moon: Getting to the Moon, and back
Difficulty: **
Teachers: Olivia Brode-Roger

What path should we take to get on the Moon? How do we land there? How do we get out of there? How to get back to Earth?
Second part of the "How to land on the Moon" course. Both parts are independent from each other.

E7994: Social Robotics
Difficulty: **
Teachers: Sabrina Shemet

What are social robots? Why do they matter? How do we build robots that can interact naturally with people? In this class we'll attempt to demonstrate answers to these questions, and more!

E8045: Dynamic Fluids! Full!
Difficulty: ***
Teachers: Leslie McClain

The human body is more than 60 percent water! A focus of Biological Engineering is the study of fluid behavior. This course will explain and demo some basics methods used in this discipline including microfluidic devices and polymer synthesis.

E7991: 3D Printers for Mars Full!
Difficulty: **
Teachers: Bruce Mackenzie

New 3D printers may change the way we manufacture things, allowing us to make objects at home, which might otherwise be made in a factory and shipped to us.

To live on Mars, we should be able to make construction materials from the resources found on Mars, even make plastic ‘from thin air’ (the only kind of air Mars has), and then use a 3D printer to make most any shaped plastic object we need.

The Mars Foundation will be demonstrating and testing a 3D printer at a Mars Habitat in Hawaii. We are also planning a museum activity/exhibit which will show how to print yourself a house (well, maybe just the furniture) on Mars. Note, we will not be running a 3D printer during class, nor teach you CAD, that cannot be done in the time available.

E7472: How lithium-ion batteries (in your iPhone, laptop) work
Difficulty: **

If you have a smart phone (iPhone, Galaxy) or a laptop, you have certainly said this at least once: "My battery is dead." But, do you know why? Lithium-ion batteries are in our smart phones, our laptops, and are now in electric vehicles. Come learn about how they work, why they are so exciting, and what the future holds for lithium-ion batteries.

Without lithium-ion batteries, our smart phones and laptops would not even last for as long as they currently do. Can you imagine that?? And current electric vehicles would not even exist!!

Prerequisites
Some knowledge of chemistry would be helpful (ions, electrons, positive charge...)

E7970: Cluster Ballooning
Difficulty: *

As it so happens, helium is lighter than air, which is quite useful. Cluster ballooning is the use of multiple balloons tethered to yourself to leave the familiar terra firma and grace the sky like Up's Carl Fredericksen. You won't get to fly yourself, but you'll learn how to from someone who has. Also featuring: the physics of buoyancy.

E7419: Complex Numbers and Applications
Difficulty: **
Teachers: Rishi Patel

Ever seen this formula, and wonder why it's useful?

$$e^{i\theta} = cos\theta + i sin\theta$$

Come and learn about the incredible role of complex numbers in applied mathematics. The class will teach about the basic properties of complex numbers assuming almost zero prior knowledge about them. It will cover basic applications in science and engineering.

Prerequisites
Familiarity with basic trigonometry is a plus.

E7952: Heat, Work, and Energy
Difficulty: ***
Teachers: Ian Martin

An engineering-based introduction to thermodynamics and heat transfer. Learn how we use the basic principles of heat and work to generate electricity, power cars, and fly airplanes.

Prerequisites
Good algebra background and decent knowledge of chemistry, some calculus helpful.

E7549: Uncool Computing: The SQL Full!
Difficulty: ***
Teachers: Ruth Byers

… where SQL (“Structured Query Language” if you must) is pronounced “sequel.”

Learn about SQL injection, a tactic for getting unauthorized data (read: “credit card numbers and passwords”) through standard user interfaces (read: “by typing stuff into web forms”). We’ll talk about the technical details of how the exploit works and how websites defend against it.

Prerequisites
You should have used some sort of computer programming language before, even briefly.

E7913: Modern Rapid Fabrication
Difficulty: *
Teachers: Michael Skuhersky

Suppose you designed some cool 3D model and wanted to hold it in your hand. Or say you are making a prototype of a product you want to bring to market, but you don't want to make an entire assembly line for it! The most visible solution is FDM 3D printing, but this has plenty of limitations. We will take a look at the history of rapid fabrication techniques, the wide range of current methods and their limitations, and options being developed for the future.

E7646: Biological Warfare: Theory and Applications
Difficulty: **

Do you think the world is overpopulated? Are humans a blight upon the surface of the earth?

Come learn how to solve all of these problems, and many more!

E7783: Physical Security
Difficulty: **
Teachers: Eric Van Albert

Learn the basics of how buildings are secured, how security measures are easily defeated, and how to fix these vulnerabilities. Hands-on class covers flaws in building construction, locks + keys, alarm systems, and electronic authentication. Also includes a short lockpicking seminar.

E7964: Engineering Mechanics Full!
Difficulty: ***

The world is interesting in that it is full of stuff. The materials you interact with everyday respond to forces, stresses and pressures in a variety of ways. And we aim to teach you about it! We'll cover the physics of elastic materials, then make a foray into plasticity, viscoplasticity and how materials fracture.

Prerequisites
Physics

E7406: MIT in Microgravity
Difficulty: *
Teachers: Henna Jethani

A few of us actually experienced microgravity this summer! We were WEIGHTLESS and testing an experiment for NASA. If you're interested in finding out about our experiences and learning about microgravity, then this is the class for you!

E8081: How to Build an Audio Amplifier Full!
Difficulty: **

This class will start from the ground with resistors and voltage sources and work its way up to how to build a basic audio amplifier. During the last part of the class, every student will make their own small amplifier to take home.

E7474: Steampunk 101 Full!
Difficulty: *
Teachers: E Rosser

Greetings, illustrious ladies and distinguished gentlemen! In this class, rather than Gluing Some Gears On It And Calling It Steampunk, we shall be venturing into the realm of cogs and gears, levers and steam, Victorian aesthetics and sci-fi re-imaginings in order to truly understand this unique visual style, from the engineering basics up. Learn about steam technology and motion transfer, then try your hand at designing an original Steampunk device and character. Showcase your creations during our Gentlepeople's Expositionary Tea of Discovery. Join us in a rousing 'Huzzah!' for neo-Victorianan SCIENCE!

Prerequisites
An enthusiasm for kinetics, a stalwart imagination, and an indefatigable sense of adventure!

E7642: Auto Mechanics
Difficulty: **
Teachers: Ian Martin

Learn about the engineering that goes into your everyday automobile! Will cover basic principles of heat engines, powertrains and transmissions, and braking technology.

E7809: How to Use a Slide Rule
Difficulty: **
Teachers: Shaymus Hudson

Back in the day when things were more hardcore, you couldn’t find an engineer or scientist without his or her trusty slide rule. Unlike the TI-whatever-they’re-up-to-now, slide rules are a purely analog method of calculation. Operating, not on batteries, but on the magic of logarithms, they can be used for multiplication, division, roots, powers, trigonometry, and more. You'll learn about the history of the slide rule, as well as basic and maybe a few advanced calculations. If you already have one, you're more than welcome to bring it!

Prerequisites
A basic understanding of logarithms and trigonometry is a must.

E7926: Automobile Crash Testing: The Basic Physics and Technologies
Difficulty: **

Automobile crash testing remains one of the most critical components to certify the safety of a vehicle in accordance with with National and corporate safety requirements. Crash tests also remain one of the flashiest and most adrenaline pumping examples of test engineering in industry. Learn the basic physics of automobile collisions, the tech that is used to collect data during tests, basic knowledge of federal requirements, and watch videos of crushing metal and glorious destruction.

Prerequisites
Basic understanding of physics

E7883: But can we make it smaller?
Difficulty: **
Teachers: Anubhav Sinha

This class will explain some of the principles of manufacturing things that are really, really, really small. How do you make a silicon processor? or a solar cell? Or an accelerometer? Or a laser?

Prerequisites
A basic class in physics will probably be helpful.

E7467: Engineering Polymers Full!
Difficulty: ***
Teachers: Rachel Davis

Explore the wonderful world of polymers. Why are straws so bendy? What happens when you light a water bottle on fire? How can you alter plastic polymers to have the properties that you want them to have? Come learn about how polymers work and why they are essential to our everyday lives.

Prerequisites
One basic chemistry course

E7445: Ships in the Sky: History and Technology of the Airship
Difficulty: **
Teachers: Celina Walker

Marvel at one of the grandest examples of early aviation: the airship. We'll be covering the history and technology involved in lighter-than-air craft and how it's being revisited in today's aircraft designs.

E8009: Physics of Spaceflight (with Kerbal Space Program)
Difficulty: **

Do you want to go to space?! Come learn how to do it, and practice your skills.

You will learn the basic physics principles behind rocket launching and orbiting, including:
- Gravity
- Rocket Physics
- Orbital Physics

You will apply these principles to build the best launch vehicle to get into orbit. We will be using the game Kerbal Space Program. From the game's official website at kerbalspaceprogram.com: "KSP is a game where the players create and manage their own space program. Build spacecraft, fly them, and try to help the Kerbals to fulfill their ultimate mission of conquering space."

Prerequisites
No physics background is necessary, but some familiarity with forces might be beneficial.

E7525: Rocket Science! Full!
Difficulty: **
Teachers: Matthew Vernacchia

Learn the fundamentals of rocket propulsion with the MIT Rocket Team. We will talk though the engineering considerations behind large space-launch vehicles, and also go over a few principles relevant to model rocketry.

E7954: Build a robot! Full!
Difficulty: **

Come learn the basics of circuits and build a small robot! Learn how to wire up LEDs and motors, using a switch and a breadboard! You'll be designing your own robot, so, if you'd like, come with ideas and/or small recyclables.

Prerequisites
*No* prior experience with circuits! This class is targeted at students with no experience; you won't get very much out of this class if you've already done this before.

E7588: Fixing the World through Engineering
Difficulty: **
Teachers: Anthony McHugh

How to design and implement an engineering project for the developing world!

E7942: Fun with Electronics
Difficulty: **

This will be hands-on workshop on basic electronics. Students will work with power supply, LEDs, switches, buzzers, motors and micro-controller. The course will conclude with a final project.

E7641: Immunobioengineering: Applying Nanomedicine to Immunology
Difficulty: ***
Teachers: Pranam Chatterjee

Immunology has evolved into one of the most powerful and applicable fields of basic science, as evidenced by an emerging number of immunological therapeutics, including those for cancer and HIV/AIDS. Still, there is an need for increased specificity and sophistication in modulating the immune response to better fight and ultimately cure these diseases. In this class, we will first introduce the basic principles and fundamentals of immunology, and later examine the role that engineering, particularly biomaterials, can play in accomplishing this goal.

Prerequisites
General Biology, Chemistry, and/or Physics

E7780: Engineering for International Development
Difficulty: **

Learn about engineering technology for the developing world. Teams will build and test salt-water batteries, as well as other technologies.

E7812: Sensational Failures in Engineering
Difficulty: **
Teachers: Liza Plotnikov

Exploding space shuttles, collapsing bridges, exploding naval guns… sometimes designs fail, and sometimes they fail catastrophically. These failures can be dramatic, deadly, or sometimes just plain silly, but they have one thing in common: they are all preventable. In this class we’ll cover the technical missteps behind some famous engineering disasters (and some you may never have heard of). We’ll talk about how smart people can make bad designs, the importance of communication, and especially the value of common sense.

E8063: How To Make Smoke Full!
Difficulty: **
Teachers: James Allen

Learn how to make colored potassium nitrate smoke.

Languages and Literatures

L7855: Russian language and culture for beginners
Difficulty: **

Want to learn some russian phrases that Eastern Europeans use in their everyday life and know more true about their culture? Then come to this small one hour lecture !

L7614: Casual German (11th-12th Grade) Full!
Difficulty: **

Ever wanted to learn how to ask for a pretzel or a bratwurst auf Deutsch? Curious about what a Biergarten *actually* is? This is a crash course in German - you’ll learn the very basics of grammar, some vocabulary, useful/entertaining phrases, plus resources and directions to explore in German literature, film and music.

L7948: Linguistics Problem Solving
Difficulty: **

Do you enjoy unraveling logic puzzles, want to learn about other languages, or crave the feeling of a good riddle?

Come solve fun problems from the Linguistics Olympiads, NACLO and IOL!

A variety of languages, problem styles, and difficulty levels will be provided for you to solve. Logic and reasoning are your main weapon here – no prior linguistics knowledge required!

Prerequisites
Tables and chairs. Pencils and scratch paper.

L7453: The Sonnet
Difficulty: **
Teachers: Lance Ozier

The sonnet is one of the oldest and most durable forms of poetry. It’s been used by great poets from Shakespeare to e. e. cummings. Because it has certain rules, it poses creative challenges for any poet, but as a result can yield poems that astonish and delight. Come see how poets have met the challenges and reaped the rewards over the past 400 years.

Prerequisites
Interest in poetry, language, and words.

L7626: "Superman/woman" and Science Fiction/Fantasy Full!
Difficulty: **
Teachers: Josh Shaine

Science Fiction and Fantasy have many characters who stick out compared to others because they have more magic, different powers, unique abilities.

We will look at how these characters are treated by the worlds in which they are set and reflect on what, if anything, this says about the society in which we live.

L7367: Writing Systems Full!
Difficulty: **

How are the worlds' writing systems different, beyond just using different characters? What writing systems are more similar to each other than others, and why? Why is Hangul (the Korean writing system) the best in the world, and Chinese characters the worst?

L7674: The smart French student's survival guide to Paris
Difficulty: **

Do you have a pretty good high-school level of French? Then you can do much better than being just a tourist in Paris! Want to pick up some handy phrases and manners that will get you mistaken for a local? How does one make official phone calls, get into every museum for free, and order delicious crêpes in the most un-touristy locations? Want to know where the Parisians hang out, dine, and celebrate; what books they read and what movies they watch? What are some quirks of the Parisian lifestyle which make the city a real cultural gem?

Come prepared to pratiquer votre Français and learn why the City of Light is the unquestionably most amazing city in the world.

Prerequisites
Some level of high school French (French 2 or above recommended, but not required)

L8019: NaNoWriMo Write-A-Thon
Difficulty: **
Teachers: Cathleen Nalezyty

Want to work on your NaNoWriMo novel during Splash? Stuck half-way through and need some tips about how to keep your energy up for the rest of the month?

We'll spend part of class talking about ways to keep your motivation up and fun ways to up your word count and then we'll spend some time doing word sprints, word wars*, and other fun writing tasks.

*Don't worry, we'll go over what these are if you haven't heard of them!

Prerequisites
Interest in NaNoWriMo would be great; but if you just want to hang out and work on some other writing project, feel free to come join us!

Difficulty: **
Teachers: Anna Ho, Davie Rolnick

Just when you thought you knew the story of "Hamlet," the playwright Tom Stoppard wrote "Rosencrantz & Guildenstern Are Dead." Join us for a dramatic reading of the text! Coax Hamlet out of madness, bow to Queen Gertrude, and get frustrated as everyone mixes up whether you're Rosencrantz or gentle Guildenstern.

Prerequisites
Some familiarity with Hamlet (otherwise you won't enjoy it as much.)

L7686: Ender's Game and Good and Evil Full!
Difficulty: *
Teachers: Kaylee Brent

Do you want to figure out what makes a person good? Do you like science fiction? Do you like philosophical discussions? Come discuss good and evil in intent and deed, through the lens of Ender's Game by Orson Scott Card.

**Unlike when we taught this in Splash! 2012, we are going to open the discussion up to ALL of the books in the Ender's Universe, AND the movie for those who have seen it. However, if you haven't read all of these or seen the movie, feel free to come anyways! But be warned of spoilers.**

Prerequisites
Have read Ender's Game (and preferably others of the series)

L7383: Korean 101
Difficulty: **
Teachers: Chae Jeong, brice lee

Want to learn to greet your Korean friends' parents properly? What if you could order a meal at a Korean restaurant solely in Korean? What is PSY really saying in Gangnam Style?
Join this class to learn some basic Korean, from the alphabet, to greetings, to even translating PSY's hit song!

L7451: How to Read a Poem
Difficulty: *
Teachers: Lance Ozier

Have you ever read a poem and wondered what the heck is going on? Or, to paraphrase the poet T. S. Eliot, have you “had the experience but missed the meaning”? In this class you will learn eight simple steps to help you make more sense of the poems you read.

Prerequisites
Interest in poetry and language.

L7639: Linguistics for People Who Language
Difficulty: **

Do you language? Is language even a verb? … If it’s not, how can you understand what I’m saying? Language is clearly more than the grammar you learned in English class. So welcome to the study of linguistics! In this introductory class we will learn what a Wug is, discover the genius of Lewis Carroll, and put a magnifying glass on something you do every day: language.

Difficulty: ***
Teachers: Jihu Kim, Jisoo Park

What does the vampire drink in the morning?

This would be a great chance for you to learn "real" Korean.

Slangs, popular catch phrases, conversational expressions ... and even corny jokes!!

Prerequisites
Prior knowledge in Korean (basic alphabets, etc) required.

L7357: Sounds and Language
Difficulty: **
Teachers: Chelsea Voss

Ever wonder how humans create, hear, and understand the sounds of language? What actual, measurable properties of sound are we sending when we speak? How our ears can decipher all of the information in sound, and send it to our brain to be processed into language?

To figure all of this out, we'll dive into phonology and phonetics, the study of the audible components of language.

Come learn what you never knew you never knew about sounds!

This class is two hours, but there will be a ten-minute break in the middle.

L8011: Arthurian Legend Full!
Difficulty: **
Teachers: Cathleen Nalezyty

Have an interest in stories about King Arthur? Confused about all the different versions of the story that are floating about?

We'll spend some time in class talking about different aspects of the King Arthur legend. No need to have read any particular work -- though some knowledge of the legend in general would be helpful. We'll also be reading some (short) passages in class that we'll talk about.

L7612: Casual German (9-10th Grade) Full!
Difficulty: **

Ever wanted to learn how to ask for a pretzel or a bratwurst auf Deutsch? Curious about what a Biergarten *actually* is? This is a crash course in German - you’ll learn the very basics of grammar, some vocabulary, plus a handful of useful/entertaining phrases that may or may not help you get communicate in German!

L7739: Basic Japanese conversation
Difficulty: **
Teachers: Tomohiro Soejima

Starting from pronunciation of Japanese, basic conversational Japanese.
Topics covered are, how to introduce yourself, how to ask a simple question etc.

L7817: Introduction to Phonetics: Chinese vs English
Difficulty: *
Teachers: Steven Keyes

Come be entertained by my thoroughly bad pronunciation of Chinese! Phonetics is the study of sounds in speech and how people produce them. This class will introduce you to this branch of linguistics and be informative for learners and native speakers of Chinese and English alike!

Prerequisites
None!

L7691: Introductory Odawa
Difficulty: **
Teachers: Dmetri Hayes

Odawa or Nishnaabemwin is a dialect of one of the most widely spoken Native American languages today. Come learn about this fascinating language!

L8001: Quirky Linguistics
Difficulty: *
Teachers: Ryker Reed

Like linguistics or just enjoy thinking about language? Ever noticed how weird language can be? Come learn about some of the quirkier aspects of language. We'll discuss things ranging from infixation (putting words inside other words) to semantic implication (things we say without actually saying them), and semantic satiation (that thing that happens when you say a word too many times and it stops meaning anything). Come enjoy the strangeness of language!

L7543: Word Games! Full!
Difficulty: *

I'll bring Deluxe Scrabble, Bananagrams, Boggle, (and of course the Official Scrabble Dictionary)...you bring your wits (and if you want, your favorite word game).

Prerequisites
None! Beginners welcome.

L7331: We're going to read some modern literature, contemplate some philosophy, and get a little dizzy from thinking about stuff.
Difficulty: **
Teachers: Amy Estersohn

Part of what makes "modern" literature "modern" is that it takes traditional forms and pokes holes into them.

For example, real people in real life don't have narrators attached to them, explaining their every move or describing their everyday feelings. So why do we attach narrators to characters in literature? How can we tell "real" stories using words, when so many things are left unsaid?

As a class, we'll start reading "The Great Good Place" by Henry James, but we won't come close to finishing it. Instead, we'll spend a lot of time diving deeply into this tale, considering some of the questions asked above.

L7376: "You Talk Funny": Dialects and Other Language Change
Difficulty: **
Teachers: Megan Belzner

G'day, mate! Want to sit down with a spot of tea* and discuss how they speak across the pond? Ever wondered aboot why some people's English sounds a bit funny, eh? If yer hankerin' to know about dialects, this is the class for ya!

Want that translated into something you can understand? This class will talk about just that. We'll cover the ways in which languages can differ, and how they can change over time. Learn about the history of past-tense verb forms and the gradual process of regularization, how some people say sounds a bit differently and the rules that govern this, and where the line is drawn between dialects and languages (answer: wherever you want, really). Understand how and why "that funny way of speaking" came to be!

*actual tea not promised

L7482: Writing/Wandering
Difficulty: *
Teachers: Alexander Cronis

We're going to be working with a style of writing which doesn't use an outline for most styles of creative writing (graphic novels, short stories, novels, etc). We'll talk about great artists who use/used this process (Faulkner, Flannery O'Connor, the creative team behind the Katamari games and others) listen to music, read poems, do some free writing and generally talk about how to write.

L7700: Shakespeare Comedy Workshop Full!
Difficulty: **
Teachers: Becky Gould

From wordy puns to slapstick antics, Shakespeare's plays are brimming with humor. This class is an opportunity for students to examine some of Shakespeare's funnier moments and hone close reading skills of the original Elizabethan language. Students will also engage with Shakespeare's humor through improv games and acting activities. No previous Shakespeare experience is necessary.

Prerequisites
An interest in great literature and a sense of humor!

L7593: How to find your way around in Beijing (i.e. Basic Conversational Chinese) Full!
Difficulty: *
Teachers: Aofei Liu

Are you thinking of going on a trip to Beijing (or maybe just somewhere in China) this winter break? Do you want to be able to impress your Chinese friends by pronouncing their names accurately with the right tones and inflections? Do you like languages and want to learn some basic conversational (Mandarin) Chinese? If you answer is yes to any of the above questions, you might want to consider signing up for this class! We will start off with learning the four tones and 汉语拼音 (hanyu pinyin), the romanization of the pronunciation of chinese characters (very useful for reading road signs), followed by some basic useful conversational phrases, with some geographical knowledge of Beijing thrown in somewhere. At the very least, you would (hopefully) be able to pronounce characters accurately based on the romanization by the end of this class!

Disclaimer: This class will be teaching Mandarin Chinese and not Cantonese/some other dialect of Chinese. The focus of this class is on speaking and not reading/writing so it will not focus on the recognition of Chinese characters (though you might end up recognizing some by the end of the class anyway). This class is a beginner class, so it may not be very helpful for those already studying Chinese as a foreign language, unless they wish to perfect their pronunciation or just find someone to practice speaking Chinese with.

Prerequisites
You do not need to know anything about the Chinese language to sign up for this class, but you must be prepared to open your mouth and participate in pronouncing things (and possibly embarrass yourself in front of the whole class because you did it wrongly, but don't worry, everyone else is probably doing it wrongly as well :))

L7506: Short Fiction Workshop Full!
Difficulty: **
Teachers: Jamie Truman

Do you yearn for a story with an ending in sight? Have you ever wondered how some authors can tell a whole story in just a few pages? There's a lot more to writing than novels and essays. Short fiction is an art and science that has stood the test of time - and for good reason.

Together, we'll craft short stories and try to figure out what makes them tick.

Prerequisites
Fluency in English recommended.

L7648: Open Mic at Splash!
Difficulty: **

Bring a piece of prose, poetry, song, or thought, and present it! Unwind and enjoy writing from your peers. We'll throw in some feedback as well, but this will be a positive and constructive environment for you to present in, no negativity involved.

Prerequisites
Open mind, and respect for peers.

L7604: A Brief History of Middle Earth
Difficulty: **
Teachers: Nathaniel Mathews

A 4-hour saunter through Tolkien's vivid mythology, including an overview of the Quenta Silmarillion, Narn i Chin Hurin and the Fall of Numenor - the Akallabeth. The session will feel more like a history class than a literature class: we won't be talking so much about Tolkien's inspiration and hidden meanings (though if the class is interested, I'd love to talk about those things too!) so much as we'll discuss the timeline and events in exciting, realistic and lively ways.

You don't have to be some sort of Lord of the Rings scholar for this class - anybody is welcome!

L7929: Introduction to Spoken Japanese Full!
Difficulty: **
Teachers: Kristi Oki

This class will offer a basic introduction to commonly used Japanese words and phrases. Come ready to learn and practice simple Japanese conversations!

Prerequisites
NO prior knowledge of Japanese!

L7397: Russian Tonguetwisters
Difficulty: **
Teachers: Hannah Harris

Impress your friends and confuse your tongue with an introduction to some of the Russian language's craziest tongue twisters!

No prior knowledge of Russian or the Cyrillic alphabet necessary!

L7399: Once Upon a Time, The End. The art of incredibly short fiction. Full!
Difficulty: *
Teachers: A L

A tear formed in my eye as I watched him pick out the peas from his carrots. He learned it from her.

That's it. A complete work of fiction in two sentences. Inventive writers are now crafting really short stories that can be surprising, intriguing and delightful. The fascinating genre of flash/sudden/micro fiction is all around us. In the form of cell phone stories, TV/radio commercials, web videos and other manifestations, highly compact stories can be humorous, thought-provoking, informative and much more. Come sample some microfiction and write your own in this workshop! Bring writing materials!

L7955: Languages of Middle Earth Full!
Difficulty: *
Teachers: Ryker Reed

Love Lord of the Rings? Ever wondered where all the names in Middle Earth come from? Come find out more about the complex linguistic systems underlying Tolkien’s Lord of the Rings series. For instance, did you know that Tolkien was a linguist and actually invented an entire Elvish language before even writing the Lord of the Rings books? Learn about some of the real world languages that inspired and influenced Tolkien’s invented languages. And find out more about the history of Middle Earth and how its languages came to be what they are now.

Prerequisites
None, if you've taken this class last year, it will be the same material.

L7622: Hooking Literature in Big Fish Full!
Difficulty: **

Are you ready for an adventure as big as life itself? In this class we will analyze Tim Burton's "Big Fish" - a movie that explores themes of life, death, love, father-son relationships, and so much more! Snack on popcorn and participate in an enthralling discussion on a Golden Globe/BAFA/Oscar nominated film. We will be showing excerpts, so we recommend that you watch the film beforehand, but you'll still be fine if this is your first viewing. We reel-ly hope you join!

Prerequisites
Watching Big Fish would be nice!

L7571: Improv Spanish for Beginners
Difficulty: **
Teachers: Clarissa Towle

What do you say when your burrito suddenly explodes into interstellar space? If you'd like to take a bus through Sevilla, Spain, but it's currently levitating ten meters off the ground? Come learn some basic and some not-so-basic Spanish phrases to help you describe the ordinary and the extraordinary in this crazy existence of ours.

Prerequisites
Some exposure to Spanish is helpful, but not necessary.

L7794: Introductory Azerbaijani
Difficulty: **
Teachers: Jessica Oehrlein

Come and learn Azerbaijani! Azerbaijan was along the Silk Roads, so the country and the language have lots of different influences. Azerbaijani is also the second most commonly spoken language in Iran! We'll also cover a little history along the way.

L7958: Learn Elvish!
Difficulty: *
Teachers: Ryker Reed

Ever wanted to speak Elvish? Write Dwarvish runes? Now is your chance! Come take this interactive class and learn the basics of spoken and written Elvish! This class will focus on the Elvish language Sindarin, and we will also cover a bit of the other languages, such as the Elvish language Quenya and the Dwarvish language. We will practice speaking Elvish and also how to write the Elvish script and Dwarvish runes. No prior knowledge necessary, just enthusiasm!

L7386: Linguistics and Human Genetics Full!
Difficulty: **
Teachers: Morris Alper

How was Madagascar populated? Why do some languages use more sounds than others? What is the origin of the Romani ("Gypsy") people of Europe?

We'll explore the answers to these questions and more using a cutting-edge method combining linguistics and population genetics. We'll also discuss its limitations and current controversies.

L7515: Making it in Moscow: A Splash! Course in Introductory Russian Full!
Difficulty: **
Teachers: Marcella Lusardi

Take a journey east to learn the mysterious language of the czars, the Soviets, and the modern-day natives of the largest country in the world—Russia! An introductory course in conversational Russian. No prior knowledge of the Russian language, Cyrillic alphabet, or Russian culture/history needed.

L7605: Poetry Workshop Full!
Difficulty: *
Teachers: Nathaniel Mathews

A chill, intimate workshop setting where people can come and write, and share their work for constructive, friendly peer critique. Everyone must write; you only have to share if you want to. Beat, spoken word, traditional or all other forms of poetry are welcome.

L7748: Character Analysis Through Classpect
Difficulty: *
Teachers: Houston Mills

This class will explain the character sorting system used in the popular webcomic Homestuck and its useful applications in generalizing the character's interactions with narrative themes.

L8053: Hungarian for dummies Full!
Difficulty: **
Teachers: Gergely Odor

Are you interested in being able to speak a language that is unlike any other (maybe Finnish, but not really)? Come to Hungarian for dummies and learn about one of the most complicated grammars and to pronounce strange new phonemes from a native Hungarian MIT student. I promise, by the end of the class you will all be able to pronounce my name (Gergő).

Prerequisites
None

Lunch

L8089: Lunch Period
Difficulty: None
Teachers:

Enjoy a break for lunch with your friends! Please register for at least one lunch period on each day of the program.

L8090: Lunch Period
Difficulty: None
Teachers:

Enjoy a break for lunch with your friends! Please register for at least one lunch period on each day of the program.

Mathematics

Difficulty: ***
Teachers: Xinke Guo-Xue

Suppose you want to find if a number is a square modulo p. That is, does $$x^2=a \pmod p$$ have a solution? It turns out there is something called quadratic reciprocity that helps to characterize when this equation has a solution.

This class will quickly teach you the facts needed to understand quadratic reciprocity and present an easy-to-remember elementary proof of it.

Prerequisites
should be comfortable with modular arithmetic

M7609: The Number Orange Full!
Difficulty: **
Teachers: Rebecca Gallivan

Wondering what in the world a Number Orange is? Come and find out as we explore a different way of looking at numbers and why zero is really infinity's evil twin.

M7499: Basics of RSA Encryption Full!
Difficulty: **

Learn about the basic theory behind a widely used cryptographic algorithm that allows transfer of information securely and conveniently between two parties!

Prerequisites
Essentially none, but knowing what prime numbers and modular arithmetic are would be a plus.

M7556: Counting Curves and Quantum Cohomology Full!
Difficulty: ****
Teachers: David Yang

There is 1 line through 2 points. There is 1 conic through 5 points. There is 1 conic tangent to 5 lines. Boring, huh? How many conics are tangent to 5 conics? (3264.) If you have a degree three polynomial in three dimensional space and you look at the surface where it's zero, how many lines lie on this surface? (27.)

We will solve these problems and then explain how this is related to something called "quantum cohomology."

Prerequisites
There are not going to be a lot of formal prerequisites (despite the intimidating name). On the other hand, the geometry will get very very difficult, but you will not need to know anything beforehand to understand it.

M8066: Modular Arithmetic and different bases
Difficulty: **
Teachers: Joshua Frisch

What is the last digit of $$17^{2013}$$? what about $$7^{7^{2013}}$$? why are $$1000^{2011}-1000$$ and $$2010!+1$$ multiples of 2011 and what do these facts have to do with each other? Finally, what does all of this have to do with cryptography, the internet, and how computers work on a basic level?
We will answer as many of these questions as we can in the space of two hours using the powerful tool of modular arithmetic.

Prerequisites
Algebra 2 is strongly recommended. A willingness to deal with challenging mathematics is required.

M7388: Complex Numbers: Math That Will Freak You Out (at least a little bit)
Difficulty: **
Teachers: John Gregg

I promise this math will freak you out at least a bit. We will explore the existence or non-existence of nonsensical things called complex numbers, or less scarily, imaginary numbers (aren’t they all?). We will end up deep, deep inside a certain blob called the Mandelbrot set, which is made of these “imaginary” numbers.

Prerequisites
algebra: basic polynomials

M7427: May the Odds be Ever in Your Favor
Difficulty: **

Have you ever wanted to learn how to rip off your friends (completely legitimately)? This class will teach you the mathematics behind becoming rich and powerful (okay, maybe it won't do quite that). But it will lay down the mathematical foundation that you will need so that you can challenge your friends to bets in which the odds be ever in your favor. During this course, we'll expose you to discrete math tools including probability, expected value, counting, and more through fun and interactive demos. We'll show you cool mathematical tricks that you can use to impress your friends (and maybe make a few bucks in the process).

Prerequisites

M7789: Winning Ways for Your Mathematical Plays Full!
Difficulty: ***
Teachers: Semon Rezchikov

One of the themes running through modern mathematics is that by looking at the formal, algebraic structure in the objects we intuitively perceive, we can find powerful, beautiful, and *very weird* abstractions that solve huge classes of problems.

However, mathematics often lacks a sense of humor. Luckily, combinatorial game theory was developed by a bunch of punsters and jokers. It'll be a wild ride.

We'll start by playing with matchsticks, start thinking about games with uncountably many turns and moves that have a "temperature", and end by constructing the "surreal numbers", which include infinitely small numbers and infinitely large numbers and are fascinating from the standpoint of mathematical logic. In the process, we will learn how to win every impartial game, find out that all games are just heaps of sticks, use words like "nimbers" in complete seriousness, learn a lot about what games *are*, and see what happens when playful mathematicians decide to play some mathematical games.

Prerequisites
a playful mind, a sense of humor, and comfort with mathematical reasoning

M7751: An Introduction to Group Theory
Difficulty: **
Teachers: Anthony Wang

We introduce the basic theory of groups. Groups are fundamental structures which occur all throughout mathematics. We hope to get through the definition, group actions, subgroups, cosets, group homomorphisms, group isomorphisms, conjugation, product groups, quotient groups, and simple groups, illustrating concepts with examples throughout.

M7438: Linear Logic
Difficulty: ***
Teachers: Jason Gross

It's a well-known fact of logic that if from $$P$$ you can get $$Q$$, then from $$P$$ you can also get $$Q$$ and $$Q$$.* So since you can get two dimes and a nickel from a quarter, you can get two dimes and a nickel and two dimes and a nickel from a single quarter.

Come to learn about linear logic, which is a version of logic which doesn't claim that you can get infinite amounts of money from a quarter.

*For example, since $$n = 2$$ implies that $$n = 1 + 1$$ then, $$n = 2$$ implies that $$n = 1 + 1$$ and also $$n = 1 + 1$$.

Prerequisites
You should know about truth tables, and the "and", "or", "not", and "implies" logical connectives.

M7574: Conic sections extravaganza
Difficulty: **
Teachers: Xinke Guo-Xue

Ever wondered why cutting a cone (the one that extends infinitely outwards in two direction) with a plane gives you parabola, hyperbola, or ellipse when another standard definition of these 3 conics deal with loci of points? Come to this class to find out why these two definitions are equivalent and possibly learn more fun/interesting facts about conics!

Prerequisites
none, but some familiarity with conics is helpful

M7801: P vs NP in O(1) Time
Difficulty: ***
Teachers: Yuchen Fu

The goal of this course is to show you a possibility to earn a million dollars.

Now that I've hopefully gotten your attention, let me explain it in detail. Listed as one of the seven millennium prize problems by the Clay Institute, the P vs. NP problem is a very young (about 50 years, which is young in the math world) open problem that has been recognized by most computer scientists as a central question in theoretical computer science--in fact, some people would argue that it is THE ultimate question in the entirety of mathematics. In informal terms, it asks:

Is verifying an answer to any question harder than solving the question itself?

Indeed, so naturally simple is the question that it frustrated many brilliant scientists--include Richard Feynman--that the question is even an open one. But it is. And, after five decades of failed attempts, most mathematicians have now reached the consensus that we are far, far away from seeing even a faintest glimmer of a solution--or that of the million-dollar prize.

So why is the P vs NP problem so hard? And what have we achieved in the past half a century, if not a solution? What lies ahead? These are among the many questions that we'll try to investigate in this class.

Within the two hours that we have, we'll take a quick tour through the history of this problem, starting from Turing's genius ideas of the 1930s and ending with some research frontier discoveries of the 2010s. Along the way, we'll also see some of the impact of P vs NP on physics, "pure" mathematics and even popular culture.

Of course, the class will involve a heavy load of abstract reasoning; moreover, many of the theorems are simply impossible to mathematically simplify (aka "dumb down"), so we'll use some mathematics that you probably never heard of. But don't be intimidated: as long as you enjoy math and love discovering the unknown, you'll find this class a truly enjoyable one.

Prerequisites
No previous knowledge in complexity theory will be assumed. Some exposure to general discrete mathematics (e.g. logic, graph theory, elementary number theory) will be helpful, but is not absolutely necessary. Ability to survive mathematical proofs is kind of necessary as the course is a theoretical one.

M7403: Game Theory 101
Difficulty: **
Teachers: Benjamin Shaya

Explore the basics of game theory! Play and analyze game such as the "Prisoner's Dilemma" and "Tragedy of the Commons"

M7816: 2x2 = 4: The Hard Way
Difficulty: ****
Teachers: Ziv Scully

We're going to prove this deep and insightful theorem using the most abstractly nonsensical mathematical sledgehammer of them all: category theory!

Category theory is when we draw letters on the board and then draw arrows between them such that certain nice things are true. Seems mostly harmless, doesn't it? Perhaps, but some point we'll need to prove that multiplication distributes over addition without accidentally proving that addition distributes over multiplication, too. This turns out to be pretty difficult :).

Prerequisites
You should know that a function is a map between sets. If you read a bit of the Function (mathematics) article on Wikipedia, you'll be fine.

M7987: The Shape of Space Full!
Difficulty: ***

The Earth seems flat at any given point, but it's actually (approximately) spherical, and if you keep walking in a certain direction for long enough, you'd end up where you started. But how can we tell whether the entire universe is curved, and whether it folds back in on itself? (What does that even mean?) What would it be like if the Earth were shaped like a donut or Moebius strip? Does Euclidean geometry apply on the surface of a sphere, or do we need a new system of geometry?

We'll discuss answers to these questions, and even play some familiar games (tic-tac-toe, chess) on some unfamiliar surfaces (tori, Klein bottles).

Prerequisites
Recommended for students with little to no exposure to topology or differential geometry. (If you don't know the answers to the above questions, then this is a good class for you!)

M7534: Automata and Languages
Difficulty: **
Teachers: Josh Alman

Come learn about the fundamentals of finite automata! These are interesting in their own right, and also have applications to languages - both computer languages, and the languages people speak. These will also be a bunch of fun puzzles!

Prerequisites
No knowledge of anything required!

M7893: Curved Spaces - An Introduction to Surface Topology
Difficulty: **
Teachers: Lars Johnson

Come play tic-tac-toe on a bagel (edible torus) and learn about the fascinating topic of surface topology - the study of two dimensional surfaces. We will learn about how we create, transform, and classify surfaces as well as several applications. Although we will briefly mention some technical aspects, the focus of this class will be in developing an intuition for the fundamentals through interactive activities and computer simulations.

Prerequisites
Geometry, Ability to visualize in 3D - for instance bending a strip of paper to form a mobius strip.

M7873: Learn To Count
Difficulty: **
Teachers: Kayla Meduna

Come dive into the wonderful world of combinatorics. We will calculate how many different ways you can win at poker, pick a dozen donuts, and order a pizza. Impress your friends by telling them how many different permutations of their name you can make.

M7555: Quivers
Difficulty: ***
Teachers: David Yang

A quiver is one of the most accessible objects which have an interesting "representation theory". A quiver is just a graph where each edge has a direction. Imagine that you have a vector space for each vertex (if you don't know what a vector space is, you'll be taught) and a map for each edge. What happens????

Prerequisites
Linear algebra (or really, just knowing what a vector space is) will be helpful but not required. Representation theory will be helpful but definitely not required.

M7669: Coloring and Invariance
Difficulty: **
Teachers: John Ma

Want to prove problems by coloring things? No matter what happens in class, one thing will stay the same: you will learn some cool problem solving techniques and problems!

Prerequisites
Thinking

M8059: The Shape of Logic: Topology in Logic and Computation
Difficulty: ***
Teachers: Raeez Lorgat

Topology is the study of shape and space. Traditionally, topological study begins with the study of geometric spaces that we can easily picture, such as 3-dimensional flat euclidean space (our perceived world). It then covers more abstract geometric and set-theoretic topics, like connectedness, the number of holes, and finiteness, before arriving at a theory of an abstract topological space.

In this class, we take topology in a totally different direction: motivated by questions in computer science, we will build a 'topological' understanding of logic via the theory of semi-decidability, ultimately arriving at a geometric understanding of logic and computation.

For us, we will see that a topology will capture an essential computational notion: "open sets are semi decidable properties". The theory, developed from this perspective, will produce results applicable to understanding traditional abstract topology, domain theory, first order logic, decidability theory in computer science and modern algebraic geometry.

No previous exposure to domain theory, topology or formal logic needed.

Prerequisites
Some exposure to programming and/or theoretical computer science would be helpful, but not required.

M7553: Avoid Ancient Greek monsters by INVENTING NEW NUMBERS
Difficulty: ***
Teachers: Colin Aitken

In ancient Greek mythology, the Sphinx was a terrible monster who would ask passing travellers difficult number theory problems. Fortunately, Oedipus defeated the Sphinx when he INVENTED NEW NUMBERS OUT OF THIN AIR.

Let's follow in his footsteps to protect ourselves from certain doom! Along the way we'll meet some abstract algebra, some algebraic number theory, and prove some nifty things about ordinary integers.

(Example Sphinx questions include finding all integers $$n,k$$ with $$n^7 + 7 = k^2$$ or all primes of the form $$a^2 + 3b^2$$.)

Prerequisites
Familiarity with basic modular arithmetic

M7943: Modern Cryptography
Difficulty: ****
Teachers: Alex Cole

Want to send a message without the NSA reading it? And then digitally sign it? And then have some 3rd party perform an arbitrary computation on it without revealing any information about the message? Then this class is for you.

This class will start out with the basics of symmetric and asymmetric cryptography and then continue onto some cutting edge topics like fully-homomorphic encryption and functional encryption.

Prerequisites
This will be a hard class. You should definitely know number theory (what "mod" means), and general experience in proofs and theoretical math will be helpful. Also knowledge of algorithms and hash functions would be swell.

M7437: Counting Past Infinity with Ordinal Arithmetic Full!
Difficulty: **
Teachers: Jason Gross

Did you ever have arguments about whether or not $$\infty + 1 = \infty$$? Have you ever wondered how to define numbers, rigorously? Come learn how to count past infinity, graphically! We'll then go over the formal definition of numbers as sets, and talk a little bit about ordinal arithmetic.

Prerequisites
You should know how to count. You should know what sets are, and how to take the union of two sets and the intersection of two sets.

M7327: Don't Tell A Rocket Scientist It Isn't Rocket Science: Probability Theory, Bayesian Logic and other Fun Stuff
Difficulty: ***
Teachers: Riley Drake

We live in a world of random chance. Thankfully, the mathematical foundations behind probability are beautiful and satisfying. Learn how how Bayes Theorem really works, and how it can change your life. No, actually. Life. Changing. Math.

Prerequisites
Some experience with statistics, should know what random variables, stochastic processes and events are-- or google this beforehand

M7431: Conceptual Calculus
Difficulty: ***
Teachers: Aaron Dunbrack

Learn what it means to take the limit, the derivative, or the integral! Also learn how to apply these concepts in some pretty cool ways. Note: this class will be almost entirely conceptual - very few actual derivatives will be taken, although some of the more interesting ones may be used.

Prerequisites
Understand basic algebraic manipulations. Familiarity with polynomial functions, exponentials and trigonometry will help with understanding examples, but are not required for basic understanding.

M7773: Infinity and You
Difficulty: **
Teachers: Daniel Epelbaum

I bet someone at some point told you that 2 times infinity equals infinity. And then your brain hurt a little bit.

And maybe now you know that that isn't quite true and if you just don't think about it everything will be okay. If an answer to "how do $$2*\infty = \infty$$?" is something that you would really like, then come take this class. In not a lot of time we will introduce the concept of infinity and show how reasoning about infinity leads to huge implications about the foundations of mathematics.

If you like learning a lot of really cool higher math in not a lot of time then this is the class for you.

Prerequisites

M7533: Cryptography Role Play Full!
Difficulty: **
Teachers: Josh Alman, Timothy Chu

Crypto isn't just for computers! In this class, we'll try to tell each other secrets while our classmate (and nemesis) Eve listens in.

M7635: Harmonic Conjugates
Difficulty: ***
Teachers: John Ma

Harmonic conjugates are a really cool technique you can use in geometry problems.

Prerequisites
Geometry knowledge (similar triangles), some trig knowledge (law of sines)

M7492: Modeling Markets with Math: Intro to Theoretical Microeconomics
Difficulty: ***
Teachers: Christopher Natoli

Fact: Resources are scarce. How will humans behave given this fact? How can society maximize their well-being? Economics tries to answer these two questions by modeling human preferences with math and then optimizing their preferences.

This class will quickly cover the important concepts in consumer-side microeconomics to illustrate how economic theory works, its successes, and its shortcomings. Note that this will not be your typical high school economics class with supply and demand graphs.

Prerequisites
You must be comfortable with taking derivatives and using derivatives to find the maximum of a function. There will be a lot of math.

M7716: Re-Envisioning Games
Difficulty: **
Teachers: Zandra Vinegar

Have you ever wanted to remake Chutes and Ladders, War (the card game) or Candy Land so that they're fun again, even now that you understand how strategies work and why those three games don't have any? In this workshop, you might choose to do exactly this: to take a game that is entirely random, and give it mechanics so that there is some new kind of awesome strategy.

Or you might choose to do the opposite: take a game that is entirely strategic, and add a bit of randomness to it to complicate both the strategy and the emotional thrill of the game.

In either case, this will be an introduction to game design and game prototyping. And, of course, there will be plenty of game playing.

M7745: Complex Number in Plane Geometry
Difficulty: ***
Teachers: Yibo Gao

It is an introduction to the use of complex numbers in proofs of plane geometry, a pragmatic method in high school math competitions. The course will also include some practices.

M7436: Thinking Categorically and the Curry-Howard Isomorphism
Difficulty: ***
Teachers: Jason Gross

Did you know that logic and set theory are, in some sense, the same thing? Did you know that proofs and programs are, in some sense the same thing? Come learn about category theory, a beautiful and abstract mathematical language which is useful for unifying various areas of math.

Prerequisites
Familiarity with truth tables and logical connectives (and, or, not, implication), functions, and sets.

M8067: The computability hierarchy
Difficulty: ****
Teachers: Joshua Frisch

Imagine you had a computer with unlimited time and unlimited memory, a genius capable of writing brilliant programs. While you would be able to solve all sorts of problems with this machine, perhaps surprisingly, there would be some simple problems that, no matter how smart you are, you wouldn't be able to solve. Even if you could solve those problems there are yet more difficult problems you couldn't solve. In this class we will discuss computability theory, the field which studies these questions and has links with fields as diverse as math, computer science and linguistics.

Prerequisites
Exceptional mathematical maturity is a must, including knowledge of logic, proof by contradiction, and induction. Although calculus is not necessary for the subject matter, knowledge about the sizes of infinite sets will come in handy. Similarly, although not required, basic programming knowledge would be useful.

M7595: String Theory** Full!
Difficulty: **
Teachers: Sachi Hashimoto

Let's say you want to hang a picture in your room, and you are worried that the 2,000 fans you bought last week to create the wind tunnel in your room will blow it off the wall, so you want to hang it very securely. You start by wrapping string around some nails in a complicated fashion. You are sure it will be super-duper secure, because you wrapped it around three nails a lot of times. Your mother, angry about the electricity bills from running all your fans, comes over and pulls one of your nails out of the wall ... and your picture comes crashing to the ground! Actually, no matter which nail she removes, it falls! What happened?

In this class, you'll be playing with string to solve puzzles like this one, and we'll explore fundamental groups, homology, and monotone boolean functions.

**NOT actual string theory. The theory of strings. If you want actual physics-y 11 dimensional string theory, this is not the right class.

M7906: The Mathematics of Love
Difficulty: **
Teachers: Grace Zhang

Love doesn't make sense.

Or does it?

Ever wished to find logic and pattern in this oh so mushy slushy mess called feelings? Be confused no further! Turns out love and happiness are mathematically analyzable - after all, to beat the system, you have to first learn it.

Prerequisites
Basic understanding of calculus (derivatives and integrals)

M7580: Cryptography: Who are Alice, Bob, and Eve, anyway?
Difficulty: **
Teachers: Marcus Boorstin

Cryptography (the study of codes) is REALLY cool: it blends together math, logic, and problem solving (code breaking is fun!). We’ll discuss, use, and break simple historical ciphers like Caesar, Vigenere, and Playfair. We’ll take an in-depth look at the Enigma, and then the math and technology that broke it. Finally, we’ll examine modern computer encryption such as RSA and elliptic curve cryptography.

Prerequisites
No firm requirements; a bit of mathematical sophistication might be helpful.

M7889: INTEGARLS Full!
Difficulty: ***

Come learn about INTEGARLS like those found in the MIT Integration Bee! We'll be teaching a number of cool integration tricks, like crazy tangents and swingy-swingy.

Prerequisites
You should know calculus, enough to know what a u-substitution in an integral is.

M7586: Intro to Applied Statistics: Doing an Experiment - Correctly!
Difficulty: ***
Teachers: Akshara Thejaswi

How do scientists put together those endless reports with all those crazy graphs that no one can read and those calculations that don't mean anything?

No, they actually mean something.

Let me show you how they do it! Learn how to run an experiment from start to finish (the right way), minimize your error, maximize your validity, and publish your findings (the right way)!

Well, I guess this is just basically your AP Stats course condensed into two hours and one PowerPoint presentation.

Come, anyway.

Prerequisites
None, except maybe an appreciation for nice PowerPoints and pun-related "humor."

M7441: Homotopy Type Theory Full!
Difficulty: ***
Teachers: Jason Gross

What does it mean for two things to be equal? What does this have to do with string and the foundations of mathematics? Come to this class to find out!

In the past few years, type theory has emerged as a possible replacement for set theory as a foundation of mathematics. Homotopy type theory is an exciting new way to base math on homotopy theory, in the setting of type theory.

During the first hour, we'll talk about paths between points, and paths between paths, and I'll teach about the basics of homotopy theory. During the second hour, I'll explain how equality and isomorphism can be taken to be the same thing, and how equality looks a lot like paths, when you define it the right way.

Prerequisites
It will be helpful to know what it means for a function to be continuous, what I mean by "the closed interval [0, 1]".

M7448: Big Numbers Full!
Difficulty: *
Teachers: David Lerner

In this class, we study big numbers, including the biggest number ever used in a formal math paper. Just how big? Bigger than yo momma. But really, how big? Too big to write down, if you put a digit on every particle in the universe. As is the number of digits. As is the number of digits in the number of digits. And ditto if you wrote 'the number of digits in' once per particle in the universe....

And then we learn how to go much, much bigger.

M7985: Separating the signal from the noise
Difficulty: ***
Teachers: Abby Noyce

Statistics is the science of finding reliable patterns in big messy piles of data. Are guys better than girls at math? Do biology majors earn more money after graduating? Do Splash students come from larger families than the national average? This class will talk about techniques to answer all of these questions - and more!

M7910: Infinite Sums Made Finite: Divergent Summation
Difficulty: ***
Teachers: Patrick Ledwith

An infinite number of mathematicians walk into a bar. The first one says, "I'll have 1 pint of beer." The second says, "I'll have 2 pints of beer." The third says, "I'll have 3 pints of beer." The fourth says, "I'll have 4 pints of beer." The bartender looks at them, says, "Aw, the heck with all of you!" and pours 1/12 of a pint back into the barrel.

Get it? because 1+2+3+4+...=-1/12?
We'll be exploring sums like these and how to apply them to find real forces on real objects with quantum field theory.

Prerequisites
High school algebra is the only bare prerequisite, but if you have an understanding of convergent infinite summation (1+1/2+1/4...=2) it will help tremendously.

M8030: Bizarre Paradoxes in Statistics Full!
Difficulty: **
Teachers: Daniel Schwartz

Did you know that most people's friends are more popular than they are? That in a classroom of 23 students, there's a 50% chance that two share a birthday? That it's easy to make a (false) statistical argument that smoking cigarettes will increase your life expectancy?

In this class, we'll explore a bunch of powerful paradoxes in statistics and think about situations where our common intuitions about data fail spectacularly.

Prerequisites
Curiosity! (Being comfortable with math/stats is nice, but totally not necessary).

M8021: Graph theory
Difficulty: ***
Teachers: Davie Rolnick

This course will present a rapid introduction to graph theory, a rich and fascinating branch of mathematics that has applications to many other fields, such as computer science and biology. We’ll start with the definition of a graph, discuss fundamental concepts like bipartite graphs, cliques, and colorings, and then use these tools to examine important problems of graph theory, including random walks, percolation, and Ramsey numbers.

Prerequisites
Some experience with mathematical problem-solving and proofs.

M7774: Attack of the Killer Rabbits: Why does this polynomial only output Fibonacci Numbers?
Difficulty: *
Teachers: Colin Aitken

One day you buy a pair of rabbits. (Not realizing, of course, that these are killer rabbits). As rabbits are prone to do, this pair grows up and then breeds and suddenly you have more rabbits. As you may know, the number of pairs of rabbits follows the Fibonacci Sequence: 1,1,2,3,5,8, and so on.

Then weird things start happening, and you find the equation $$2y^4x + y^3x^2 - 2y^2x^3 - y^5 - yx^4 + 2y$$ etched into the rabbit cage. Weirder still, you try plugging integers into this equation, and notice that when the output is positive, it always seems to be a Fibonacci number. You don't know if explaining why will stop the impending Rabbitpocalypse, but you don't really have any other hope so you'd better come to this class and find out!

Prerequisites
High school algebra.

M7890: Infinitely Many Proofs of Infinitely Many Primes! Full!
Difficulty: ***

How many primes are there? INFINITELY MANY! How many different ways can you prove that? INFINITELY MANY! Unfortunately, Splash isn’t infinitely long, so we’ll only have time to cover $$\infty - 1$$ ways.

Prerequisites
Previous exposure to basic proof methods will prove helpful.

M7912: Become Fluent in Hex!
Difficulty: **
Teachers: Betsy Riley

Who needs to do their math homework in base 10 when they can do it in base 16? Why limit yourself to the usual alphabet when you can use numbers to write poems for your English class?

M7974: Kicking Serious Butt with the TI-83+: A Guide to Lists
Difficulty: **
Teachers: Danny Ben-David

Come on, I know you have one. Maybe it’s the TI-84+ instead, maybe it’s the Silver Edition™—I don’t care. Their plastic casings and ridiculous prices oh-so-carefully conceal a more powerful number cruncher than you ever originally thought.

In this class you will learn how to:
- churn through repetitive equations with blistering speed
- save buttloads of time (an accepted SI unit of time) on the Math SATs
- store useful data sets on your calculator long-term
- intro TI-BASIC programming to automate your calculations further

Prerequisites
You should bring your own TI-83+/TI-84+ if you want to follow along. (TI-89/TI-NSPIRE won’t probably work for this class, sorry; they run with different processors and are thus incompatible.) If you don’t bring your calculator to MIT, don’t worry: you can make a quick new friend and share with them.

M7728: Constructing the real numbers
Difficulty: ***
Teachers: Linh Nguyen

You use real numbers every day. But what are real numbers, really?

In this class, we will look at real numbers from a very different way. Going back the history, we shall see two ways to construct real numbers from integers, due to the earnest effort by Cauchy and Dedekind, which become the standard treatment for students who are about to explore the rigor and beauty of math. I hope this should be a fun and challenging class for you!

Prerequisites
Familiarity with algebraic manipulation, set theory, proof writing/understanding, and pre calculus. Expect a good amount of abstraction and non-intuitive concepts.

M8096: Epsilons and Deltas
Difficulty: ***
Teachers: Daniel Zaharopol

So, what's a continuous function? Maybe you've heard that it's a function you can draw without lifting your pencil off the paper. Well, that definition is nonsense. It's nice for intuition, but it doesn't let you think about what continuity means, or how to prove anything about it.

The first real definition of a continuous function that you'd see as a math major is the epsilon-delta definition. This is finally a chance to work with continuous functions, to understand exactly what they can and can't do, and to prove a lot about what's going on underneath the hood.

Prerequisites
This will be a challenging math class. It's a class for people who really like to think deeply about things, who are good at following abstract arguments, and who don't mind being a little bit lost sometimes. Choose it at your own risk!

M7629: Crocheting on the Hyperbolic Plane Full!
Difficulty: **
Teachers: lisa willey

We will use crocheting skills to demonstrate non-euclidean geometry and the hyperbolic plane. Students who sign up for this class should view this video <http://learntocrochet.lionbrand.com/> on "how to crochet" so that they are a little prepared for diving right into a project! Hyperbolic crocheting can be seen at the Smithsonian Museum of Natural History as a crocheted coral reef.

Prerequisites
Viewing and practicing basic crochet skills on this video <http://learntocrochet.lionbrand.com/>

Difficulty: **
Teachers: Zandra Vinegar

There is math. Like no math in school. And proofs full of wonder, mystery, and danger! Some say to survive them, you need to be as mad as a hatter!

Prerequisites
Come prepared for logic that doesn’t make any sense.

M7750: Counting Domino Tilings and the Pfaffian Method
Difficulty: ***
Teachers: Yuzhou Gu

How many ways are there to tile a n x m rectangular board with dominos? For n=2, the answer is the Fibonacci number. (Try to prove this!) What about when n=3? What about larger n's? This seems hard to approach.
In this class, you will learn how to completely solve this problem and a more general class of problems using the Pfaffian method.

Prerequisites
Knowledge of matrix and determinant will be helpful. Knowledge of graph theory will be helpful, but not required.

M8025: Information. Computation, and provability
Difficulty: ****
Teachers: Joshua Frisch

In early 1930s Godel proved two shocking theorems, firstly that there are true mathematical statements which can not be proven and secondly, that you can never prove your axiom system consistent. 30 years later Kolmogorov introduced a notion of how "complex" a number which allows 1000000000000000000000000000000000000 to be seen as less complex then 239340934238409238490237432480 despite being longer. We will use this idea in order to prove the first two incompleteness theorems and, on the way give shocking some shockingly unprovable problems, in particular we will describe a property satisfied by over 99.9999% which it's impossible to prove any particular number satisfies.

Prerequisites
You should be very comfortable with difficult, abstract mathematics and in particular absolutely must know what mathematical proof is. Knowing what a turing machine is would be very helpful but is not absolutely necessary if you are willing to take some things on faith.

M7535: Integers!
Difficulty: ***
Teachers: Josh Alman

Say I give you a sequence of numbers, defined by $$x_1 = x_2 = x_3 = x_4 = 1$$ and $$x_n = \frac{x_{n-1} x_{n-2} + x_{n-2}^2}{x_{n-4}}$$ for $$n \geq 5$$. A priori, this is a sequence of rational numbers, since we divide by an earlier term at each step. But, if we compute the terms, they turn out to all be integers!

Come learn about sequences that don't seem like they should consist of integers, but do.

Prerequisites
High School Algebra

M7758: How Not To Be Eaten By Dragons (by playing games) Full!
Difficulty: ***
Teachers: Jonathan Tidor

You heard tales of a far off land occupied by dragons that would challenge their victim to a game for their life. It was a game of skill and intellect involving taking coins from various piles of loot. If you won, you got to keep the treasure, but if you lost, the dragon would eat you.

You traveled to this far off land in search off treasure, but found that the tales lied. Instead of this mythical game, they made you do something completely different. Involving queens or sheep or something? What strangeness is this?

Come to this class to learn how to beat dragons at every game they could possibly think of so they don't eat you!

Prerequisites
This class has no formal prerequisites, but prepared for it to go rather fast at some times.

M7814: Unrelated Math Things That Are Too Short To Be Separate Classes
Difficulty: **
Teachers: Benjamin Cosman

Might include:

- A short 'proof' of Godel's Incompleteness Theorems
- An application of the Buckingham-Pi Theorem to right triangles
- A proof using wires and resistors of a standard inequality
- The number of bears it takes to catch you in a circular arena
- The number of bears it takes to catch you on the Sierpinski Triangle
- Whatever else I come up with and have time for

M7356: The Birthday problem and Applications to Encryption
Difficulty: **
Teachers: Amy Prager

A statement of and solution to the birthday problem is presented as well as its application to modern cryptography

Prerequisites
Familiarity with factorials

M7884: Introduction to Theoretical Computer Science Full!
Difficulty: ***
Teachers: Bianca Homberg

Computers are powerful, sure. But can they compute anything you want them to? Is there anything computers absolutely can’t figure out, no matter what? The answer here is yes—computers are not omnipotent.

In this class, we’ll prove mathematically that despite whatever clever algorithms people can come up with, there will always be problems that are impossible for a computer to solve. We’ll look at few examples, including the Halting Problem. Along the way, we’ll encounter and investigate a variety of theoretical constructs which compute: deterministic finite automata (DFA’s), pushdown automata, context free grammars, and Turing Machines. We'll also explore what kinds of problems these can solve--and prove which ones are more powerful.

Prerequisites
Some amount of mathematical maturity--e.g., have seen proofs by contradiction before.

M8010: Euclidean Geometry
Difficulty: ***
Teachers: Davie Rolnick

We will present a whirlwind tour of olympiad-style Euclidean geometry. Topics covered shall include cyclic quadrilaterals, power of a point, triangle centers, and spiral similarity, as well as more specific results such as the Theorems of Napoleon, Pascal, and Miquel. Problems will be solved in class.

Prerequisites
Students must be comfortable working with geometric concepts such as angles, parallel lines, and similar triangles. Knowledge of basic trigonometry may be helpful but is not required.

M7456: Math is Awesome!
Difficulty: *
Teachers: Jonathan Tidor

Did you know that math is really really awesome? Come to this class to hear about the coolest and most ridiculous facts in mathematics, from fairies and multiplying bunnies to dragons that eat ridiculously strange infinite series!

Prerequisites
Nothing but a willingness to listen to cool math! If you know what a complex number was, it will make the class more understandable, but that's not necessary.

M7394: The Craziest Math Class East of the Mississippi Full!
Difficulty: **
Teachers: Ziv Scully

Sometimes people ask me, "Why is math fun?" This class is why. Here are some things we might do:

-Describe a computer program that is impossible to write.

-Show that there are different sizes of infinity by playing a game.

-Save infinitely many monkeys from an evil wizard using some tricky set theory.

-Prove the awkwardly-named "hairy ball theorem", which says that it's impossible to perfectly comb a hairy ball.

-Run out of time :).

Prerequisites
Willingness to ask questions when confused.

M8097: Metric Spaces
Difficulty: ***
Teachers: Daniel Zaharopol

One of the most beautiful things that mathematics can do is take an idea and generalize it. Take addition and generalize it: you get group theory. Take the idea of maps and generalize it: you get graph theory. Take the idea of distance and generalize it: you get metric spaces.

Metric spaces are just collections of points where there's a consistent notion of distance. Our own world is a metric space. But take that idea and generalize it and you get an incredible theory that introduces many other kinds of spaces. By studying these spaces, we learn more about what distance really means, and we can prove general results that apply to many different kinds of spaces. We'll also get a first introduction to topology, an even more general study of different kinds of spaces.

Prerequisites
This will be a very abstract math class. We will move at a fast pace and you must be ready for it! You should be the sort of person who really enjoys that kind of challenge, or who already has experience with a theorem-proof style of class. Epsilons and Deltas will be a very nice lead-in to this course, and they will overlap a bit in material. You'll get a lot out of taking both, and it will make this class easier to follow.

M7992: The Art of Computation
Difficulty: **
Teachers: MINH TUE VO THANH

The Art of Computation will introduce students to simple notions of numerical algorithms - how to calculate and solve fundamental equations by crunching numbers :) only basic arithmetic are needed

Prerequisites
Basic Knowledge of Algebra and Arithmetics

M7390: The Banach-Tarski Paradox: Speed Run!
Difficulty: ****
Teachers: Ziv Scully

Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball!

We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun, then this class is for you!

Prerequisites
A certain degree of mathematical maturity. For example, you should understand the difference between countably infinite and uncountably infinite sets. If you've seen a bit of group theory it will come in handy.

M7364: Problems We Will Never Solve Full!
Difficulty: **
Teachers: Chelsea Voss

Many problems are "uncomputable" -- we will never be able to write a computer program that can solve them.

Ludicrous!, you say. Crazy! Never? That can't be true!

But it's true. And I'll prove it to you.

Come learn the lore of uncomputability, of Turing machines, and of code that loops forever. We will explore the limit of the mathematically possible.

M7634: Miquel's Point and Cyclic Quadrilaterals
Difficulty: ***
Teachers: John Ma

This class will explore the Miquel point, whose configuration come up in a lot of geometry questions. Also it's just really cool.

Prerequisites
Basic geometry knowledge (similar triangles, circles). Knowing what cyclic quadrilaterals are is helpful but not required.

Difficulty: ***
Teachers: David Yang

A quadratic form is just a degree 2 polynomial (in more than one variable). What interesting things can you say about these? Well...

M7402: Propositional Calculus and Godel's Theorem
Difficulty: ***
Teachers: Zachary Neely

Have you ever wondered if two plus two is really equal to four? Or if addition is really commutative?

Have you ever wondered what "proving" something really means? Why a series of lines on paper mean that something is "true" - whatever that means?

Have you ever wondered, "How do math?" "What math mean?" "Do math work?"

This class will answer all those questions and more - and then prove that the whole solution is completely wrong and could never, ever, possibly be right.

Please Note: You will not use anything useful from this class, unless you become a theoretical mathematician.

Prerequisites
High School Algebra; Geometry is a co-requisite (you can either be in the class now or have completed it).

M7478: Uncanny Appearances of Sierpinski's Triangle
Difficulty: ***
Teachers: Zandra Vinegar

The hairs on the back of your neck stand on end... It's there - you can see it - sometimes cloudy, as if in a fog, but no! It's a swarm! and the swarm forms... you cannot believe it. But wait, again, not one, but infinitely many overlayed in beautiful pattern... it rises from the predictable, and from randomness... it is: SIERPINSKI'S TRIANGLE. No, really, it's freaking ridiculous where you can find this infinitely-triangular-fractal, and the description above isn't exaggerating at all. Pascal's got nothing on this thing.

M7673: Linear Algebra for Reluctant Physics Students
Difficulty: ***

You’re a student of physics. You may know all about the four fundamental forces, but do you know all about the four fundamental subspaces? Why should you even care about the nullspace of a matrix, or its transpose? Why should you care if a matrix is positive definite, or if it is Hermitian? It is just some pretty math-y stuff that doesn’t really have much physical sense. Right? Totally wrong! Linear algebra is not only indeed pretty, but also super powerful. Come learn about how matrices and linear algebra are used to solve ordinary differential equations in physics, diffusion problems, wave equations, and finite and infinite dynamical systems.

Prerequisites
Calculus, willingness to learn linear algebra or previous exposure to it is welcome but not at all required :)

M7457: How Not to Not Kill a Hydra
Difficulty: ***
Teachers: Ziv Scully

Suppose Hercules sets out to battle a Hydra. Hercules knows that if he plans out the battle and chops the heads off in the right order, victory is assured. However, this time Hercules is short on cash, so he's planning to throw the battle as part of a lucrative betting scandal.

But the math is not on Hercules's side! It turns out that no matter how terribly Hercules tries to fight, he's guaranteed to kill the Hydra in a finite amount of time! We'll prove this and show how it's related to the fact that a sequence (called a Goodstein sequence) whose first three terms are 42, 22 trillion, and 10^154 eventually settles 0.

Prerequisites

M8041: Fractals: the Infinite Frontier
Difficulty: **

Fractals...you know what they look like, but do you have any idea what they really are?

Come join us to find out how a coastline could be of infinite length, a shape can be log(3) dimensional, and infinite cats can turn into...well, I won't spoil it for you, but I promise it's awesome.

M7572: Extreme Math Full!
Difficulty: ****

This class is mostly an excuse for us (the teachers) to watch you (the students) flail while you try to solve tricky math problems on the spot.

This is how it will work. We will give you a math problem, and you’ll have to immediately present a solution on the black-board. You’ll have up to eight minutes to present your proof, but you need to continuously be presenting. Then our panel of judges will award you a score based on how correct, confusing, and amusing your solution was. There may or may not be teams, depending on how many students we get.

Prerequisites
The problems we'll give you will probably be at an easy Olympiad level. At a bare minimum, you should be comfortable writing/coming up with proofs; preferably, you're a USAMO qualifier or at least feel comfortable solving Olympiad-level problems. Also, if you're extremely shy, you probably won't enjoy this that much.

M7408: The Mathematics of SET
Difficulty: **

What does visualizing lines in 4D space, ridiculously hard counting problems, and making people think you have ESP have in common? They all have to do with the game SET!

SET is an awesome card game of visual perception and pattern matching with even more awesome math behind it! Come to this class prepared to have fun playing SET and to work with others to figure out some of the awesome combinatorics and geometry involved in the game.

Prerequisites
If you don't know how to play SET, learning beforehand would be a good idea. You can learn here http://multiplayerset.com/ or come to the related walk-in.

M7542: Idempotents: Forever Squared
Difficulty: **
Teachers: Andrew Geng

$$6^2 = 3\boxed{6}$$
$$76^2 = 57\boxed{76}$$
$$376^2 = 141\boxed{376}$$
Can you find more numbers like this?
Is there a limit to how long they can get?
Can you find any which end in 5 instead?
Can you do this in base 2? Base 12?

In our quest to answer these questions, we’ll get a little glimpse of a kind of math known as "ring theory". (What does this silliness have to do with rings anyway?)

Prerequisites
We’re going to make up new numbers and the methods for adding and multiplying them out of thin air. If you’re not okay with that, maybe this class isn’t for you.

M7395: Calculate Pi with Trains!
Difficulty: ***
Teachers: Ziv Scully

It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Freshman Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

Prerequisites
You should know what the law of cosines, conservation of momentum, and conservation of energy are.

M7432: Multivariable/Vector Calculus Full!
Difficulty: ****
Teachers: Aaron Dunbrack

Learn what comes after "regular" calculus. We'll start with vector fields, partial derivatives and multiple integrals and end with an explanation of the gradient, divergence, curl, flux and curvature. Warning: This class will be very fast-paced and it will be likely (expected, in fact) that many things you will feel like you fully understand in-class and then be unable to go back you out of class.

Prerequisites
Know what a vector is. Know single-variable calculus, at the very least conceptually, either through my earlier course or through your own knowledge - i.e., know what a limit is, what a derivative is, and what an integral is. A knowledge of matrices would be ideal, but for our purposes matrices will just be tools and won't be required for understanding, so you don't necessarily need them.

M8071: Young Tableaux
Difficulty: **
Teachers: Josh Alman