Sunday, December 26, 2010


The class grade will be based on the, almost weekly, individual programming homeworks. Each one of the N homeworks will be worth 1/N of your final grade.

There will also be several challenge rounds. These will be one-on-one meetings in my office where you will answer questions about the homework you submitted and the material it covered. The goal is simply to ascertain whether or not you did the homework. So the questions will be easy, if you did the homework, but impossible otherwise. If you answer correctly then you get to keep the grade you earned in the homework. Incorrect answers will result in severe penalties, up to and including failing the class.

I will post in this blog the names of the students whose turn it is to take the challenge and the date. I expect each student will answer three challenges in the semester.

Grading Rubric for Programs

Trait Exceptional Acceptable Amateur Unsatisfactory
Specifications The program works and meets all of the specifications. The program works and produces the correct results and displays them correctly. It also meets most of the other specifications. The program produces some correct results but fails at others. The program is producing incorrect results.
Readability The code is exceptionally well organized and very easy to follow. The code is fairly easy to read. The code is readable only by someone who knows what it is supposed to be doing. The code is poorly organized and very difficult to read.
Reusability The code could be reused as a whole or each routine could be reused. Most of the code could be reused in other programs. Some parts of the code could be reused in other programs. The code is not organized for reusability.
Documentation The documentation is well written and clearly explains what the code is accomplishing and how. The documentation consists of embedded comment and some simple header documentation that is somewhat useful in understanding the code. The documentation is simply comments embedded in the code with some simple header comments separating routines. The documentation is simply comments embedded in the code and does not help the reader understand the code.
Delivery The program was delivered on time. The program was delivered within a week of the due date. The code was within 2 weeks of the due date. The code was more than 2 weeks overdue.
Efficiency The code is extremely efficient without sacrificing readability and understanding. The code is fairly efficient without sacrificing readability and understanding. The code is brute force and unnecessarily long. The code is huge and appears to be patched together.

The grade for each each program will mostly (80%) consist of meeting the specifications and the rest will be divided roughly evenly between readability, reusability, documentation, and efficiency. If a homework is late by less than 1 hour it will get 5% off, if less than 1 week then the penalty is 30% off, if less than 2 weeks its 50% off, if more than 2 weeks then it gets 0.


Instructor: José M. Vidal
   Office: SWGN 3A51
Class Homepage:
Meeting Time: MWF 11:15--12:05pm. Swearingen 2A27.
Textbook: Recommended books as well as

This class will cover the development of web applications. We cover all the basic technologies necessary for building web applications as well as new technologies and trends which will used by web application developers in the next decade.

This is an introductory class and no previous knowledge of web technologies is assumed. However, I will assume that you can program, at the level of a good CSCE 145 graduate. See the list of topics covered for more details.

We will only meet on the classroom on Mondays and Wednesdays (if that). Fridays I will be available in the lab to answer questions.

Schedule and Topics

I hope to cover all the technologies you need to build a modern web application. We will be using the google app engine as our platform (the Python one, but you can use the Java version if you want). Time permitting, I would also like have you build a simple LAMP (Linux + Apache + mysql + PHP) app and deploy it on Amazon's EC2.

Below are the topics we will cover in, roughly, the order I plan to cover them:

  1. Web history: HTTP, firebug
  2. Google app engine. Python. HTML
  3. App engine datastore: a noSQL datastore.
  4. Django templates. CSS
  5. JavaScript: the language. Functional programming. Prototype inheritance.
  6. JavaScript and the DOM. jQuery.
  7. App engine memcache.
  8. HTML5: localStorage. jQuery for iPhone.
  9. Canvas. SVG
  10. App engine XMPP
  11. REST
  12. Mashups: facebook, delicious, flickr...
  13. Another way: LAMP on EC2