CMPS 183 Fall 2012

  • Time and location: TuTh 12-1:45, Social Sciences 110
  • Instructor: Luca de Alfaro (, please include "CMPS 183" in the email subject line)
  • Instructor office hours: Tue 2-3, Engineering 2, 339A (appointment link)
  • TA: Maria Daltayanni (  Office hours: Tuesdays 2-5pm, location  BE 312 C/D.
  • Tutor: Michael Brich (  Office hours:  Wed and Fri, 10am - 12pm, in Jacks Lounge in the Baskin Engineering Building
  • Class discussion group (you need to ask to join with your account)  Students should join this group for the duration of the class, as it is what will be used to send announcements.
  • Ecommons will be used for assignment submission. 

We would like to thank DataCare for their gift in generous support of this class. 

Lectures, Homeworks, and Reading Assignments

Slides of the lectures, and pointers to homeworks and course material, will be posted here as the class progresses.

Project Reviews

Every project needs to have a weekly review by the instructor, TA, or reader.  This will start from the week starting Monday, October 15. Reserve your review (one per project) using one of the following links: 

About this class

This class provides an introduction to the design and implementation of interactive, dynamic web sites.  This year, the class will be based on web2py, a Python-based framework for the rapid implementation and deployment of web sites (read why web2py was chosen). The class grade will be computed as follows:
  • 40% homework.  Weekly homeworks will be assigned and graded.
  • 10% topic presentation.  Students will be expected to present one topic of their choice during 15-minute sessions that will be held during each class.  Students are encouraged to form groups (as there will be roughly 18 presentation slots in total), and present things close to their interests.  You can look at what was presented last year for inspiration.  A form where students can sign up for a topic will be made available.
  • 50% project.  The class project consists in the design and implementation of a web site.  The project can be accomplished either individually, or in groups of up to 4 students.  The projects will need to be done using the web2py framework. The projects will consist of the following:
    • Project proposal.  This is a one-page summary of the goal of the project.  The proposal should provide the motivation of the project.
    • Project plan.  The plan should include a detailed layout of the data, a detailed webpage flow, and a discussion of which algorithms / data constrains / implementation problems will potentially be "risk factors" for the project, being both critical and non-trivial.
    • Weekly project submissions.  Each week, a working version of the project should be submitted as a web2py package.
    • Versioning.  The project must be versioned using git, and its source be available on github.  Use a private repository if you fear for your IP, and add "lucadealfaro" as a project member so I can look at the code.
    • Project reviews.  As often as practical (every week ideally, but perhaps every second week, depending on the number of projects), the project members will need to make an appointment and meet with either the instructor, or the TA, to discuss the project status.
    • Project presentation.  At the end of class, the students will present their final projects.  We expect the presentation slots to be about 12 minutes long (details will follow).
    • Final project submission.  By the class final time at the latest, students will submit their projects as web2py packages.


Syllabus (approximate, for Fall 2012)

The following is a partial list of topics.  The order in which the topics will be presented is approximate.
  • Introduction to the class.  Basics of web site organization.
  • Introduction to web2py.
  • GET, POST, HTTP requests, REST.
  • Anatomy of URLs and HTTP requests.
  • Cookies, sessions.
  • HTML.
  • Database design, queries, and transactions.
  • Database abstraction layers.
  • Forms, validation.
  • CSS.
  • Auth, login, user acquisition.
  • Javascript.
  • Jquery.
  • AJAX, Json, Json-P.
  • Security, and attacks.
  • Advanced DB issues: replication, noSQL, ...
  • HTML5 and media.
  • Deployment issues, DNS.
  • Cloud platforms: EC2, Rackspace, AppEngine, ...
  • Performance tuning.
    Luca de Alfaro,
    Oct 20, 2012, 7:33 AM
    Luca de Alfaro,
    Nov 19, 2012, 11:43 AM
    Luca de Alfaro,
    Nov 1, 2012, 5:40 PM
    Luca de Alfaro,
    Oct 23, 2012, 7:46 PM
    Luca de Alfaro,
    Oct 29, 2012, 2:15 PM
    Luca de Alfaro,
    Nov 7, 2012, 10:19 AM
    Luca de Alfaro,
    Dec 2, 2012, 7:17 PM
    Luca de Alfaro,
    Nov 7, 2012, 9:59 AM