SWE 432: Design and Implementation of Software for the Web, Fall 2017

Tuesdays and Thursdays, 10:30-11:45am, Buchanan Hall D023

Grades: Blackboard
Syllabus, Schedule, and Lecture Slides: Website
Resources (Announcements, Assignments, Discussion): Piazza

Instructor: Prof. Thomas LaToza
Office: 4431 Engineering Building; (703) 993-1677
Office Hours: Anytime electronically, Wed 1:30-3:00, or by appointment

Teaching Assistants
Abdulaziz Alaboudi
Office: ENGR 5321
Office hours: Mon and Thurs 12:30 - 2:30

Course Overview

This course will provide a comprehensive introduction to web development, covering JavaScript, back end development, front end development, and user interface design.

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
  • Understanding that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success

Required Textbooks: None


Lecture titles link to lecture slides.
1. Course Overview (8/29)
Req Reading: None
2. JavaScript (8/31)
Req Readings: A Re-introduction to JavaScript, Introduction to commonly used ES6 features
3. Organizing Code in Web Apps (9/5)
Req Readings: Closures, Classes
HWs: HW1 Out
4. Web Development Tools (9/7)
Req Readings: Intro to Git, Intro to Node Package Manager (NPM)
5. Backend Web Development (9/12)
Req Readings: Intro to Node and Express, Hosting Node apps on Heroku
HWs: HW1 Due, HW2 Out
6. Handling HTTP Requests (9/14)
Req Readings: Overview of HTTP, Intro to REST
7. Asynchronous Programming (9/19)
Req Readings: None
HWs: HW2 Due, HW3 Out
8. Persistence (9/21)
Req Readings: Using Promises, Node.js event loop
9. NoSQL (9/26)
Req Readings: Firebase Get Started, Firebase Structure Data, Firebase Read and Write Data
HWs: HW3 Due, HW4 Out
10. Security (9/28)
Req Reading: Intro to CORS
11. Microservices (10/3)
Req Reading: Microservices
12. Deployment (10/5)
Req Reading: Fundementals of DevOps
HWs: HW4 Due, HW5 Out
13. HTML and CSS (10/12)
Req Readings: How CSS works, Selectors
14. Document Object Model (10/17)
HWs: HW5 Due, HW6 Out
15. Making HTTP Requests (10/19)
Req Readings: React Quick Start, Part 1 (through handling events)
16. Templates and Data-Binding (10/24)
Req Readings: Conditional rendering, lists and keys, forms
HWs: HW6 Due, HW7 Out
17. Frontend Frameworks 1 (10/26)
18. Frontend Frameworks 2 (10/31)
HWs: HW7 Due, HW8 Out
19. Frontend Frameworks 3 (11/2)
20. Information Visualization Frameworks (11/7)
21. User-Centered Design (11/9)
HWs: HW8 Due, HW9 Out
22. Interaction Techniques (11/14)
23. Site Design (11/16)
24. Visual Design (11/21)
HWs: HW9 Due, HW10 Out
25. Think-aloud Usability Studies (11/28)
26. Information Visualization (11/30)
HWs: HW10 Due, HW11 Out
27. Design Languages (12/5)
28. Review (12/7)
HWs: HW11 Due
Final Exam: Tuesday, 12/19, 10:30am - 1:15pm

Course Policies


If you have a general question about an assignment or course content, first check piazza to see if someone has already answered your question. If not, post your question in piazza, where your question may be answered by other students or the course staff. For questions about grades, contact one of the TAs by email.

Office Hours

Office hours are times that we commit to being in our office, door open, first come, first served. You do not need an appointment, and no appointments are accepted. If you cannot make the scheduled office hours, then we can try to set up an appointment. Please note that I am seldom available after 5:00 pm. We will inform you in class or on the discussion board if we have to miss office hours.


Each lecture has required readings that you should complete before the lecture. Material covered in the required readings may appear in the quizzes and on the final exam.


This course will use Piazza for posting the schedule and all assignments and announcements. Additionally, we will use Piazza for a discussion board. Information for accessing our class will be provided on the first day of class.

Grades will be available through Blackboard.

In Class Activities

Most lectures will feature interactive activities that support the material being presented. You are strongly encouraged to bring your laptop to class so that you can participate. Your participation grade will be based on your participation in in-class activities.


There will be a short closed-book in class quiz every week. Quizzes will not be announced in advance. The lowest three quiz grades will be dropped. The quizzes together will count for 20% of the course grade.


There will be a comprehensive final exam which will be closed-book in-class. There will be no midterm exam.


Missed quizzes cannot be made up. 10% will be deducted for late HW assignments and late HW assignments will only be accepted for 24 hours after the due date. HW assignments submitted more than 24 hours late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.


The homeworks in the course, starting with HW4, will be in the form of a project. Throughout the term, you will work in a pair to develop a dynamic web app, implementing a front end, back end, and evaluating and improving its usability.

You will be working in two-person pairs on all homework assignments. Beyond your pair, we encourage you to have high-level discussions with other students in the class about the assignments. However, we require that when your pair turns in an assignment, it is only the work of your pair. That is, copying any part of another pair’s assignment is strictly prohibited. You are free to reuse example code found on the Internet (e.g. via StackOverflow) provided that it is attributed. If you are concerned that by reusing and attributing that copied code it may appear that you didn’t complete the assignment yourself, then please raise a discussion with the instructor or TA.

HWs: 50%
Quizzes: 20%
Final exam: 30%
Honor Code

GMU is an Honor Code university; please see the Office for Academic Integrity for a full description of the code and the honor committee process, and the Computer Science Department’s Honor Code Policies regarding programming assignments. The principle of academic integrity is taken very seriously and violations are treated gravely. What does academic integrity mean in this course? Essentially this: when you are responsible for a task, you will perform that task. When you rely on someone else’s work in an aspect of the performance of that task, you will give full credit in the proper, accepted form. Another aspect of academic integrity is the free play of ideas. Vigorous discussion and debate are encouraged in this course, with the firm expectation that all aspects of the class will be conducted with civility and respect for differing ideas, perspectives, and traditions. When in doubt (of any kind) please ask for guidance and clarification.

Accommodations for 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 for Disability Services to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.


Students must use their MasonLIVE email account to receive important University information, including messages related to this class. See MasonLive for more information.

Other Useful Campus Resources
Writing Center
University Libraries
Counseling and Psychological Services (CAPS)
University Policies
GMU Academic Calendar