Lab 5 (Part 1) - PageRank

Authors:

v1.0 (2014 Fall) Rishi Sharma *, Sahaana Suri *, Kangwook Lee **, Kannan Ramchandran **
v1.1 (2015 Fall) Kabir Chandrasekher *, Max Kanwal *, Kangwook Lee **, Kannan Ramchandran **

From Wikipedia:

PageRank is an algorithm used by Google Search to rank websites in their search engine results. PageRank was named after Larry Page, one of the founders of Google. PageRank is a way of measuring the importance of website pages. According to Google:

PageRank works by counting the number and quality of links to a page to determine a rough estimate of how important the website is. The underlying assumption is that more important websites are likely to receive more links from other websites.

There are four common frameworks by which academics view Google's PageRank algorithm. The first looks at the social impact, both positive and negative, of immediate access to previously unimaginable knowledge through one centralized terminal. The second, and most mathematical, sees PageRank as a computation of the Singular Value Decomposition (SVD) of the adjacency matrix of the graph formed by the internet, with particular emphasis paid to the first few singular vectors. The third, and most far-reaching, practical technical implication of Google's work is the implementation of algorithms and computation at enormous scale. Much of the computing infrastructure which operates at a global scale deployed today can trace its origins to Google's need to perform SVD on an object as enormous as the Internet. Finally, a more intuitive way to look at the PageRank algorithm is through the lens of a web crawler (or many web crawler) acting as an agent (or agents) in a Markov Chain the size of the web. We will investigate this viewpoint.

This crawler is searching for an approximate "invariant" distribution (why does a true invariant distribution almost certainly not exist?) and will rank pages based on their "probability" in this generated distribution. In order to do so, our crawler chooses to follow a link uniformly at random from the page it is on in order to arrive at a new page, keeping tally of how many times it has visited each page. If this crawler runs for a really, really long time, the fraction of time it has spent on each webpage will approximately be the probability of being on that page (assuming we account for pathologies in the Markov chain which we will discuss soon). We then rank pages in decreasing order of probability.

Alright, great! Let's do stuff. First, visit the following webpage, and see how many web pages can be reached by clicking the links on each page. http://www.eecs.berkeley.edu/~kw1jjang/ee126/1.html

There are total of $8$ pages, and they are connected as follows.

Since we choose a link at uniform from each page, the probability of going between pages $x$ and $y$ is $\Large \frac{\text{# of pages from x to y}}{\text{# of pages leaving x}}$

Thus the Markov chain generated by the web pages above is

and the transition matrix of the Markov chain is

$$ \left( \begin{array}{cccccccc} 0 & \frac{1}{5} & \frac{1}{5} & \frac{1}{5} & \frac{1}{5} & 0 & 0 & \frac{1}{5} \\ \frac{1}{2} & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} & 0 & 0 & 0 & 0 \\ \frac{1}{4} & 0 & \frac{1}{4} & 0 & 0 & 0 & \frac{1}{4} & \frac{1}{4} \\ \frac{1}{4} & \frac{1}{4} & 0 & 0 & \frac{1}{4} & \frac{1}{4} & 0 & 0 \\ \frac{1}{5} & \frac{1}{5} & \frac{1}{5} & \frac{1}{5} & 0 & 0 & \frac{1}{5} & 0 \end{array} \right) $$

$\mathcal{Q}$1. Find the steady-state (invariant/stationary) distribution $\pi$ of the Markov chain above. How do you know that it exists?

The Markov matrix is copied in code below. This might make your computation easier, but you can solve this in any way you wish. (Note: don't forget about the difference between right and left eigenvectors)

In [4]:
import numpy as np
from __future__ import division

P = np.matrix([[0, 1/5, 1/5, 1/5, 1/5, 0, 0, 1/5],
               [1/2, 0, 0, 0, 1/2, 0, 0, 0],
               [0, 1, 0, 0, 0, 0, 0, 0],
               [0, 0, 0, 0, 1, 0, 0, 0],
               [0, 1/3, 1/3, 1/3, 0, 0, 0, 0],
               [1/4,0,1/4,0,0,0,1/4,1/4],
               [1/4, 1/4, 0, 0, 1/4, 1/4, 0, 0],
               [1/5, 1/5, 1/5, 1/5, 0, 0, 1/5, 0]])

P_transpose = P.T

print P
[[ 0.          0.2         0.2         0.2         0.2         0.          0.
   0.2       ]
 [ 0.5         0.          0.          0.          0.5         0.          0.
   0.        ]
 [ 0.          1.          0.          0.          0.          0.          0.
   0.        ]
 [ 0.          0.          0.          0.          1.          0.          0.
   0.        ]
 [ 0.          0.33333333  0.33333333  0.33333333  0.          0.          0.
   0.        ]
 [ 0.25        0.          0.25        0.          0.          0.          0.25
   0.25      ]
 [ 0.25        0.25        0.          0.          0.25        0.25        0.
   0.        ]
 [ 0.2         0.2         0.2         0.2         0.          0.          0.2
   0.        ]]
In [ ]:
# Your code here

Simulation time!

We now want to empirically test what we solved above by modeling a random user hopping along those webpages. We will start the user at "1.html" and behave as per the Markov chain above. In the code below, we simulate this and keep track of the average amount of time a user spends in each state. We will expect that after enough iterations, the fraction of time spent in each state should approach the stationary distribution.

We use the parse_links() method to parse all hyperlinks in a page. We use the library Beautiful Soup in order to complete this portion of the lab in order to easiliy parse pages. Once you download the latest release, you must build and install setup.py. Alternatively, use pip or easy_install (help).

In [6]:
import re
import sys
import urllib
import urlparse
import random
from bs4 import BeautifulSoup

#http://wolfprojects.altervista.org/articles/change-urllib-user-agent/ 

class MyOpener(urllib.FancyURLopener):
   version = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15'

#This function will parse a url to give you the domain. Test it!
def domain(url):
    #urlparse breaks down the url passed it, and you split the hostname up 
    #Ex: hostname="www.google.com" becomes ['www', 'google', 'com']
    hostname = urlparse.urlparse(url).hostname.split(".")
    hostname = ".".join(len(hostname[-2]) < 4 and hostname[-3:] or hostname[-2:])
    return hostname
    
#This function will return all the urls on a page, and return the start url if there is an error or no urls
def parse_links(url, url_start):
    url_list = []
    myopener = MyOpener()
    try:
        #open, read, and parse the text using beautiful soup
        page = myopener.open(url)
        text = page.read()
        page.close()
        soup = BeautifulSoup(text, "lxml")

        #find all hyperlinks using beautiful soup
        for tag in soup.findAll('a', href=True):
            #concatenate the base url with the path from the hyperlink
            tmp = urlparse.urljoin(url, tag['href'])
            #we want to stay in the berkeley domain. This becomes more relevant later
            if domain(tmp).endswith('berkeley.edu'):
                url_list.append(tmp)
        if len(url_list) == 0:
            return [url_start]
        return url_list
    except:
        return [url_start]

$\mathcal{Q}$2. Simulating a Random Walk

In the following code block, use the above functions to surf the web pages described by the Markov chain above. This code block may take a while to run. If it is taking more than a couple of minutes, maybe try reducing num_of_visits in order to at least get results. Also, running your code while connected to AirBears may help if you have a slow internet connection at home.

In [ ]:
import random

#the url we want to begin with 
url_start = "http://www.eecs.berkeley.edu/~kw1jjang/ee126/1.html"
current_url = url_start

#parameter to set the number of transitions you make/different pages you visit
num_of_visits = 1000

#dictionary of pages visited so far
visit_history = {}

#initialize dictionary since we know exactly where we'll end up
for i in range(1, 9):
    page = "http://www.eecs.berkeley.edu/~kw1jjang/ee126/" + str(i) + ".html"
    visit_history[page] = 0

for i in range(num_of_visits):

    # Your code here

Print your results:

In [ ]:
for i in range(1, 9):
    page = "http://www.eecs.berkeley.edu/~kw1jjang/ee126/" + str(i) + ".html"
    print 'Fraction of time staying on page %d is %f' % (i, float(visit_history[page])/num_of_visits)

Does this approximately match the invariant distribution you expected?

Generalizing to the Web

The toy websites given above conveniently form an irreducible Markov chain (look up what this means if you do not remember from class), but most of the web will not look like this. There will be fringes of the internet containing only self-loops, or some web pages which do not link to others at all. In order to account for such pathologies in the web, we need to make a more intelligent surfer. The simplest idea would be to just jump back to the starting page if there are no links found on the page you are on, and to always return to a "good" starting point with probability $p$ on every page.

This is a very naive scheme, and there are many more intelligent methods by which you can sample from the distribution of the Internet, accounting for its pathologies and all.

Ranking Berkeley Professors

The following code is a (weak) attempt to rank the Berkeley faculty based on a crawler which begins on the EECS research homepage.

In [28]:
url_start = "http://www.eecs.berkeley.edu/Research/"
current_url = url_start
num_of_visits = 500

#List of professors obtained from the EECS page
profs = ['Abbeel','Agrawala','Alon','Anantharam','Arcak','Arias','Asanović','Bachrach','Bajcsy','Bodik','Bokor','Boser','Brewer','Canny','Chang-Hasnain','Culler','Darrell','Demmel','Fearing','Fox','Franklin','Garcia','Goldberg','Hartmann','Harvey','Hellerstein','Javey','Joseph','Katz','Keutzer','Liu','Klein','Kubiatowicz','Lee','Lustig','Maharbiz','Malik','Nguyen','Niknejad','Nikolic',"O'Brien",'Parekh','Patterson','Paxson','Pisano','Rabaey','Ramchandran','Roychowdhury','Russell','Sahai','Salahuddin','Sanders','Sangiovanni-Vincentelli','Sastry','Sen','Seshia','Shenker','Song','Song','Spanos','Stoica','Stojanovic','Tomlin','Tygar','Walrand','Wawrzynek','Wu','Yablonovitch','Yelick','Zakhor']
#Bad URLs help take care of some pathologies that ruin our surfing
bad_urls = ['http://www.erso.berkeley.edu/','http://www.eecs.berkeley.edu/Rosters/roster.name.nostudentee.html','http://www.eecs.berkeley.edu/Resguide/admin.shtml#aliases','http://www.eecs.berkeley.edu/department/EECSbrochure/c1-s3.html']

#Creating a dictionary to keep track of how often we come across a professor
profdict = {}
for i in profs:
    profdict[i] = 0

for i in range(num_of_visits):
    print  i , ' Visiting... ', current_url
    if random.random() < 0.95: #follow a link!
        url_list = parse_links(current_url, url_start)
        updated = False
        while not updated:
            current_url = random.choice(url_list)
            updated = True
            if current_url in bad_urls or "iris" in current_url or "Deptonly" in current_url or "anchor" in current_url or "erso" in current_url: #dealing with more pathologies:
                updated = False
        myopener = MyOpener()
        page = myopener.open(current_url)
        text = page.read()
        page.close()
        #Figuring out which professor is mentioned on a page.
        for p in profs:
            profdict[p]+= 1 if " " + p + " " in text else 0 #can use regex re.findall(i,text), but it's overkill
    else: #click the "home" button!
        current_url = url_start
0  Visiting...  http://www.eecs.berkeley.edu/Research/
1  Visiting...  http://www.eecs.berkeley.edu/Research/
2  Visiting...  http://www.eecs.berkeley.edu/XRG/entrepreneur.html
3  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml
4  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
5  Visiting...  http://www.eecs.berkeley.edu/education/
6  Visiting...  http://www.eecs.berkeley.edu/education/
7  Visiting...  http://www.eecs.berkeley.edu/Research/
8  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
9  Visiting...  http://www.eecs.berkeley.edu/Gradadm/
10  Visiting...  http://www.eecs.berkeley.edu/Research/
11  Visiting...  http://www.eecs.berkeley.edu/cal/
12  Visiting...  http://events.berkeley.edu/index.php/calendar/sn/eecs.html?view=quick&timeframe=month&filter=Secondary%20Event%20Type&filtersel=32
13  Visiting...  http://www.eecs.berkeley.edu/Research/
14  Visiting...  http://www.eecs.berkeley.edu/department/Impact.shtml
15  Visiting...  http://www.eecs.berkeley.edu
16  Visiting...  http://www.eecs.berkeley.edu/XRG/conferences.shtml
17  Visiting...  http://www.eecs.berkeley.edu/BEARS/2008
18  Visiting...  http://www.eecs.berkeley.edu/Accommodations
19  Visiting...  http://www.eecs.berkeley.edu/Research/
20  Visiting...  http://www.eecs.berkeley.edu/
21  Visiting...  http://www.eecs.berkeley.edu/department/OutreachPrograms.shtml
22  Visiting...  http://www.eecs.berkeley.edu/Research/
23  Visiting...  http://www.eecs.berkeley.edu/department/staff.shtml
24  Visiting...  http://www.eecs.berkeley.edu/education/degrees.shtml
25  Visiting...  http://www.eecs.berkeley.edu/education/degrees.shtml#cse
26  Visiting...  http://www.eecs.berkeley.edu/education/
27  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
28  Visiting...  http://www.eecs.berkeley.edu/education/
29  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
30  Visiting...  http://www.eecs.berkeley.edu/education/
31  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
32  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#directory
33  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#av1
34  Visiting...  http://caltime.berkeley.edu/
35  Visiting...  http://www.eecs.berkeley.edu/Research/
36  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/
37  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/EDUC/
38  Visiting...  http://www.eecs.berkeley.edu/Research/
39  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
40  Visiting...  http://www.eecs.berkeley.edu/Students/
41  Visiting...  http://www.eecs.berkeley.edu/XRG/IAB/
42  Visiting...  http://www.eecs.berkeley.edu/
43  Visiting...  http://www.eecs.berkeley.edu/Includes/copyright.shtml
44  Visiting...  http://www.eecs.berkeley.edu/cal/
45  Visiting...  http://www.berkeley.edu
46  Visiting...  http://www.berkeley.edu
47  Visiting...  http://www.berkeley.edu/utility/jobs
48  Visiting...  http://www.berkeley.edu/research
49  Visiting...  http://www.berkeley.edu/about/history-discoveries
50  Visiting...  http://www.berkeley.edu/about/history-discoveries
51  Visiting...  http://www.berkeley.edu/about/history-discoveries
52  Visiting...  http://www.berkeley.edu/about/experience-berkeley
53  Visiting...  http://www.berkeley.edu/about/experience-berkeley
54  Visiting...  http://bulletin.berkeley.edu
55  Visiting...  http://bulletin.berkeley.edu/tuition-fees-financial-aid/
56  Visiting...  http://www.eecs.berkeley.edu/Research/
57  Visiting...  http://www.eecs.berkeley.edu/XRG/eecsgifts.shtml
58  Visiting...  http://www.eecs.berkeley.edu/
59  Visiting...  http://www.eecs.berkeley.edu/XRG/recruitment.shtml
60  Visiting...  http://www.eecs.berkeley.edu/Research/
61  Visiting...  http://www.eecs.berkeley.edu/Pubs/
62  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
63  Visiting...  http://www.berkeley.edu
64  Visiting...  http://www.eecs.berkeley.edu/Research/
65  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/Centers/
66  Visiting...  http://www.eecs.berkeley.edu/Research/
67  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
68  Visiting...  http://www.eecs.berkeley.edu/education/usli/
69  Visiting...  http://www.eecs.berkeley.edu/XRG/recruitment.shtml
70  Visiting...  http://www.eecs.berkeley.edu/Research/
71  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
72  Visiting...  http://www.eecs.berkeley.edu/education/
73  Visiting...  http://www.eecs.berkeley.edu/Students/directories.shtml
74  Visiting...  http://www.eecs.berkeley.edu/Students/
75  Visiting...  http://www.eecs.berkeley.edu/Includes/privacy.shtml
76  Visiting...  http://www.eecs.berkeley.edu/Gradadm/
77  Visiting...  http://www.eecs.berkeley.edu/XRG/eecsgifts.shtml
78  Visiting...  http://www.eecs.berkeley.edu/education/
79  Visiting...  http://www.eecs.berkeley.edu/department/staff.shtml
80  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
81  Visiting...  http://www.eecs.berkeley.edu/education/usli/
82  Visiting...  http://www.eecs.berkeley.edu/XRG/entrepreneur.html
83  Visiting...  http://www.eecs.berkeley.edu/Pubs/
84  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
85  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
86  Visiting...  http://www.eecs.berkeley.edu/department/
87  Visiting...  http://www.eecs.berkeley.edu/Directions/
88  Visiting...  http://www.eecs.berkeley.edu/Includes/copyright.shtml
89  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
90  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/Centers/
91  Visiting...  http://www.eecs.berkeley.edu/Research/
92  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
93  Visiting...  http://www.eecs.berkeley.edu/Research/
94  Visiting...  http://www.eecs.berkeley.edu/help
95  Visiting...  http://www.eecs.berkeley.edu/Research/
96  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
97  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
98  Visiting...  http://www.eecs.berkeley.edu/deptinfo/login.html?returnto=http://www.eecs.berkeley.edu:80/department/people.shtml
99  Visiting...  http://www.eecs.berkeley.edu/Research/
100  Visiting...  http://www.eecs.berkeley.edu/deptinfo
101  Visiting...  http://www.eecs.berkeley.edu/Research/
102  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
103  Visiting...  http://www.eecs.berkeley.edu/department/emergency/sodaill.shtml
104  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
105  Visiting...  http://www.eecs.berkeley.edu/Research/
106  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/#nae
107  Visiting...  http://www.eecs.berkeley.edu/Pubs/
108  Visiting...  http://www.eecs.berkeley.edu/Research/
109  Visiting...  http://www.eecs.berkeley.edu/news/
110  Visiting...  http://www.eecs.berkeley.edu/Research/
111  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
112  Visiting...  http://www.eecs.berkeley.edu/XRG/IAB/
113  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
114  Visiting...  http://www.eecs.berkeley.edu/department/OutreachPrograms.shtml
115  Visiting...  http://www.eecs.berkeley.edu/Research/
116  Visiting...  http://www.eecs.berkeley.edu/education/degrees.shtml
117  Visiting...  http://coe.berkeley.edu/students/current-undergraduates/majors-minors/simultaneous-degrees.html/
118  Visiting...  http://www.eecs.berkeley.edu/Research/
119  Visiting...  http://www.eecs.berkeley.edu/Research/
120  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
121  Visiting...  http://www.eecs.berkeley.edu/department/
122  Visiting...  http://www.eecs.berkeley.edu/Research/
123  Visiting...  http://www.eecs.berkeley.edu/deptinfo
124  Visiting...  http://www.eecs.berkeley.edu/Research/
125  Visiting...  http://www.eecs.berkeley.edu/Pubs/
126  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
127  Visiting...  http://www.eecs.berkeley.edu/Scheduling/EE/schedule-next.html
128  Visiting...  http://www.eecs.berkeley.edu/Courses/Data/79.html
129  Visiting...  http://www.eecs.berkeley.edu/Gradadm/
130  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
131  Visiting...  http://www.eecs.berkeley.edu/Gradadm/
132  Visiting...  http://www.eecs.berkeley.edu/help
133  Visiting...  http://www.eecs.berkeley.edu/Research/
134  Visiting...  http://www.eecs.berkeley.edu/XRG/recruitment.shtml
135  Visiting...  http://www.eecs.berkeley.edu/Research/
136  Visiting...  http://www.eecs.berkeley.edu/Colloquium/
137  Visiting...  http://www.eecs.berkeley.edu/Colloquium/Archives/10-11/Fall2010/index.shtml
138  Visiting...  http://www.eecs.berkeley.edu/Directions/
139  Visiting...  http://www.eecs.berkeley.edu/Resguide/stud.shtml
140  Visiting...  http://www.eecs.berkeley.edu/Programs/Notes/section6.shtml#6.2
141  Visiting...  http://www.eecs.berkeley.edu/Programs/Notes/index.shtml
142  Visiting...  http://www.eecs.berkeley.edu/Research/
143  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
144  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
145  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#top
146  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#events
147  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#parking
148  Visiting...  http://www.eecs.berkeley.edu/department/emergency/coryill.shtml
149  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
150  Visiting...  http://www.eecs.berkeley.edu/Scheduling/EE/schedule.html
151  Visiting...  http://www.eecs.berkeley.edu/Courses/Data/928.html
152  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
153  Visiting...  http://www.eecs.berkeley.edu/Includes/copyright.shtml
154  Visiting...  http://www.eecs.berkeley.edu/cal/
155  Visiting...  http://www.eecs.berkeley.edu/alumni/lists.shtml
156  Visiting...  http://www.eecs.berkeley.edu/cal/
157  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
158  Visiting...  http://www.cs.berkeley.edu/Scheduling/faq.shtml
159  Visiting...  http://www.cs.berkeley.edu/Research/
160  Visiting...  http://www.cs.berkeley.edu/department/
161  Visiting...  http://www.cs.berkeley.edu/Visiting/Scholars/menu.shtml
162  Visiting...  http://www.cs.berkeley.edu/education/degrees.shtml
163  Visiting...  http://www.cs.berkeley.edu/education/
164  Visiting...  http://www.cs.berkeley.edu/Research/
165  Visiting...  http://www.cs.berkeley.edu/cal/
166  Visiting...  http://www.eecs.berkeley.edu/Research/
167  Visiting...  http://www.eecs.berkeley.edu/help
168  Visiting...  http://www.eecs.berkeley.edu/Research/
169  Visiting...  http://www.eecs.berkeley.edu/Research/
170  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
171  Visiting...  http://www.eecs.berkeley.edu/education/usli/
172  Visiting...  http://www.eecs.berkeley.edu/Research/
173  Visiting...  http://www.eecs.berkeley.edu/bears/
174  Visiting...  http://crest.berkeley.edu/
175  Visiting...  http://crest.berkeley.edu/carbonroadmap.html
176  Visiting...  http://crest.berkeley.edu/bears.html
177  Visiting...  http://crest.berkeley.edu/mission.html
178  Visiting...  http://sinberise.berkeley.edu/
179  Visiting...  http://sinberise.berkeley.edu/
180  Visiting...  http://sinberise.berkeley.edu/
181  Visiting...  http://sinberise.berkeley.edu/
182  Visiting...  http://sinberise.berkeley.edu/
183  Visiting...  http://sinberise.berkeley.edu/
184  Visiting...  http://sinberise.berkeley.edu/
185  Visiting...  http://sinberise.berkeley.edu/
186  Visiting...  http://sinberise.berkeley.edu/
187  Visiting...  http://sinberise.berkeley.edu/
188  Visiting...  http://sinberise.berkeley.edu/
189  Visiting...  http://sinberise.berkeley.edu/
190  Visiting...  http://sinberise.berkeley.edu/
191  Visiting...  http://sinberise.berkeley.edu/
192  Visiting...  http://sinberise.berkeley.edu/
193  Visiting...  http://sinberise.berkeley.edu/
194  Visiting...  http://sinberise.berkeley.edu/
195  Visiting...  http://sinberise.berkeley.edu/
196  Visiting...  http://sinberise.berkeley.edu/
197  Visiting...  http://sinberise.berkeley.edu/
198  Visiting...  http://sinberise.berkeley.edu/
199  Visiting...  http://sinberise.berkeley.edu/
200  Visiting...  http://www.eecs.berkeley.edu/Research/
201  Visiting...  http://www.berkeley.edu
202  Visiting...  http://www.berkeley.edu/students
203  Visiting...  http://studentcentral.berkeley.edu/
204  Visiting...  http://studentcentral.berkeley.edu/about
205  Visiting...  http://studentcentral.berkeley.edu/faqs
206  Visiting...  http://www.eecs.berkeley.edu/Research/
207  Visiting...  http://www.eecs.berkeley.edu/education/usli/
208  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
209  Visiting...  http://www.eecs.berkeley.edu/Research/
210  Visiting...  http://www.eecs.berkeley.edu/Facilities/
211  Visiting...  https://buffy.eecs.berkeley.edu/PHP/bldgreq/startup.php?dept=eecs
212  Visiting...  http://www.eecs.berkeley.edu/Research/
213  Visiting...  http://www.eecs.berkeley.edu
214  Visiting...  http://www.eecs.berkeley.edu/cal/
215  Visiting...  http://www.eecs.berkeley.edu/department/statistics.shtml
216  Visiting...  http://www.eecs.berkeley.edu/education/degrees.shtml
217  Visiting...  http://www.eecs.berkeley.edu/Prospective/ugrad.shtml
218  Visiting...  http://www.eecs.berkeley.edu/Research/
219  Visiting...  http://www.eecs.berkeley.edu/XRG/eecsgifts.shtml
220  Visiting...  http://www.eecs.berkeley.edu/education/
221  Visiting...  http://www.eecs.berkeley.edu/Research/
222  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
223  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
224  Visiting...  http://www.eecs.berkeley.edu/deptinfo/login.html?returnto=http://www.eecs.berkeley.edu:80/department/internal.shtml
225  Visiting...  http://www.eecs.berkeley.edu/Research/
226  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/
227  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/siam.shtml
228  Visiting...  http://www.eecs.berkeley.edu/deptinfo
229  Visiting...  http://www.eecs.berkeley.edu/Research/
230  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml
231  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml#top
232  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml#course.reports
233  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml#top
234  Visiting...  http://www.eecs.berkeley.edu/Resguide/acad.shtml#forms
235  Visiting...  http://www.eecs.berkeley.edu/Scheduling/CS/
236  Visiting...  http://bulletin.berkeley.edu/courses/compsci/
237  Visiting...  http://bulletin.berkeley.edu/search/?P=COMPSCI 199
238  Visiting...  http://bulletin.berkeley.edu/student-life/
239  Visiting...  http://students.berkeley.edu/finaid/
240  Visiting...  http://students.berkeley.edu/prospective-students
241  Visiting...  http://www.eecs.berkeley.edu/Research/
242  Visiting...  http://www.eecs.berkeley.edu/bears/
243  Visiting...  http://www.eecs.berkeley.edu/BEARS/2015/program.pdf
244  Visiting...  http://www.eecs.berkeley.edu/Research/
245  Visiting...  http://www.berkeley.edu
246  Visiting...  http://www.berkeley.edu/research
247  Visiting...  http://www.berkeley.edu/research
248  Visiting...  http://financialaid.berkeley.edu/
249  Visiting...  http://financialaid.berkeley.edu/estimate-your-financial-aid
250  Visiting...  http://financialaid.berkeley.edu/understanding-your-commitment
251  Visiting...  http://financialaid.berkeley.edu/berkeley-undergraduate-scholarship
252  Visiting...  http://financialaid.berkeley.edu/frequently-asked-questions
253  Visiting...  http://financialaid.berkeley.edu/prizes-and-honors-nicola-de-lorenzo-prize-music-composition
254  Visiting...  http://financialaid.berkeley.edu/innovative-berkeley-aid-programs
255  Visiting...  http://financialaid.berkeley.edu/financial-aid-glance
256  Visiting...  http://financialaid.berkeley.edu/graduate-award-guide
257  Visiting...  http://financialaid.berkeley.edu/prizes-and-honors-university-medal
258  Visiting...  http://www.eecs.berkeley.edu/Research/
259  Visiting...  http://www.eecs.berkeley.edu/Resguide/stud.shtml
260  Visiting...  http://www.eecs.berkeley.edu/education/
261  Visiting...  http://www.eecs.berkeley.edu/Gradadm/
262  Visiting...  http://www.eecs.berkeley.edu/MEng/
263  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
264  Visiting...  http://www.eecs.berkeley.edu/Students/directories.shtml
265  Visiting...  http://www.eecs.berkeley.edu/Visiting/Scholars/menu.shtml
266  Visiting...  http://www.eecs.berkeley.edu/education/
267  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
268  Visiting...  http://www.eecs.berkeley.edu/Scheduling/CS/schedule.html
269  Visiting...  http://www.eecs.berkeley.edu/Courses/Data/335.html
270  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
271  Visiting...  http://www.eecs.berkeley.edu/department/statistics.shtml
272  Visiting...  http://www.eecs.berkeley.edu/Research/
273  Visiting...  http://www.eecs.berkeley.edu/department/staffinfo.shtml
274  Visiting...  http://www.eecs.berkeley.edu/Colloquium/
275  Visiting...  http://www.eecs.berkeley.edu/education/
276  Visiting...  http://www.eecs.berkeley.edu/Research/
277  Visiting...  http://www.eecs.berkeley.edu/cal/
278  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
279  Visiting...  http://www.eecs.berkeley.edu/Students/
280  Visiting...  http://www.eecs.berkeley.edu/cal/
281  Visiting...  http://www.eecs.berkeley.edu/Diversity/
282  Visiting...  http://www.eecs.berkeley.edu/Research/
283  Visiting...  http://www.eecs.berkeley.edu/department/statistics.shtml
284  Visiting...  http://www.eecs.berkeley.edu/Includes/privacy.shtml
285  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
286  Visiting...  http://netshow01.eecs.berkeley.edu/zadeh2010.wmv
287  Visiting...  http://www.eecs.berkeley.edu/Research/
288  Visiting...  http://www.eecs.berkeley.edu/help
289  Visiting...  http://www.eecs.berkeley.edu/Research/
290  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
291  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
292  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#timesheets
293  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
294  Visiting...  http://www.eecs.berkeley.edu/department/staff.shtml
295  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
296  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
297  Visiting...  http://www.eecs.berkeley.edu/
298  Visiting...  http://www.eecs.berkeley.edu/Faculty/Homepages/chang-hasnain.html
299  Visiting...  http://www.eecs.berkeley.edu/XRG/conferences.shtml
300  Visiting...  http://www-bisc.cs.berkeley.edu/BISCSE2005/
301  Visiting...  http://www-bisc.cs.berkeley.edu/XRG/menu.shtml
302  Visiting...  http://www-bisc.cs.berkeley.edu/Directions/
303  Visiting...  http://www-bisc.cs.berkeley.edu/department/about.shtml
304  Visiting...  http://www-bisc.cs.berkeley.edu/Directions/
305  Visiting...  http://www-bisc.cs.berkeley.edu/Research/
306  Visiting...  http://www-bisc.cs.berkeley.edu/department/staff.shtml
307  Visiting...  http://www-bisc.cs.berkeley.edu/department/OutreachPrograms.shtml
308  Visiting...  http://www-bisc.cs.berkeley.edu/Research/
309  Visiting...  http://www-bisc.cs.berkeley.edu/Pubs/
310  Visiting...  http://www-bisc.cs.berkeley.edu/department/internal.shtml
311  Visiting...  http://www-bisc.cs.berkeley.edu/XRG/
312  Visiting...  http://events.berkeley.edu/index.php/calendar/sn/eecs.html?view=quick&timeframe=month&filter=Secondary%20Event%20Type&filtersel=32
313  Visiting...  http://www.eecs.berkeley.edu/Research/
314  Visiting...  http://www.eecs.berkeley.edu/Research/Projects/
315  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/
316  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
317  Visiting...  http://netshow01.eecs.berkeley.edu/zadeh2010.wmv
318  Visiting...  http://www.eecs.berkeley.edu/Research/
319  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/
320  Visiting...  http://www.eecs.berkeley.edu/Research/
321  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/#nms
322  Visiting...  http://www.eecs.berkeley.edu/Research/
323  Visiting...  http://www.eecs.berkeley.edu/department/officers.shtml
324  Visiting...  http://www.eecs.berkeley.edu/Research/
325  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
326  Visiting...  http://www.eecs.berkeley.edu/department/administration.shtml
327  Visiting...  http://www.eecs.berkeley.edu/Research/
328  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
329  Visiting...  http://www.eecs.berkeley.edu/Research/
330  Visiting...  http://www.eecs.berkeley.edu/cal/
331  Visiting...  http://events.berkeley.edu/index.php/calendar/sn/eecs.html?view=quick&timeframe=month&filter=Secondary%20Event%20Type&filtersel=32
332  Visiting...  http://www.eecs.berkeley.edu/Research/
333  Visiting...  http://www.eecs.berkeley.edu/cal/
334  Visiting...  http://www.eecs.berkeley.edu/Diversity/
335  Visiting...  http://www.eecs.berkeley.edu/Research/
336  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/Centers/
337  Visiting...  http://www.eecs.berkeley.edu/Research/
338  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
339  Visiting...  http://www.eecs.berkeley.edu/department/officers.shtml
340  Visiting...  http://www.eecs.berkeley.edu/Research/
341  Visiting...  http://www.eecs.berkeley.edu/Facilities/
342  Visiting...  http://www.eecs.berkeley.edu/Resguide/roomsched.shtml
343  Visiting...  http://www.eecs.berkeley.edu/department/statistics.shtml
344  Visiting...  http://guide.berkeley.edu/search/?P=compsci+61a
345  Visiting...  http://guide.berkeley.edu/tuition-fees-financial-aid/
346  Visiting...  http://www.eecs.berkeley.edu/Research/
347  Visiting...  http://www.eecs.berkeley.edu/cal/
348  Visiting...  http://www.berkeley.edu
349  Visiting...  http://www.berkeley.edu/atoz/dept
350  Visiting...  http://financialaid.berkeley.edu/
351  Visiting...  http://financialaid.berkeley.edu/private-alternative-loan
352  Visiting...  http://financialaid.berkeley.edu/loans
353  Visiting...  http://financialaid.berkeley.edu/grants
354  Visiting...  http://financialaid.berkeley.edu/cost-attendance-2014-15
355  Visiting...  http://financialaid.berkeley.edu/money-matters-101
356  Visiting...  http://www.eecs.berkeley.edu/Research/
357  Visiting...  http://www.eecs.berkeley.edu/education/
358  Visiting...  http://www.eecs.berkeley.edu/education/usli/
359  Visiting...  http://www.eecs.berkeley.edu/Resguide/stud.shtml
360  Visiting...  http://www.eecs.berkeley.edu/Students/Handbook/section3.shtml#3.2.4
361  Visiting...  http://www.eecs.berkeley.edu/Students/Handbook/section3.shtml#3.3.5
362  Visiting...  http://career.berkeley.edu/
363  Visiting...  http://career.berkeley.edu/Tools/Tools
364  Visiting...  http://career.berkeley.edu/Tools/JobSearchExercise
365  Visiting...  http://career.berkeley.edu/StaffFaculty/StaffFaculty
366  Visiting...  http://career.berkeley.edu/Info/MakeAppt
367  Visiting...  http://www.eecs.berkeley.edu/Research/
368  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/
369  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
370  Visiting...  http://www.eecs.berkeley.edu/Visiting/Scholars/menu.shtml
371  Visiting...  http://www.berkeley.edu
372  Visiting...  http://newsroom.haas.berkeley.edu/article/patrick-awuah-mba-99-and-founder-ghana%E2%80%99s-aseshi-university-wins-macarthur-genius-grant
373  Visiting...  http://www.eecs.berkeley.edu/Research/
374  Visiting...  http://www.eecs.berkeley.edu/Visiting/Scholars/menu.shtml
375  Visiting...  http://www.eecs.berkeley.edu/Faculty/Lists/
376  Visiting...  http://events.berkeley.edu/index.php/calendar/sn/eecs.html?view=quick&timeframe=month&filter=Secondary%20Event%20Type&filtersel=32
377  Visiting...  http://www.eecs.berkeley.edu/Research/
378  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
379  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
380  Visiting...  http://www.eecs.berkeley.edu/cal/
381  Visiting...  http://www.eecs.berkeley.edu/education/usli/
382  Visiting...  http://www.eecs.berkeley.edu/Includes/copyright.shtml
383  Visiting...  http://www.eecs.berkeley.edu/Facilities/
384  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
385  Visiting...  http://www.eecs.berkeley.edu/Pubs/
386  Visiting...  http://www.eecs.berkeley.edu/Resguide/stud.shtml
387  Visiting...  http://www.eecs.berkeley.edu/education/showcase/
388  Visiting...  http://www.eecs.berkeley.edu/Faculty/Homepages/wolisz.html
389  Visiting...  http://www.berkeley.edu
390  Visiting...  http://www.berkeley.edu
391  Visiting...  http://www.berkeley.edu/about/visit
392  Visiting...  http://www.berkeley.edu/about/visit
393  Visiting...  http://www.berkeley.edu/research/museumscollections
394  Visiting...  http://grad.berkeley.edu/
395  Visiting...  http://grad.berkeley.edu/events/category/professional-development/month/
396  Visiting...  http://grad.berkeley.edu/event/the-hacker-within-pandas/
397  Visiting...  http://gradlectures.berkeley.edu
398  Visiting...  http://www.eecs.berkeley.edu/Research/
399  Visiting...  http://www.eecs.berkeley.edu/XRG/conferences.shtml
400  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
401  Visiting...  http://www.eecs.berkeley.edu/Research/
402  Visiting...  http://www.eecs.berkeley.edu/Visiting/Scholars/menu.shtml
403  Visiting...  http://www.eecs.berkeley.edu/Pubs/
404  Visiting...  http://www.eecs.berkeley.edu/XRG/
405  Visiting...  http://www.eecs.berkeley.edu/Research/
406  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/#nms
407  Visiting...  http://www.eecs.berkeley.edu/deptinfo/login.html?returnto=http://www.eecs.berkeley.edu:80/Faculty/Awards/#nms
408  Visiting...  http://www.eecs.berkeley.edu/Research/
409  Visiting...  http://www.eecs.berkeley.edu/department/Impact.shtml
410  Visiting...  http://www.eecs.berkeley.edu/department/officers.shtml
411  Visiting...  http://www.eecs.berkeley.edu/Research/
412  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
413  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
414  Visiting...  http://www.eecs.berkeley.edu/Colloquium/
415  Visiting...  http://www.eecs.berkeley.edu/Colloquium/Archives/05-06/Fall2005/
416  Visiting...  http://www.eecs.berkeley.edu/XRG/
417  Visiting...  http://www.eecs.berkeley.edu/Research/
418  Visiting...  http://www.eecs.berkeley.edu/department/OutreachPrograms.shtml
419  Visiting...  http://www.eecs.berkeley.edu/Research/
420  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
421  Visiting...  http://www.eecs.berkeley.edu/XRG/IAB/
422  Visiting...  http://www.eecs.berkeley.edu/Prospective/ugrad.shtml
423  Visiting...  http://www.eecs.berkeley.edu/Research/
424  Visiting...  http://www.eecs.berkeley.edu/department/officers.shtml
425  Visiting...  http://www.eecs.berkeley.edu/Research/
426  Visiting...  http://www.eecs.berkeley.edu/Prospective/ugrad.shtml
427  Visiting...  http://www.eecs.berkeley.edu/Research/
428  Visiting...  http://www.eecs.berkeley.edu/Pubs/
429  Visiting...  http://www.eecs.berkeley.edu/cal/
430  Visiting...  http://www.eecs.berkeley.edu/
431  Visiting...  http://www.eecs.berkeley.edu/Research/Projects/
432  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml
433  Visiting...  http://www.eecs.berkeley.edu/Resguide/admin.shtml#top
434  Visiting...  http://www.eecs.berkeley.edu/Staff/Procedures/account.shtml
435  Visiting...  https://calnet.calnet.berkeley.edu/myi/questions/set
436  Visiting...  http://www.eecs.berkeley.edu/Research/
437  Visiting...  http://www.eecs.berkeley.edu
438  Visiting...  http://www.eecs.berkeley.edu/deptinfo
439  Visiting...  http://www.eecs.berkeley.edu/Research/
440  Visiting...  http://www.eecs.berkeley.edu/Research/
441  Visiting...  http://www.eecs.berkeley.edu/Research/Projects/
442  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
443  Visiting...  http://www.eecs.berkeley.edu/Faculty/Lists/faculty.shtml
444  Visiting...  http://www.eecs.berkeley.edu/Research/
445  Visiting...  http://events.berkeley.edu/index.php/calendar/sn/eecs.html?view=quick&timeframe=month&filter=Secondary%20Event%20Type&filtersel=32
446  Visiting...  http://www.eecs.berkeley.edu/Research/
447  Visiting...  http://www.eecs.berkeley.edu/deptinfo/login.html?returnto=http://www.eecs.berkeley.edu:80/Research/
448  Visiting...  http://www.eecs.berkeley.edu/Research/
449  Visiting...  http://www.eecs.berkeley.edu/education/
450  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
451  Visiting...  http://www.eecs.berkeley.edu/Research/
452  Visiting...  http://www.berkeley.edu
453  Visiting...  http://www.berkeley.edu/research/museumscollections
454  Visiting...  http://essig.berkeley.edu/
455  Visiting...  http://bnhm.berkeley.edu/
456  Visiting...  http://www.eecs.berkeley.edu/Research/
457  Visiting...  http://www.eecs.berkeley.edu/Students/
458  Visiting...  http://www.eecs.berkeley.edu/deptinfo/login.html?returnto=http://www.eecs.berkeley.edu:80/Students/
459  Visiting...  http://www.eecs.berkeley.edu/Research/
460  Visiting...  http://www.eecs.berkeley.edu/Research/Projects/
461  Visiting...  http://www.eecs.berkeley.edu/Research/
462  Visiting...  http://www.eecs.berkeley.edu/Research/
463  Visiting...  http://www.eecs.berkeley.edu/department/OutreachPrograms.shtml
464  Visiting...  http://www.eecs.berkeley.edu/Research/
465  Visiting...  http://www.eecs.berkeley.edu/XRG/menu.shtml
466  Visiting...  http://www.eecs.berkeley.edu/Research/
467  Visiting...  http://www.eecs.berkeley.edu/department/people.shtml
468  Visiting...  http://www.eecs.berkeley.edu/Research/Areas/
469  Visiting...  http://www.eecs.berkeley.edu/department/officers.shtml
470  Visiting...  http://www.eecs.berkeley.edu/Research/
471  Visiting...  http://www.berkeley.edu
472  Visiting...  http://news.berkeley.edu/
473  Visiting...  http://www.eecs.berkeley.edu/Research/
474  Visiting...  http://www.eecs.berkeley.edu/Diversity/
475  Visiting...  http://www.eecs.berkeley.edu/Research/
476  Visiting...  http://www.eecs.berkeley.edu/cal/
477  Visiting...  http://www.eecs.berkeley.edu/department/internal.shtml
478  Visiting...  http://www.eecs.berkeley.edu/department/about.shtml
479  Visiting...  http://www.eecs.berkeley.edu/Research/
480  Visiting...  http://www.eecs.berkeley.edu/Faculty/Awards/#turing
481  Visiting...  http://www.eecs.berkeley.edu/education/
482  Visiting...  http://www.eecs.berkeley.edu/department/history.shtml
483  Visiting...  http://www.eecs.berkeley.edu/education/courses.shtml
484  Visiting...  http://www.eecs.berkeley.edu/Scheduling/EE/schedule-draft.html
485  Visiting...  http://www.eecs.berkeley.edu/Faculty/Homepages/ctnguyen.html
486  Visiting...  http://www.eecs.berkeley.edu/
487  Visiting...  http://www.eecs.berkeley.edu/Faculty/Homepages/salahuddin.html
488  Visiting...  http://www.eecs.berkeley.edu/Research/
489  Visiting...  http://www.eecs.berkeley.edu/help
490  Visiting...  http://www.eecs.berkeley.edu/Research/
491  Visiting...  http://www.eecs.berkeley.edu/alumni/lists.shtml
492  Visiting...  http://www.eecs.berkeley.edu/Includes/privacy.shtml
493  Visiting...  http://www.eecs.berkeley.edu/alumni/lists.shtml
494  Visiting...  http://www.eecs.berkeley.edu/help
495  Visiting...  http://www.eecs.berkeley.edu/Research/
496  Visiting...  http://www.eecs.berkeley.edu/Pubs/
497  Visiting...  http://www.eecs.berkeley.edu/alumni/lists.shtml
498  Visiting...  http://www.eecs.berkeley.edu/education/
499  Visiting...  http://www.eecs.berkeley.edu/Students/directories.shtml
In [29]:
prof_ranks = [pair[0] for pair in sorted(profdict.items(), key = lambda item: item[1], reverse=True)]
top_score = profdict[prof_ranks[0]]
for i in range(len(prof_ranks)):
    print "%d %f: %s" % (i+1,profdict[prof_ranks[i]]/top_score, prof_ranks[i])
1 1.000000: Chang-Hasnain
2 0.916667: Lee
3 0.583333: Russell
4 0.458333: Joseph
5 0.458333: Franklin
6 0.416667: Patterson
7 0.416667: Paxson
8 0.416667: Sen
9 0.375000: Wu
10 0.375000: Demmel
11 0.333333: Yablonovitch
12 0.291667: Harvey
13 0.291667: Bajcsy
14 0.291667: Brewer
15 0.291667: Bokor
16 0.291667: Hartmann
17 0.291667: Goldberg
18 0.291667: Pisano
19 0.250000: Katz
20 0.250000: Fearing
21 0.208333: Tomlin
22 0.125000: Yelick
23 0.125000: Arias
24 0.125000: Culler
25 0.083333: Liu
26 0.083333: Song
27 0.083333: Salahuddin
28 0.041667: Zakhor
29 0.041667: Sangiovanni-Vincentelli
30 0.041667: Anantharam
31 0.041667: Nguyen
32 0.041667: Rabaey
33 0.041667: Lustig
34 0.041667: Garcia
35 0.041667: Javey
36 0.041667: Darrell
37 0.041667: Tygar
38 0.000000: Boser
39 0.000000: Walrand
40 0.000000: Niknejad
41 0.000000: Fox
42 0.000000: Shenker
43 0.000000: Hellerstein
44 0.000000: Seshia
45 0.000000: Stojanovic
46 0.000000: Sanders
47 0.000000: Ramchandran
48 0.000000: Klein
49 0.000000: Roychowdhury
50 0.000000: Agrawala
51 0.000000: Canny
52 0.000000: Asanović
53 0.000000: Arcak
54 0.000000: O'Brien
55 0.000000: Nikolic
56 0.000000: Keutzer
57 0.000000: Kubiatowicz
58 0.000000: Sastry
59 0.000000: Sahai
60 0.000000: Alon
61 0.000000: Maharbiz
62 0.000000: Malik
63 0.000000: Wawrzynek
64 0.000000: Parekh
65 0.000000: Bachrach
66 0.000000: Abbeel
67 0.000000: Bodik
68 0.000000: Stoica
69 0.000000: Spanos
In [31]:
top_score
Out[31]:
24

As you can see, the top score only got 24 mentions, so not only is this method indirect in trying to achieve its goal, but it is quite difficult to efficiently sample the true distribution we want.

$\mathcal{Q}$3. Try your hand at applying the above idea to a website you personally visit (somewhat) frequently! Do a simple crawl (similar to the above) and see if you can figure out something interesting. (Keep it simple.)

In [ ]:
# Your code here