TEXTBOOK / LECTURES / HOMEWORKS / BLOG / PROJECTS
The course meets MW 1-2:25pm in Ann 213 Steele 102 ARMS 155.
We may occasionally have ``bonus'' lectures on F 1-2:25pm in Ann 213.
The course blog will be the place where important announcements will be posted and where questions about homeworks/lectures/projects should be posted so that everyone can benefit from the responses.
The web is an essential part of our lives and we all depend on it every day, but do you really know what makes it work? This course studies the "big" ideas behind the web. Things like, how do search engines work? How can search engines make so much money from putting adds next to its search results? What does the web actually look like? How big is the web? For all these questions and more, the course will provide a mixture of both mathematical analysis and real-world hands-on labs.
This course can be combined with CS/EE 145 and CS 141a or CS/EE 143 to satisfy the project requirement for CS undergraduate degree, but CS/EE 143 is not a required prerequisite. The course assumes some background in graph theory, probability, and basic programming.
Adam Wierman, adamw@caltech.edu
Ragavendran Gopalakrishnan (a.k.a. Raga), ragad3@caltech.edu
Jayakrishnan Nair (a.k.a. JK), ujk@caltech.edu
Changhong Zhao, czhao@caltech.edu
Fred Zhao, fredzhao@caltech.edu
Wednesday and Thursday evening 7-9pm in Annenberg 107.
Office hours are an important part of this course. We have them in the evenings in order to make sure people can come. The hope is that people come and just hang out and work on the homeworks, asking questions when they come up, instead of coming because they have specific questions in mind. So, even if you are just getting started, come to office hours and work there so that you can ask questions when they come up. You are required to visit office hours at least twice during the first 5 weeks.
Networks, Crowds, and Markets: Reasoning About a Highly Connected World,
by David Easley and Jon Kleinberg.
This book is quite reasonably priced, but there is also a pre-publication pdf available here. I think the book is excellent, so I highly recommend you buy a copy and read it cover-to-cover. We will not be going through it in order, but I will point to the relevant parts of the book for each lecture. Additionally, I will post course notes and supplementary papers on this site at the end of each class.
This is only a tentative outline of the topics we will discuss and will likely change as the term goes by. But, I put it up to give you an idea of where we're going. The course is basically organized as a collection of topics that I think are important and interesting and which provide a modern perspective on how the web works.
Note: I am posting my slides and handwritten notes for each lecture, but they are incomplete and certainly are not meant to serve as a replacement for attending class. Note that I typically dovetail powerpoint and boardwork together, so the notes and slides should be looked at together.
Introduction to the class
lecture slides: [ppt]
required handout: Information Sheet, be sure to return this to Adam ASAP
required reading: Chapter 13 of [Easley & Kleinberg 2010]
suggested reading: [Bush 1945]
suggested reading: [Berners-Lee 1990]
given by JK on Friday Jan. 6, 1-2:30pm in Annenberg 213
lecture notes: [ppt]
Part I: Understanding Network structure
lecture notes: [pdf]
lecture slides: [ppt]
required reading: Chapters 1 and 2 of [Easley & Kleinberg 2010]
data sets to play with: [SNAP]
suggested reading: [Broder et al. 2000]
if you want more: Chapter 1 of Social and Economic networks by Matthew Jackson.
lecture notes: [pdf]
lecture slides: [ppt]
required reading: none
if you want more: The strange logic of random graphs, by Joel Spencer
if you want (a lot) more: Random Graphs and complex networks by Remco van der Hofstad
if you want (a lot) more: Random Graphs by Bela Bollobas, Chapters 2,5, and 6.
lecture notes: [pdf]
lecture plots: [ppt]
required reading: Chapter 18 of [Easley & Kleinberg 2010]
suggested reading: [Clauset, Shalizi, & Newman 2009]
suggested reading: [Albert and Barabasi 2002]
suggested reading: [Achlioptas, Clauset, Kempe, Moore 2009]
if you want (a lot) more: [Bollobas 2003]
lecture slides: [ppt]
lecture notes: [pdf]
required reading: Chapter 20 of [Easley & Kleinberg 2010]
suggested reading: [Watts and Strogatz model]
suggested reading: [Kleinberg 2000]
Part II. Exploiting Network structure
lecture slides (1st half): [ppt]
lecture notes (2nd half): [pdf]
required reading: Chapter 14 of [Easley & Kleinberg 2010]
required reading: [Brin and Page 1998]
required reading: [Page et al. 1999]
suggested reading: [Langville and Meyer 2004]
given by Raga on Feb. 1, 1-2:30pm in ARMS 155
lecture slides: [pdf]
required reading: Chapters 6 and 7 of [Easley & Kleinberg 2010]
suggested reading: Chapters 1 and 2 of [Algorithmic Game Theory]
lecture slides: [ppt]
lecture notes: [pdf]
required reading: Chapters 16 and 19 of [Easley & Kleinberg 2010]
suggested reading: [Jackson & Yariv 2010]
Part III. Network economics
Part IV. Making the web work
This is a preliminary breakdown that may change during the term. In particular, I reserve the right to decide that I want to have a final, in which case it will change dramatically!
Homeworks will be assigned every 1-2 weeks. Many of the problems will be challenging, so please start immediately and please come to office hours to discuss the problems! The assignments will represent a mixture of theory (proofs) and practice (coding). I assume that you can code and use Matlab/Mathematica and Python.
You are strongly encouraged to collaborate with your classmates on these problems, but each person must write up the final solutions individually. You should note on your homework specifically which problems were a collaborative effort and with whom.
Homeworks should be turned in either by email to the "Guru" or by leaving them in the box outside Adam's office (Annenberg 215).
data file: [hw1data_updated.txt]
data file: [net_sci_coauthorships.txt]
helper code: [fetcher.py]
The rankmaniac 2012 roster is:
Dychen, Judy, Bryan, Janis
Brian, Tuling, Tim
Laura, Chris, Riley, Ben
Alex, Rebecca, Annie
Kevin, Nathan, Mikhail
Shayan, Henry, Haoyang, Joe
Gustaf, Hari, Tobias, Shiyu
The TAs
Alex, Tuan, Richard, Daniil
Christophe, Pan
and many more...
Note -- This will be a short HW to allow time for project proposals.
Late policy: Assignments are typically due Fridays at 1pm. I will allocate each student 4 tokens at the beginning of the term. Each of these tokens can be used to buy a one day extension on any homework during the term. You cannot get extra tokens and zero credit will be given to late assignments, so use your tokens wisely and start early!
Contest winners: We have two contests during the course homeworks, one related to search engine optimization (rankmaniac) and one related to computational advertising (clickmaniac). The projects change year to year, but the winners are immortalized here:
In 2011...
    the rankmaniacs were: Giordon Stark and Jamie Jackson
    the clickmaniacs were: Dai Wei, Doris Xin, and Wenqi Yao
In 2010...
    the rankmaniacs were: Daniel Erenrich, Chis Kennelly, and Andy Matuschak.
    the clickmaniacs were: Jonathan Krause and Manuel Lagang.
We will maintain a CS144 course blog as part of the course, with the goal of ensuring that everyone takes the time to connect what we are discussing in class with what's going on in the world. Every student will be responsible for making two posts during the term. The deadline for these posts is rolling, depending on your last name. The details of the policies, grading, and due dates for these blog posts is here.
Pretty much anything related to "our networked life" is an appropriate topic for posts. Possibilities range from (i) topics related to the robustness, structure, growth of networks broadly defined; (ii) anything about the interaction of networks with economics or markets; (iii) topics about what runs the web (data centers, cdns, etc); and (iv) topics related to how fads, opinions, or political movements spread. For inspiration, check out the course blog from the Cornell "Networks" course.
To allow students to make posts anonymously (if desired), we have a common userid and password, which will be announced in class. If you missed it, or forgot it, email a TA. To allow for grading, if you post anonymously please be sure to email JK "claiming" your post.
We will not be having a course project during this term, but those doing the project sequence (143/144/145) will be preparing for the project they will complete during the third term. To accomplish this we will have two project-related assignments:
You will provide 1-2 page proposals for 3 possible projects related to 144 (or 143). These can be completed in groups of 2-4. We will provide more detail and guidance on possible areas soon, but this is meant to be very open ended. Even those not doing the project sequence will be required to submit proposals.
You are required to consult with the TAs and/or the professor about your ideas before the deadline of the project proposal. We hope that this is a helpful meeting during your brainstorming period where we can suggest ideas if you're stuck or give early feedback/pointers related to ideas you are considering.
If you're having trouble coming up with a good idea for a project, here are some possible places to start looking:
At the end of the course, those doing the project sequence will provide a 5-10 page detailed proposal including a literature review and timeline for the project that they will pursue during the spring term. Again groups of 2-4 are preferred. Those not doing the project sequence will instead be asked to design a new ``course module'', including 1-2 lectures and a few homework problems.
As you see, those not taking the project sequence will still be required to submit project proposals -- this is because I think this is an excellent exercise that forces you to think creatively about the material in the course. But, those not doing the project sequence will not do a complete project plan, and will instead design a new ``course module''.