“Design and Implementation of Software for the Web”

Fall 2016: Tuesdays and Thursdays, 12:00pm-1:15pm, Robinson Hall B228

Instructor: Prof. Jonathan Bell
Email: [email protected]
Twitter: @_jon_bell_
Office: 4422 Engineering Building; (703) 993-6089
Office Hours: Anytime electronically, Tues 10:30am-12:00pm, or by appointment


This course will provide a comprehensive introduction to web development, covering front end development, back end development, and user interface design. This course is somewhat unique, and hence, there is unfortunately no single (or even small set) of textbooks to use for it. Where appropriate, we will provide additional references (e.g. via Safari Books Online) to book chapters that can be relevant for further reading. We will also maintain a repository of code examples on GitHub.

Over the term, you will learn how to use both client facing and backend technologies to make a web app. You will work on each homework with a partner, and over the course of the semester, will build a dynamic website piece by piece. By the end of the semester, you will have built a dynamic web app, hosted on Heroku. A listing of projects created by the students in Fall 2016 is available here.

Learning Outcomes

  • Knowledge of quantitative engineering principles for how to build software user interfaces, especially web-based user interfaces, that are usable
  • Understanding the client-server and message-passing computing models in the context of web applications
  • Knowledge for how to build usable, secure and effective web applications
  • Theoretical and practical knowledge about how data are stored and shared in web applications
  • Component software development using specific technologies including Javascript, NodeJS, JSON, React and Firebase
  • Understanding that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success


Lecture titles link to slides

  1. Course Overview (8/30)
    HWs: HW0 Out
  2. Web Development Tools (9/1)
  3. HTML & CSS (9/6)
    HWs: HW0 due, HW1 Out
  4. ECMAScript6 (9/8)
  5. Dynamic Webpages (9/13)
    HWs: HW1 due, HW2 Out
  6. Organizing Code in Web Apps (9/15)
  7. AJAX and WebSockets (9/20)
    HWs: HW2 due, HW3 Out
  8. Asynchronous Programming (9/22)
  9. Templates & Data-binding (9/27)
    HWs: HW3 due, HW4 Out
  10. MVVM Frameworks (9/29)
  11. Information Visualization Frameworks (10/4)
    HWs: HW4 due, HW5 Out
  12. Frontend Testing & Performance (10/6)
    (10/11) – NO CLASS – COLUMBUS DAY
  13. Backend Web Development (10/13)
    HWs: HW5 due, HW6 Out
  14. Handling HTTP Requests (10/18)
  15. Persistence (10/20)
    HWs: HW6 due, HW7 Out
  16. Privacy & Security (10/25)
  17. Microservices (10/27)
    HWs: HW7 due, HW8 Out
  18. Deployment (11/1)
  19. User-Centered Design (11/3)
    HWs: HW8 due, HW9 Out
  20. Human Cognition (11/8)
  21. Design Thinking & Prototyping (11/10)
    HWs: HW9 due, HW10 Out
  22. User Studies (11/15)
  23. Interaction Techniques (11/17)
    HWs: HW10 due, HW11 Out
  24. Site Design (11/22)
  25. Information Visualization (11/29)
  26. Visual Design (12/1)
    HWs: HW11 due, HW12 Out
  27. Design Languages  (12/6)
  28. Review (12/8)
    HWs: HW12 due
  29. Final Exam   12/15, 10:30am – 1:15pm