Homework 9 - crawling the web (12 points!)

In our last homework, we return to the application layer. You will write a simple web-crawling application, which may be used to inventory a website, and to check the validity of the various links in said site.

Given the following command on the command-line:

./hw9 http://www.thesite.com/thepath

your program will do the following:

  • for each "a href" link that leads to a document with the same path prefix, follow the link and repeat this process for that document.
  • for each "a href" and "img src" URL, visit the URL. If the URL returns an error code (400 or 500 range), report this error
  • also report the following statistics:
    • documents visited
    • links checked (including visited documents)
    • broken links found
take care to make your program work on relative as well as absolute links, and to properly ignore any non-http links. The following is an example output. Try to replicate this output as closely as possible with your program:

./hw9 http://amita.cs.uic.edu/
Visited pages: 5                                                                     
URLs checked: 14
Broken URLs (1):
http://amita.cs.uic.edu/www.openwrt.org linked from:
  http://amita.cs.uic.edu/
  http://amita.cs.uic.edu/index.html

./hw9 http://www.cs.uic.edu/Jakob/
Visited pages: 2                                                                                            
URLs checked: 80
Broken URLs (1):
http://www.google.com/images?q=stockholm linked from:
  http://www.cs.uic.edu/Jakob/

./hw9 http://www.cs.uic.edu/~llyons/
Visited pages: 9                                                                                                   
URLs checked: 32
Broken URLs (2):
http://www.cs.uic.edu/~i422 linked from:
  http://www.cs.uic.edu/~llyons/courses.html
http://www.cs.uic.edu/~llyons/www.mcmaster.com linked from:
  http://www.cs.uic.edu/~llyons/skills.html

 ./hw9  http://rites.uic.edu
Visited pages: 15                                                                                           
URLs checked: 76
Broken URLs (4):
http://www.ssn.uillinois.edu/html/ssn_forms_docs.html linked from:
  http://rites.uic.edu/iaPolicies.html
http://www.uic.edu/depts/las linked from:
  http://rites.uic.edu
  http://rites.uic.edu/courses.html
  http://rites.uic.edu/faculty.html
  http://rites.uic.edu/graduates.html
  http://rites.uic.edu/index.html
  http://rites.uic.edu/industry.html
  http://rites.uic.edu/labs.html
  http://rites.uic.edu/misc.html
  http://rites.uic.edu/projects.html
  http://rites.uic.edu/students.html
http://www.uillinois.edu/about/policies.html linked from:
  http://rites.uic.edu/iaPolicies.html
http://www.vpaa.uillinois.edu/policies/internet.asp?bhcp=1 linked from:
  http://rites.uic.edu/iaPolicies.html

./hw9 http://logos.cs.uic.edu/reed/
Visited pages: 11                                                                                                   
URLs checked: 188
Broken URLs (38):
http://logos.cs.uic.edu/335Archive/335 linked from:
  http://logos.cs.uic.edu/reed/
http://logos.cs.uic.edu/Intro linked from:
  http://logos.cs.uic.edu/reed/
http://logos.cs.uic.edu/Intro%20Prog/171%20Spring%2001/index.htm linked from:
  http://logos.cs.uic.edu/reed/
http://logos.cs.uic.edu/UIC linked from:
  http://logos.cs.uic.edu/reed/
http://interact.uoregon.edu/MediaLit/FA/MLArticleFolder/bloop.html linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://logos.cs.uic.edu/reed/FUN/mojopac.com linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://logos.cs.uic.edu/reed/FUN/tinyurl.com/y9499k linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://logos.cs.uic.edu/reed/FUN/u3.com linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://logos.cs.uic.edu/reed/PERSONAL/WarpIt/        AlexWarp linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/WarpIt/info.html
http://logos.cs.uic.edu/reed/PERSONAL/giraffian.com/kids linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/howstuffworks.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/macromedia.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/micro.magnet.fsu.edu linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/microsoft.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/nasa.gov linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/pbskids.org/zoom linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/scientificsonline.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.bionicle.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.bonus.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.exploratorium.edu linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.geocities.com/mrsmartens linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.grc.nasa.gov/WWW/K-12 linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.ipl.org/kidspace linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.jagex.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.justiceR.homestead.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.nationalgeographic.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.runescape.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.scitoys.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.shodor.org/interactivate linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.si.edu/kids linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.spacekids.com linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/PERSONAL/www.squeakland.org linked from:
  http://logos.cs.uic.edu/reed/PERSONAL/KidLinks.html
http://logos.cs.uic.edu/reed/Presentations/12-04 linked from:
  http://logos.cs.uic.edu/reed/
http://logos.cs.uic.edu/reed/Wordle linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://www.dinkumware.com/refxcpp.html linked from:
  http://logos.cs.uic.edu/reed/CLASSES/info.html
http://www.grand-illusions.com/shop.htm linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://www.kurzweilcyberart.com/KCATaaron/STAFsample linked from:
  http://logos.cs.uic.edu/reed/FUN/Fun.html
http://www.sigtools.com linked from:
  http://logos.cs.uic.edu/reed/

The rules

For this assignment, you may use either C/C++/Java or shell scripting (bash, awk/gawk, sed, tr, cat, etc). In addition, you may use curl for fetching documents from the shell, or libcurl for fetching documents from C. In C, you may use regular expressions for parsing documents, see regex.h, or 'man regex'. Using regular expressions is not mandatory, but recommended (it's an awesome tool to know). If you use Java, you may use the Java SE 6 standard libraries only.

You may not use wget instead of curl, and if you find a version of curl that does recursive document retrieval, you may not use that either. Languages other than the ones mentioned above are by request only. In general, python, perl and ruby are not allowed, nor will most other general-purpose languages.

You do not need to handle sites that have an infinite or impractically large (say a google search for "email") number of valid URLs.

curl gets unhappy with certain URLs. You will not be penalized for reporting these as broken links, even if they work in your browser.

Why/how is this homework 12 points?

For grading purposes, this homework will be considered as the normal 6-point homework, plus a second 6-point bonus homework. If you get 6 points total, this will result in one homework with a 100% score, and one with a 0% score. If you get 11 points total, you'll have one homework with 6 points, and one with 5 points.

Why? Just because I'm such a nice guy. wink

Hints

In regards to parsing HTML with regular expressions, I found this answer to be particularly enlightening. Be sure to read the entire answer.

The following command line snippet demonstrates extracting "img src" and "a href" URLs with regular expressions on linux. On OS X, replace "sed -r" with "sed -E".

curl http://www.cs.uic.edu/ | sed 's/>/>\
/g' | sed -r -n 's/.*<(a|img)[^>]*(href|src)=["'']?([^" >]*)["'']?.*$/\3/p'

Here the 'sed' command with a newline actually adds a newline after each '>' character, to make sure there is at most one URL per line. With "curl", if a page download fails it'll give you a non-zero return code. You can check it like this:

curl http://some.strange.url
if (( $? != 0 )); then
 echo "curl returned error";
fi

In other cases, the download succeeds, but you get an HTTP error code (404 not found, for example). To see the error codes, use

curl -v http://theurl 2> /tmp/stderr.log > /tmp/thefile

this will output the HTTP header on stderr, which is then redirected to /tmp/stderr.log. In this example, stdout is also redirected, but to a different file.

Watch out for relative URLs, both in HTTP redirects and in HTML pages. The can be either host-relative (starting with /), or path relative (starting without /), and may contain both '.' and '..'. They may also start with "http:" but without the "//", as illustrated on http://rites.uic.edu

A long one

For my solution, I supply a --max-time 10 parameter to curl. Some of the URLs on my page lead to things that take more than 10 seconds to fetch, leading to an error. We won't grade the homework on any such site, but you might still be interested to try it.

./hw9 http://www.cs.uic.edu/bin/view/Jakob/ Visited pages: 133 URLs checked: 472 Broken URLs (12): http://www.coderstore.info/BashCommandLineEditing/BashCommandLineEditing.m4v linked from: http://www.cs.uic.edu/bin/view/Jakob/ShellScripting http://www.cs.uic.edu/bin/rdiff/Jakob/WebStatistics linked from: http://www.cs.uic.edu/bin/view/Jakob/WebChanges http://www.cs.uic.edu/bin/view/Jakob/WebIndex http://www.cs.uic.edu/bin/statistics/Jakob linked from: http://www.cs.uic.edu/bin/view/Jakob/WebStatistics http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebStatistics?sortcol=5;table=1;up=2 http://www.cs.uic.edu/pub/Jakob/WebPreferences/custom.css linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 http://www.cs.uic.edu/pub/Jakob/WebPreferences/favicon.ico linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 logo.GIF linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 logo.gif linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 GIF.gif linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 ico.gif linked from: http://www.cs.uic.edu/bin/view/Jakob/WebPreferences http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebPreferences?sortcol=6;table=1;up=2 http://www.cs.uic.edu/~jakob/ff_scripting.mov linked from: http://www.cs.uic.edu/bin/view/Jakob/ShellScripting http://www.cs.uic.edu/~jakob/scripting_beta.mov linked from: http://www.cs.uic.edu/bin/view/Jakob/ShellScripting http://www.google.com/images?q=stockholm linked from: http://www.cs.uic.edu/bin/view/Jakob/ http://www.cs.uic.edu/bin/view/Jakob/?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=1;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=2;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=2;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=3;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=3;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=3;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=4;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=4;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=4;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=5;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=5;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=5;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=6;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=6;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=6;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=;table=1;up= http://www.cs.uic.edu/bin/view/Jakob/?sortcol=;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/?sortcol=;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebHome http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=0;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=0;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=0;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=1;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=1;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=1;table=1;up=2 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=2;table=1;up=0 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=2;table=1;up=1 http://www.cs.uic.edu/bin/view/Jakob/WebHome?sortcol=2;table=1;up=2

Topic revision: r1 - 2010-11-17 - 19:24:21 - Main.jakob
 
Copyright 2016 The Board of Trustees
of the University of Illinois.webmaster@cs.uic.edu
WISEST
Helping Women Faculty Advance
Funded by NSF