- Time and location: TuTh 12-1:45, Social Sciences 110
- Instructor: Luca de Alfaro (luca@soe.ucsc.edu, please include "CMPS 183" in the email subject line)
- Instructor office hours: Tue 2-3, Engineering 2, 339A (appointment link)
- TA: Maria Daltayanni (mariadal@soe.ucsc.edu). Office hours: Tuesdays 2-5pm, location BE 312 C/D.
- Tutor: Michael Brich (mbrich@ucsc.edu). 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 @ucsc.edu 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.
- Lecture 1: Thursday September 27, 2012. Information includes slides, code, and announcements.
- Lecture 2: Tuesday October 2, 2012, and homework 1, due on Thursday October 11, 2012.
- Lecture 3: Thursday October 4, 2012. Slides and code.
- Lecture 4: Tuesday October 9, 2012. Code and GIT references.
- Lecture 5: Thursday October 11, 2012. Slides, and Homework 2, due Thursday October 18, 2012.
- Lecture 6: Tuesday October 16, 2012.
- Lecture 7: Thursday October 18, 2012. Homework 2 sample solutions.
- Lecture 8: Tuesday October 23, 2012, and assigned reading.
- Lecture 9: Thursday October 25, 2012, and Homework 3, due Friday November 2, 2012.
- Lecture 10: Tuesday October 30, 2012 (slides in pdf).
- Lecture 11: Thursday November 1, 2012.
- Lecture 12: Tuesday November 6, 2012 and Homework 4, due Wednesday, November 14, 2012.
- Lecture 13: Thursday November 8, 2012.
- Lecture 14: Tuesday November 13, 2012.
- Lecture 15: Thursday November 15, 2012. This is a guest lecture on GWT by Jan Jannink.
- Lecture 16: Tuesday November 20, 2012. Tutorials.
- Lecture 17: Tuesday November 27, 2012. Tutorials.
- Lecture 18: Thursday November 29, 2012. Tutorials.
- Lecture 19: Tuesday, December 4, 2012. Tutorials, and cloud hosting.
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:
Final Project Presentation Schedule
Slides
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.