- Time and location: MW 5-6:45, Physical Sciences 110
- Instructor: Luca de Alfaro (luca@ucsc.edu, please include "CMPS 183" in the email subject line)
- Instructor office hours: Wednesdays 1-2, Engineering 2, 339A
- TA: Lu Liu (lliu@soe.ucsc.edu)
- TA office hours: Monday, 3pm, Jack's Lounge, Basking Engineering Building.
- Discussion group: Piazza discussion group.
- Review sections: 2:30-3:40 Thursdays Porter Acad 148
- Hangouts on air: You can find my lecture videos on my Google+ account for luca@soe.ucsc.edu (note the "soe"). If you follow me there, you should also be able to watch classes in real-time.
November 22: extra lesson:
Fri Nov 22 2013 5:00PM - 6:45PM Space Assignment(s): Jack Baskin 152
This class provides an introduction to the design and implementation of interactive, dynamic web sites. 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 determined 50% by the homework assignments, and 50% by the final project. See the syllabus below for a more detailed topic list.
Textbook: The web2py book. You can also download it in pdf if you wish to read it offline.
Requirement: You need a laptop / desktop on which you can install web2py. Any OS is fine: Linux, Mac OS X, or Windows.
Announcements: All announcements will be posted to the Piazza discussion group. It is your responsibility to keep up with announcements and deadlines.
Attendance: I will not check individual attendance to lectures: in practice, it is your choice whether to attend or not. However, I will often comment on assignments, project requirements, and similar in class. It is your responsibility to keep up with this information; it is not my responsibility to send announcements that cover in detail what I say in class.
We have two rooms available for final presentations:
- Wednesday 12-3pm, Porter 148
- Wednesday 4-7pm, Physical Sciences 110 (the usual room)
Your final presentation time is listed in this spreadsheet (note: for privacy you need to be logged in with your @ucsc.edu account to access it).
Here are some forms I am using to collect information on the end of class:
- Lecture 1, Monday September 30: Introduction. Slides, and web2py application we wrote in class.
- For next time: please download web2py, install it, and check that you can load the web2py package we worked on in class. See this for more information.
- Lecture 2, Wednesday October 2: Introduction to Python.
- Lecture 3, Monday October 7: Introduction to Web2py.
- Lecture 4, Wednesday October 9: Introduction to Web2py.
- Lecture 5, Monday October 14: Databases.
- Lecture 6, Wednesday October 16: Databases in Web2py.
- Lecture 7, Monday October 21: Forms, validation.
- Lecture 8, Wednesday October 23: Git, Forms.
- Lecture 9, Monday October 28: SQLFORM.grid, form validation, widgets.
- Lecture 10, Wednesday October 30. Hosting on appengine, and more on forms.
- Lecture 11, Monday, November 4. We discussed hosting on appengine, eventual consistency, and scaling issues.
- Lecture 12, Wednesday, November 6. Javascript.
- Lecture 13, Wednesday, November 13. Ajax.
- Lecture 14, Monday, November 18. Ajax.
- Lecture 15, Wednesday, November 20. This was a general Q/A class.
- Lecture 16, Friday, November 22. More on cloud, and Ajax.
Homework Assignments and Project Delivery Dates
- Project submission 2, due Friday November 22, 11:59pm. Reviews due Wednesday November 27.
- Homework 4, due Wednesday November 27, 11:59pm. There was no Homework 3, if you are wondering.
Upcoming deadlines (subject to change)
- Project submission 1: Wednesday November 6
- Project submission 2: Friday November 22
- Assignment 4: Wednesday November 27
- Wednesday December 4: Project presentations, for those who chose to hold them at the end of class
- Wednesday December 11: Project presentations, day of the final. Final project submissions are due on this day (you may, of course, turn it in earlier).
- Introduction to the class.
- A quick introduction to Python.
- A quick introduction to git.
- Introduction to web2py. A first application.
- GET, POST, HTTP requests, REST.
- Anatomy of URLs and HTTP requests.
- Model - View - Controller.
- Cookies, sessions.
- HTML.
- Models: database design, queries in SQL and in web2py.
- Forms, validation.
- Javascript.
- Advanced DB issues: replication, noSQL, ...
- Comparison with other web frameworks.
- Cloud platforms: EC2, Rackspace, AppEngine, ...
- The homework assignments are individual.
- Submissions will useCrowdGrader: the solution you submit will be peer-evaluated by other students in the class. You will be asked to grade 5-6 solutions by other students, and your homework grade will depend both on the quality of your submission, and on the accuracy of your grades and the quality of your reviews. The benefits of this is that you will get to see several ways of solving each homework assignment. You can learn more about CrowdGrader here.
- The grades will be re-normalized by the instructor for each assignment.
- Homework submissions should be anonymous: do not write your name in the code you submit.
- The instructor may discuss and display in class code that you submit as homework.
You can work in groups for the project. The project consists in developing a web application in web2py, and deploy it so that others can use it.
Groups and topic. You should start early on in the class to decide with whom to collaborate for the project. Groups of size 1-3 are recommended. Please also start thinking about a topic.
Plagiarism policy. The project overall needs to be original work. You can choose a non-original topic (e.g., let's re-implement Twitter or Instagram), but the bulk of the organization and contribution must be yours. You are more than welcome, and in fact encouraged, to re-use existing pieces of code any time you can: in particular, copying code from Stack Overflow, and from blogs, is allowed. For all the code you copy, you should abide to the license terms of the code, and you should add a clear comment into your source code, stating the source of the code (including the URL). When you re-use code, you should pay attention to integrating the code well in your application. Copy just what you need, do not add portions of code that are irrelevant to the task at hand.
Project submissions and evaluation. You will need to submit the project a total of 4 times. All submissions will use CrowdGrader (it can handle group assignments). The deadlines will be posted shortly.
- Submission 1. You will need to submit a project proposal (pdf, or a pointer to an online document such as a Google document with read access). The project proposal should identify the problem you want to solve, and provide a general text overview of the site you plan to build. This proposal will be graded by the instructor (you will be able to look at other proposals, if you wish, but the grade computed by CrowdGrader is not used). The instructor will approve it, or send it back to you with feedback. No other grade will be given.
- Submission 2. You should submit a preliminary implementation. The models (database layout) and some initial pages will be there. This submission will be peer-evaluated as well as instructor evaluated.
- Submission 3. You should submit a version of the whole application. The application should be mostly functional, even though rough edges may still be present. This submission will be peer-evaluated, and you should use all the feedback you get in order to perfect the project for the final submission.
- Submission 4. This is the final project submission, due on the day of the final. Submit as polished and as nice a project as you can.
Project presentations.The last day of class, and the day of the final, are dedicated to project presentations. You will be able to choose the day for your presentation.
Project evaluation. The project evaluation is a holistic process, that takes into account factors such as: how ambitious the project is, how clean the code is, how polished the UI is, how good the database model is, how well the project progressed from initial proposal to final project, how much was the feedback received in prior project submissions is addressed in following submissions. Extra credit is given for projects that solve real problems, and that are hosted and made accessible for all to use.
You should always use a version control system for all your code. In particular, we strongly recommend git.
Clean, well-commented, succinct code is the best code. The instructor will look at the code you submit, in particular, the project code. If the code is not understandable, points may be taken off.
Here are some links that you might find useful.