Fall, 2007
Monday 6:00-8:30, IS 838
Rosta Farzan: rosta@cs.pitt.edu, 412-624-5757
Tomek Loboda: tol7@pitt.edu, 412-624-7378
What is Web 2.0? A term to describe web technologies that are highly interactive, conversational and participatory? Or a term to describe the future of the WWW in which people are linked together in addition to documents? Why is Web 2.0 so important? In this course, we will explore the theories, technologies, and other issues related to Web 2.0. We will look at them from the perspective of various disciplines, such as social psychology and economics. You will become familiar with the Web browser environment and learn how to create Web 2.0 applications (a.k.a. AJAX applications).
A big component of this course will focus on gaining practical skills. Because of that, you should have prior programming experience. No particular language is important. It can be C, C++, Java, Perl, Python, Lisp, or any other language. What is important is that you understand a set of universal programming concepts. If you are not sure if your skills meet that requirement, try asking yourself if you are able to implement a stack -- one of the basic data structures. If you can do that, you have likely achieved the necessary level of programming proficiency. If you just need a refresher on that particular data structure it's still likely you will do well in this course. If you are unable to implement a stack or don't even know what a stack is, then this course is probably not a good choice for you.
Since the main programming language that we will use in this course is Javascript, familiarity with any language with the C syntax is a plus.
This course is generally targeted to advanced students, but if you feel you are a good match and are interested in it you are welcome to join this course.
This course will allow you to experiment with technologies that enabled the Web to evolve to its current form. Stated very briefly, conceptually you will discover:
- The origins and future directions of Web 2.0
- The social aspects of the Web (the Social Web phenomenon)
On the level of practical skills, you will learn to:
- Manipulate the browser's Document Object Model (DOM) to change the content of the page
- Communicate with the server on an asynchronous basis allowing for a user experience freed from page replacement (one of the properties of so-called AJAX)
- Manage the presentation of a Web page using Cascading Styles Sheets (CSS)
Generally, familiarity with HTML will be assumed, but we will have a very quick review of that markup language.
There will be no exams in this course. Rather, the workload will be distributed (reasonably equally) across the whole term. There will be eight small assignments. All of them will be narrow in scope and designed for you to practice material from the previous lecture. In the case of all of them, you will create something useful and, who knows, maybe even cool. There will be two projects: midterm and final. The midterm project will be the much smaller of the two and will require no programming. It will be a purely conceptual thing. The final project will be an amalgam of both.
To make sure you get as much as possible from each lecture, each week you will read one paper. You will also be encouraged to take active participation in the discussion of that paper (and the relevant lecture). Those discussions will count towards the participation part of your grade (see below for Grading section).
In the outline below the letter C denotes the title of the conceptual part and the letter P the practical part. Deadlines are marked with a star and displayed in green.
-
Lecture 1 (Aug 25)
C: Course overview; Introduction to Web 2.0
P: Introduction to Web programming
Programming Quiz
-
Lecture 2 (Sep 8)
C: Blogging
P: HTML; Forms; CSS
-
Lecture 3 (Sep 15)
C: Recommender systems, social navigation, and social search
* Assignment 1 due (Forms)
-
Lecture 4 (Sep 22)
C: Folksonomy, social bookmarking and tagging
P: JavaScript programming fundamentals
-
Lecture 5 (Sep 29)
C: Folksonomy, social bookmarking and tagging
P: Scripting browser window
* Assignment 2 due (Converter)
-
Lecture 6 (Oct 6)
C: APIs and mashups
P: Scripting documents
* Assignments of midterm projects
* Assignment 3 due (Navigation manager)
-
Lecture 7 (Oct 13)
C: Social network sites
P: Events and event handling
* Assignment 4 due (Todo list 1)
* Final project proposal due
-
Lecture 8 (Oct 20)
C: Social media communities: from photos to videos
P: Scripting presentation (CSS)
Midterm project presentations
* Midterm project report due
* Assignment 5 due (Memory game)
-
Lecture 9 (Oct 27)
C: Social visualization
P: Cookies and client-side persistence
* Assignment 6 due (Path animation)
-
Lecture 10 (Nov 3)
C: Virtual communities
P: Scripting HTTP; Data exchange formats (XML, JSON, etc.)
* Assignment 7 due (Todo list 2)
-
Lecture 11 (Nov 10)
Final project progress presentations
Server-Side API
* Assignment 8 due (Blog)
* Final project progress report due
-
Lecture 12 (Nov 17)
C: Collaborative writing
P: Scripting graphics
-
Lecture 13 (Nov 24)
C: Privacy
P: Advanced JavaScript (OO programing, functional programing, etc.)
* Assignment 9 due [optional] (Graphics)
-
Lecture 14 (Dec 1)
C: User participation
P: JavaScript libraries (YUI, Qooxdoo, etc.)
-
Lecture 15 (Dec 8)
Final project presentations and demos
* Final project report due
Below is the distribution of points you can get.
| Participation | 13 |
| Programming assignments | 40 (8*5) |
| Midterm project | 13 |
| Final project: | |
| Proposal | 7 |
| Progress report | 7 |
| Final presentation | 10 |
| Final report | 10 |
| Optional assignment | 5 |
| TOTAL | 105 |
On top of that, Rosta and Tomek will have 5 points each at their disposition. Those points are not to be asked for though. They will be used solely at their discretion. For instance, if you made a good impression in class and are a B+ case those points will likely help you to get an A.
Your final grade will then be as follows:
| A | 90-100 points |
| B | 80-89 points |
| C | 60-79 points |
| F | 0-59 point |
All deliverables should be submitted using the CourseWeb Dropbox. If you choose to make your submission by sending either of us an e-mail, it may be lost, so the Dropbox is your best bet. The submission deadline is midnight on the day an assignment or a report is due. Generally, late submissions will not be accepted. Extensions will be granted on a case-by-case basis.
All assignments and projects will be done in groups of two. Groups will be named after the
planets of the Solar System. That means we can have no more than eight groups. If a need be, we
will use names of smaller objects floating out there, like Pluto (which de facto lost it's
status of a planet quite recently). All submissions should be ZIP-ed. Below is the convention
that should be used for naming the resulting archives:
<planet>-<assignment or project>.zip
For example, the submission of the first assignment of the Uranus group should be named
Uranus-1.zip. Similarily, the submission of the midterm project report of the Mercury
group should be named Mercury-MP-Report.zip.
There is nothing more frustrating for students than not graded assignments. There is nothing more frustrating to the teacher than poor submission.
Below are some resources you will likely find useful for the practical part of the course. Please note that no JavaScript textbook is required. However, the first resource is an on-line version of a book that you may want to give a more serious consideration. Purchase is not necessary. The book is available free and with no restrictions if accessed from the University of Pittsburgh network (dorms, library, computer labs, etc.). For that matter, many other good books on JavaScript are available at Safari Books as well (search for javascript).