Web Systems and Algorithms


This course will survey topics, systems and algorithms related to the World Wide Web and data mining. We will read articles and academic papers, learn lots of technology, and build a number of interesting projects. In order to be a web system architect and programmer, you must be familiar with managing servers and installing software. We will make extensive use of the Amazon Web Services throughout the course.


You should be comfortable with:
  • Writing large programs in Java.
  • Learning new software packages and libraries with minimal supervision.
  • Installing and configuring software on your own computer.
  • The standard mathematical tools of computer science. This includes graphs, sets, probability, and linear algebra.
  • Expressing technical ideas in written English.

CS662 or CS682 would provide extremely useful background.

Instruction Format

Class periods of 1:05min each 3 times per week for 15 weeks. Instructor-student interaction during lecture is encouraged. "Pop quizzes" may appear during any class.


Your grade will be computed according to the following relationship: 
5% Labs/Quizzes/Class participation
55% Projects
20% Exam 1 (October ?)
20% Exam 2 (December 5)

DoubleKeyMap: 3%
Parallel word count: 10%
Proxy server: 10%
Link Persistence: 7%
Encryption, decryption 5%
Search Engine Part I: 10%
Search Engine Part II: 5%

Please note that class participation is part of your grade. You must learn to interact with other developers and come up with solutions. 

In general, I will read all papers, projects, quizzes etc... two times. Once to evaluate the average and a second time to assign scores. In the first pass, I also come up with a scoring strategy for each question. 

I consider an "A" grade to be above and beyond what most students have achieved. A "B" grade is an average grade or what you could call "competence" in a business setting. A "C" grade means that you either did not or could not put forth the effort to achieve competence. An "F" grade implies you did very little work or had great difficulty with the class compared to other students. 

I will be very strict and set a high standard in my grading, but I will work hard to help you if you are having trouble. Some of you may not get the grade you were hoping for in this class, but I will do everything I can to make sure you learn a lot and have a satisfying educational experience! 

Unless you are sick or have a family emergency, I will not change deadlines for projects nor exam times. For example, I will not give you a special final exam just because you want to fly home early. Consult the university academic calendar before making travel plans.


Tardiness. Please be on time for class. It is a big distraction if you come in late.

Academic honesty. You must abide by the copyright laws of the United States and academic honesty policies of USF. If told you may for a particular project, use any code from the net that you find as long as it does not violate the software's license. You may not borrow code from other current or previous students. All suspicious activity will be investigated and, if warranted, passed to the Dean of Sciences for action.

Official text from USF: As a Jesuit institution committed to cura personalis- the care and education of the whole person- USF has an obligation to embody and foster the values of honesty and integrity. USF upholds the standards of honesty and integrity from all members of the academic community. All students are expected to know and adhere to the University’s Honor Code. You can find the full text of the code online at honor code.

The golden rule: You must never represent another person's work as your own.