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 web2py book. You can also download it in pdf if you wish to read it offline.
For this class, you need a laptop / desktop on which you can install the required tools for the class. Any OS is fine: Linux, Mac OS X, or Windows. If you don't have that, something that actually works quite well is to get a Raspberry Pi 2B and install linux on it. A screen, a USB keyboard, and a wifi USB thingie and you are good to go.
Please follow these installation instructions to set up your machine for development.
You will need to use git to develop code for this class. Instructions on the setup will be posted shortly.
The project will need to be hosted online somewhere, and pythonanywhere is one of the many places where this can be done easily. More information will be provided during the class.
All announcements will be posted to the Piazza discussion group. It is your responsibility to keep up with announcements and deadlines.
Homework Assignments and Project Delivery Dates
Project
Please use this form to enter details about your proposed project.
Lectures
The class grade will be determined 50% by homework assignment and 50% by the project.
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.
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.
Syllabus
What's different from last year? Every year, I change the class a little bit, trying to improve it. This year, I will go into much more depth than in the past on how to make web applications where a lot of "interesting stuff" happens client side, in the web browser, using ractive.js and javascript. I will also go more into CSS, using the Compass library. I think it will be an overall much more complete experience.
You should work individually on all homework assignments. You can discuss the assignments with others, and you can ask questions on Piazza showing small portions (a few lines) of code, and you can discuss techniques with your peers. However, the bulk of the work needs to be your own, and wholesale copying of submissions is not allowed, and will incur disciplinary sanctions. Students who host their code on public repositories, facilitating copying by other students, will equally incur sanctions.
You can work in groups on the project.
You are free to borrow code from stack overflow or the web (not from other students), but you must cite the source of your code (the URL where it came from) in all cases. However, you cannot ask anyone to do the homework for you.
Resources
Here are some links that you might find useful.