Computer Graphics

Course Description

6.837 offers an introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience is required. This course is worth 6 Engineering Design Points.

Technical Requirements

Any number of development tools can be used to compile and run the .C and .h files found on this course site. Any number of graphics applications can import the .obj files found on this course site. Please refer to the course materials for any specific instructions or recommendations.

Lecture Notes

LEC #
TOPICS
1
Course Overview ( PDF - 1.1MB)
C++ Tutorial (PDF)
2
Ray Casting 1: Generation and Intersection (PDF - 1.2 MB)
3
Ray Casting 2: More Intersection (PDF - 1.7 MB)
4
Transformations 1: Translation, Rotation and Scale (PDF - 1.0 MB)
5
Transformations 2: In Modeling (PDF - 1.7 MB)
Linear Algebra Tutorial (PDF)
6
Ray Tracing (PDF - 2.4 MB)
7
Local Illumination (PDF)
8
Acceleration Data Structures (PDF - 3.9 MB)
9
Curves and Surfaces (PDF - 3.2 MB)
10
Animation 1: Interpolation and Kinematics (PDF)
11
Animation 2: Orientation and Quaternions (PDF)
12
Animation 3: Dynamics (PDF - 1.7 MB)
13
Graphics Pipeline 1: Perspective Transformations
(PDF - 1.1 MB)
14
Graphics Pipeline 2: Line Clipping and Rasterization (PDF)
15
Graphics Pipeline 3: Polygon Rasterization (PDF)
16
Graphics Pipeline 4: Polygon Clipping
(PDF - 3.1 MB)
17
Shadows (PDF - 3.1 MB)
18
Global Illumination: Radiosity (PDF - 2.7 MB)
19
Monte Carlo Ray Tracing (PDF - 3.4 MB)
20
Color 1: Color Vision and Color Spaces (PDF - 2.3 MB) (Courtesy of Victor Ostromoukhov. Used with permission.)
21
Color 2: Color Effects and Production (PDF - 2.6 MB) (Courtesy of Victor Ostromoukhov. Used with permission.)
22
Texture Mapping (PDF - 3.6 MB)
23
Sampling, Aliasing and MIP Mapping
(PDF - 2.0 MB)

Exams

Quiz 1 is given after lecture 9 and Quiz 2 is given after lecture 20, as shown in the calendar. Both quizzes are provided below.
Quiz 1 (PDF)
Quiz 2 (PDF)

Networks


Course Description

Networks are ubiquitous in our modern society. The World Wide Web that links us to and enables information flows with the rest of the world is the most visible example. It is, however, only one of many networks within which we are situated. Our social life is organized around networks of friends and colleagues. These networks determine our information, influence our opinions, and shape our political attitudes. They also link us, often through important but weak ties, to everybody else in the United States and in the world. Economic and financial markets also look much more like networks than anonymous marketplaces. Firms interact with the same suppliers and customers and use Web-like supply chains. Financial linkages, both among banks and between consumers, companies and banks, also form a network over which funds flow and risks are shared. Systemic risk in financial markets often results from the counterparty risks created within this financial network. Food chains, interacting biological systems and the spread and containment of epidemics are some of the other natural and social phenomena that exhibit a marked networked structure.
This course will introduce the tools for the study of networks. It will show how certain common principles permeate the functioning of these diverse networks and how the same issues related to robustness, fragility, and interlinkages arise in several different types of networks.

Lecture Notes

The actual size of these slides is 12.8 cm by 9.6 cm. Use Adobe Reader's print options to scale the slide to fit the page before printing.
SES #
TOPICS
SLIDES
1

Introduction to economic, social, and communication networks

Lecture 1(PDF - 1.0MB)
2

Graph theory and social networks

Directed and undirected graphs, paths, cycles, diameter, clustering, bipartite graphs. Applications: the web as a directed graph, graphical representation of homophily
Lecture 2 (PDF)
3-4

Branching processes and random graph models

Review of branching processes, Erdös-Renyi graphs, degree distributions, phase transitions, connectedness, and giant component. Applications: tipping, six degrees of separation, and disease transmissions
Lecture 3 (PDF)
Lecture 4 (PDF)
5-7

Rich get richer phenomena, power laws, and small worlds

Preferential attachment, degree distributions, generalized random graphs, and clustering. Applications: firm size distributions, link analysis and web search, PageRank, decentralized search, and navigation
Lecture 5 (PDF)
Lecture 6 (PDF)
Lecture 7 (PDF)
8

Epidemics and diffusion through networks

SIR (susceptible, infected, removed) and SIS (susceptible, infected susceptible) models of diffusion. Applications: spread of information and disease, and genetic inheritance
Lecture 8 (PDF)
9-11

Introduction to game theory

Games, strategies, payoffs, extensive and normal forms, and Nash equilibrium. Applications: tragedy of the commons and coordination games
Lecture 9 (PDF)
Lecture 10 (PDF)
Lecture 11 (PDF)
12

Applications of game theory to networks

Modeling network traffic, strategic network formation, negative externalities, Braess' paradox, and potential games. Application: congestion tax in London
Lecture 12 (PDF)
13-14

Evolution, learning, and myopia vs. rationality

Evolutionary stable strategies, fictitious play, emergence of Nash equilibrium from rules of thumb, limits of myopic behavior. Application: rules of thumb in traffic
Lectures 13 and 14 (PDF)
15-16

Dynamic and repeated games, and cooperation and trust in networks

Subgame perfect Nash equilibrium, repeated games, prisoners' dilemma, repeated games over networks. Application: emergence of cooperation in social networks
Lecture 15 (PDF)
Lecture 16 (PDF)
17-18

Network effects, innovation, tipping and contagion

Positive externalities, strategic complements, path dependence, diffusion of innovation, and tipping in technology, financial, and product markets. Application: the rise of Microsoft and contagion phenomena
Lectures 17 and 18 (PDF)
19-21

Games of incomplete information

Bayes rule, Bayesian Nash equilibria, first and second price auctions, and introduction to social learning. Applications: spectrum auctions, market for lemons, and keyword-based advertising
Lectures 19 to 21 (PDF)
22-23

Social learning in networks

Bayesian learning, benefits of copying, herd behavior, informational cascades. Applications: consumer behavior and financial markets
Lectures 22 and 23 (PDF)
24

Decisions in groups

Decision making in organizations and societies, social choice, Condorcet jury theorem, and political economy. Application: committee decisions
Lecture 24 (PDF)

A Gentle Introduction to Programming Using Python

Course Description

This course will provide a gentle introduction to programming using Python™ for highly motivated students with little or no prior experience in programming computers. The course will focus on planning and organizing programs, as well as the grammar of the Python programming language. Lectures will be interactive featuring in-class exercises with lots of support from the course staff.
This course is offered during the Independent Activities Period (IAP), which is a special 4-week term at MIT that runs from the first week of January until the end of the month.

Lecture Notes

Notes and Worksheets

The session 1 notes (PDF) include the syllabus, some administrivia and an introductory tutorial to Python.
Exam 1 (Session 5) covered everything through class 3: variables, types, operators, functions, conditionals and loops. The solutions double as notes for sessions 1 through 3. (PDF)
The session 6 homework (PDF) doubles as notes for classes 4 through 6.
The optional session 7 homework (PDF) serves as useful practice with lists.
The session 8 notes (PDF) cover dictionaries and their usage.
The session 9 worksheet (PDF) reviews common errors and good programming practices.

Handouts

Handout 1 (PDF) reviewed while loops and the basics of for loops.
Handout 2 (PDF) was a heavy review before the midterm, covering functions, lists, for loops and tuples.
Handout 3 (PDF) reviewed objects.
Handout 4 (PDF) reviewed dictionaries and gave guidance on part 1 of the Web indexer lab.
Handout 5 (PDF) was a walkthrough for part 2 of the Web indexer lab, and covered compound dictionaries.

Labs and Solutions

DESCRIPTION
FILES
SOLUTIONS
Lab 3 covered control flow with if-elif-else statements.
(PDF)
Lab 4 covered control flow with while statements.
(PDF)
login.py (PY)
nims1.py (PY)
nims2.py (PY)
Lab 5 covered the use of lists in storing a dynamic number of values.
(PDF)
sorting.py (PY)
reportcard.py (PY)
Lab 6 covered the use of tuples instead of lists and their similarity with strings.
(PDF)
collision.py (PY)
piglatin.py (PY)
Lab 7 was a walkthrough tutorial that introduced the idea of objects as opposed to primitive types like ints and floats. By exploring concepts like primitives (e.g. numbers) versus references to objects (e.g. lists), mutability versus immutability, and the effects of scope on objects, we now better understand how to use objects correctly.

Notes



1. Some commands will not produce the expected results when performed on the shell. Instead, run the commands from a file. I'm not sure why this is.
2. I was under the impression that Python aliases tuples automatically. It turns out this is not the case. In other words:
a = (1, 2, 3)
b = (1, 2, 3)
print a is b
However, you can still alias by saying b = a. Strings are still automatically aliased.
(PDF)
Lab 8 covered the use of member functions in various objects.
(PDF)
genetic.py (PY)
Lab 9 covered the use and syntax of dictionaries. The bulk of the lab was to explore one common use of dictionaries as indexes, in this case, for searching the Web.
(PDF)
namesages.py (PY)
websearch1.py (PY)
webindexer1.py (PY)
htmltext.py (PY)
smallsites.txt (TXT)
mitsites20.txt (TXT)
mitsites50.txt (TXT)
localsites.zip (ZIP)
namesages_soln.py (PY)
webindexer1_soln.py (PY)
Lab 10 covered a more advanced use of dictionaries. The bulk of the lab was to improve the web indexer we built in the previous lab.
(PDF)
inventory.py (PY)
websearch2.py (PY)
webindexer2.py (PY)
inventory_soln.py (PY)
webindexer2_soln.py (PY)
free counters