George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description

CS 499 Special Topics in Computer Science

Web Applications Rapid Prototyping

Section 004 Fall 2016: Tuesday 16:30 – 19:10, Nguyen Engineering Building 4705

Last Revised 8-28-2016

Professor: Dr. J. Mark Pullen
Mail drop: CS Dept, 4301 ENGR
Office hours 4455 ENGR Monday 16:00 to 18:00 whenever in Fairfax; also meet online
Preferred contact is email: mpullen@netlab.gmu.edu

Course Description
Principles and practice of dynamic scripting programming for web applications. Basic language concepts, data structures in dynamic languages, code structure,  code quality,  testing,  string manipulation,  dynamic web site generation,  server functions. Course is built around a team project.

Textbook
Haverbeke, Eloquent JavaScript: A Modern Introduction to Programming, No Starch Press, 2014 (available at no cost online)

References

Crockford: JavaScript: The Good Parts, O’Reilly, 2008

Simpson: You Don't Know JS: this & Object Prototypes, O’Reilly, 2014

Flanagan,  JavaScript: The Definitive Guide: Activate Your Webpages, O’Reilly, 2011

 

Course Outcomes
1.
Understand and be able to employ the dynamic scripting model of computer programming, including security issues.

2. Be able to design and write rapid prototype software using dynamic scripting programming.
3. Have familiarity with software libraries that support scripting web applications.
4. Be able to identify and implement functions appropriate to client and server in web applications. 
5. Be able to work effectively as a team to produce a software product.
6. Be familiar with typical debugging and testing techniques for web applications.
7. Demonstrate an understanding of and ability to employ websockets in client/server web applications.

8. Understand and be able to employ asynchronous control and communications flow in web applications.

Prerequisites by Topic
Grade of C or better in CS 310 (Data Structures)
Co-requisite: CS 367 (Computer Systems and Programming)

Grading breakdown:
* 75% Projects (three segments, 25% each)

* 15% Project integration and presentation
* 10% Homework

Projects: Multiple teams of two students will work together to complete a usable web application, which may be posted online as open source if its quality is sufficient. Projects will be defined collaboratively by students with professor input and developed as a set of three increasingly more complete prototypes. An example of a typical previous project is an interactive whiteboard for multi-browser interaction.

All students are expected to abide by the Honor Code as stated in the GMU catalog and elaborated for Computer Science. Students should be aware that their submissions may be checked by plagiarism detection software.

Grading is proficiency-based (no curve).

SYLLABUS (subject to revision)
date and topic/readings in Haverbeke text

8-30 Course introduction: what are web applications and why are they important; evolution of the web programming environment; dynamic scripting

9-6 JavaScript expressions; team programming; repositories; intro to GitHub (Chapters 1 and 2) (recorded class)

9-13 JavaScript as a prototype-based language; functions and data structures (Chapters 3 and 4) (recorded class)

9-20 Partition of function between client and server; higher order functions and using methods; (Chapters 5 and 6) (in person class)

9-27 Error handling and testing; security issues; best practices; advanced GitHub (Chapters 8, 13 and 14) (recorded class)

10-4 Project part 1 assignment; system design and team breakout (in class)

10-11 No class (Monday classes on Tuesday this week)

10-18 Team meetings (Prof out of town)

10-25 Introduction to web Scalable Vector Graphics (reference: //www.dashingd3js.com)  (online class)

10-25 Team presentations: project concept

11-1 Project part 2 assignment; system design and team breakout (in class)

11-8 Serverside functions: Node.js (reference: http://www.nodebeginner.org); websockets and associated system issues; concurrency, deadlocks and hangups

11-15 Team meetings (Prof out of town)

11-22 Project part 2 presentation and demo

11-29 Project part 3 assignment; system design and team breakout (in class or online)

12-6 Project part 3 Team meetings and review by Prof

12-13 (scheduled final exam period) Demo and validate completed systems

Course communication: we will use email extensively. Students are responsible to read GMU email daily. Announcements will be sent to the class email list, which consists of GMU email accounts.

Course notices and assignments will be provided via email. Course materials (for example, homework solutions) will be available though the course Moodle page, http://disted.c4i.gmu.edu. Students are responsible for assigned readings and all material outlined in lecture slides.

University Requirements
Honor Code Statement


Students with Disabilities
If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with the Office of Disability Services (SUB I, Rm. 222; 993-2474;
www.gmu.edu/student/drc) to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs. me to discuss your accommodation needs.