CS193S: Scalable Web Programming
Course Description:
CS 193S is a 3 unit course focusing on tools and practices for scalable
programming on the web, with programming projects built around these
practices. The course explores topics in scalability and charts
the development path for a large scale modern web service. A
single developer should be able to build, test, and deploy a single
codebase using only open source tools and libraries. This is difficult
to accomplish in practice, due to the variety of skill sets needed for
UI, client, server, and database coding. The framework presented in
this course offers solutions that do not sacrifice long term
scalability and maintainability for rapid development cycles and easy
prototyping. Programming projects will provide an overview of
technologies and critical constraints.
Programming Projects and Advocates
Lectures: Tue & Thu 2:15-3:30, Gates B03 (through March
12)
Instructor: Jan
Jannink (Office hours: Tue & Thu 3:30pm to 4:30pm: Phone:
(650) 646-2920)
Course assistants:
Aditya Acharya (Office hours: Mon 3-5 pm, Wed 1-3 pm)
Ed Suh (Office hours: Wed 7-9 pm, Sun 4-6 pm)
All office hours are in Gates B28
Office Phone Number: (650) 723-2579 (only during office hours)
Staff contact email:
cs193s-win0910-staff@lists.stanford.edu
Newsgroup: su.class.cs193s
-
The NNTP server for the newsgroup is usenet.stanford.edu, NOT nntp.stanford.edu
-
You may need to add a certificate exception which you can download from nntp://usenet.stanford.edu:563
Assignments: Three programming projects:
- Unit testing & integration: 20% of course grade, due Thursday, January 21th at 2:15 PM,
- Project-Milestone 1: 30-50% of course grade, due Thursday, February 18th at 2:15 PM,
- Project-Milestone 2: 30-50% of course grade, due Friday, March 5th at 11:59 PM.
- Note: The milestone you do better on will count for 50%. The other will count for 30%.
Policies:
- Lateness: since this class is designed to reflect how software is developed in the real world, in principle no late assignments will be accepted. We will look at submission times and grade up to the latest check in prior to the deadline. There will be no grace period, so DO NOT wait until the last minute to check your work in. You might find that someone else has just checked in something that creates a conflict with your code which you cannot easily resolve.
- Regrades: We take great care to ensure that grading is fair and consistent. Since we will always use the same grading procedure, any grades you receive are unlikely to change significantly. However, if you feel that your work deserves a regrade, please submit a written request to the staff e-mail list within a week of receiving your grade. In your request, indicate which components of your submission you would like regraded, and why you feel we should regrade those components. However, note that we reserve the right to regrade the entire assignment.
Approach: The goal of the course is for the
programming environment to resemble an internship working on an open
source website. Interaction and collaboration between students is
welcome. Grades will be earned by checking in software to the
class repository. The expectation is that coursework will be
checked in on a regular basis during the course of the quarter.
Reading: Almost all of the course source material is
web based. The most significant recommended (optional) readings
will be posted in the course slides and here below:
Syllabus and Lecture Slides
Useful links:
Git tutorials:
Git Magic
Git Tutorial
Git Guide
GitX - A Git front-end for Mac OSX
Subversion tutorial:
Subversion Tutorial
Setting AFS Permissions:
From Unix
From Windows
From Mac
With WebAFS
Testing:
With JUnit
GWT Developer's Guide - Testing
GWT:
How GWT finds files
Scalable Web Programming by Jan Jannink is licensed under a Creative Commons Attribution 3.0 United States License.