ESP Biography



FAVYEN BASTANI, stuck in deadlock




Major: Unsure, maybe Computer Science

College/Employer: MIT

Year of Graduation: 2016

Picture of Favyen Bastani

Brief Biographical Sketch:

69:44:127:107:86:5:21:110:74:25:2:26:17:92:
78:28:117:4:122:48:119:64:52:118:44:122:26:
11:70:93:75:105:122:108:88:3:29:11:31:69:
101:17:14:78:100:65:20:88:61:126:35:106:54:
105:80:102:43:38:92:37:108:108

17:68:28:75:34:119:98:26:34:57:107:105:49:
47:63:105:22:104:22:73:87:42:65:7:88:90:
123:101:102:56:51:10:13:31:61:35:123:100:
109:101:4:49:98:45:1:44:52:57:91:94:74:
5:85:16:57:12:76:82:53:76:2:70



Past Classes

  (Clicking a class title will bring you to the course's section of the corresponding course catalog)

C11177: Scaling Web Applications in Splash 2016 (Nov. 19 - 20, 2016)
Have you ever wondered how Google, Facebook, Twitter, and other huge Internet services accommodate millions of users concurrently? We'll look at techniques for load balancing, caching, fault tolerance, and more!


C11178: The Internet in Splash 2016 (Nov. 19 - 20, 2016)
Learn about IP, BGP, TCP, UDP, and other technologies that form the foundation of the Internet. Time permitting, we'll discuss attacks like IP spoofing and packet flooding, discuss peering between ISPs and peering disputes that sometimes break connectivity, and other interesting issues.


C11179: Distributed Storage in Splash 2016 (Nov. 19 - 20, 2016)
We'll examine the inner workings of several large-scale storage systems. Distributed filesystems allow applications on multiple machines to interact simultaneously on a shared storage device. Object storage stores immutable files, often replicating data across datacenters in different geographic regions. Block storage stores disks for virtual machines, so that data won't be lost on cloud infrastructure providers like AWS EC2 when disks fail.


C10419: Security on the Internet in Spark 2016 (Mar. 12 - 13, 2016)
The Internet is a complex system, connecting tens of thousands of networks and supporting hundreds of thousands of applications. Because of this complexity, vulnerabilities inevitably arise that allow malicious actors to make services temporarily unusable, or even to bypass access control mechanisms and extract private data. We will start by looking at low-level IP address spoofing and network-layer denial of service attacks. We will work our way up to common security issues in the world wide web, including SQL injection and cross-site scripting attacks.


C10423: Distributed Data Processing in Spark 2016 (Mar. 12 - 13, 2016)
How do large-scale web services like search engines and social networks quickly analyze hundreds of terabytes of data? In this class, we'll explore common distributed data processing architectures; we'll look at distributed filesystems, parallel MapReduce, and resilient distributed datasets.


C10141: Consensus in Splash 2015 (Nov. 21 - 22, 2015)
Consensus, the problem of getting many machines to agree on one outcome, is a fundamental problem in distributed systems. For example, if you're implementing a high availability scheduling system, you don't want two clients to be able to schedule the same resource; the machines in your system need to agree on which client scheduled first. In this class, we'll explore consensus and its applications under several scenarios, including some where consensus is not possible. We'll end by considering Paxos, an eventual consensus algorithm widely used in practice.


C10152: Designing Fault Tolerant Applications in Splash 2015 (Nov. 21 - 22, 2015)
Servers inevitably fail: whether it's filesystem corruption, power loss, or a fiber cut, eventually something will happen that brings the server down. In large-scale services that involve thousands of servers across multiple datacenters, servers may be failing every hour. To remain online with regular failures of individual servers, applications employ a variety of fault tolerance techniques. We'll focus on replication approaches and will consider primary-backup replication, state machine replication with Paxos, and sharding. On the way, we'll build a fault tolerant messaging application in Golang.


C9551: Hands-On Introduction to Internet Technologies in HSSP Summer 2015 (Jul. 12, 2015)
Learn about the structure of the Internet and various applications build on top of it, while setting up servers to host your own services. We'll first look at how IP, TCP, and the domain name system provide a framework for communication across the Internet, and then dive into specific applications including the world wide web, e-mail, and SSH. At the same time, we'll explore traffic sniffing, configuring DNS records, and actually installing server software. By the end, you'll have a fully functioning web and mail server; and you'll understand how they work!


C9075: Web application security in Splash 2014 (Nov. 22 - 23, 2014)
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.


C9077: Consensus in Splash 2014 (Nov. 22 - 23, 2014)
You and your friend have been captured by an evil computer scientist. She puts you into separate rooms and assigns each of you a number, either 0 or 1. Each of you can send one number back to her; if you and your friend both send the same number, and that number is one of the two you and your friend were assigned, then she lets you free. Otherwise, you will be locked in the room forever. To make this more interesting, the scientist also offers you a means of communication. She keeps track of an unlimited set of slots, and you and your friend can each request to read a value from or write a value to a specific slot at any time; she will respond saying that the write has completed or with the result of the read operation, after which you can make another request. She also may arbitrarily delay the requests from one of you, as long as she continues to respond to the other's requests immediately (this means she does not need to respond to one person's request until the other person also makes a request). Unfortunately, there is no way for you to guarantee that you will both send the same valid number in a finite amount of time. Come to learn more about consensus, why it's not possible with only atomic read/write registers, and its enormous implications for multithreaded programming and concurrent computability.


C8475: Web application security in HSSP Summer 2014 (Jul. 06, 2014)
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. At the same time, we'll see how modern technologies prevent these attacks by design, and also investigate why such attacks nevertheless still continue to be a problem.


C8394: Introduction to Programming, in Java in Spark 2014 (Mar. 15 - 16, 2014)
Interested in learning how to create computer programs, but never got the chance to learn? In this class, we'll talk about basic programming concepts and introduce the Java language.


C8395: How Networking Works in Spark 2014 (Mar. 15 - 16, 2014)
Ever wondered what enables you to type a URL in your web browser and almost instantaneously view the corresponding web page? In this class, we'll introduce a few basic networking protocols -- specifically IP, TCP, and UDP -- as well as how applications like HTTP build on top of them. We'll see how the Internet is made up of layers, each relying on the one below; and how it is robust to errors and bugs.


C7837: Hadoop - tackling "embarrassingly parallel" big data in Splash! 2013 (Nov. 23 - 24, 2013)
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.


C7838: Web application security in Splash! 2013 (Nov. 23 - 24, 2013)
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.


C7001: AJAX from scratch in Spark! 2013 (Mar. 16, 2013)
Learn how to build an AJAX (asynchronous Javascript and XML) web chat application using a combination of PHP, HTML, Javascript, and MySQL. We'll cover why AJAX is important, the basics of the technologies we'll be using, how to put them together, and some drawbacks of AJAX.


C6119: Introduction to Graph Algorithms in Splash! 2012 (Nov. 17 - 18, 2012)
Systems as diverse as road networks, images, the world wide web, and social networks can be modeled as graphs. Learn how to efficiently search a graph, compute minimum spanning trees and shortest distances, and more!


C6123: Optimization with Genetic and other Heuristic Algorithms in Splash! 2012 (Nov. 17 - 18, 2012)
For many optimization problems, such as finding the best way to schedule Splash or minimizing delay in a traffic network by altering intersection light settings, is it too hard to find an exact solution. However, heuristic algorithms like the genetic algorithm can provide a near-optimal solution that is often good enough. In this class, we explore several heuristic algorithms including simulated annealing, particle swarm optimization, and the genetic algorithm. Then, we consider multi-objective optimization problems, and look at modern genetic algorithm approaches to solve them.