This repository contains an archive of the teaching materials used in GMU's SWE 432 "Design and Implementation of Software for the Web" class in Fall 2016.
These materials were primarily developed by Jonathan Bell and Thomas LaToza.
##Syllabus Objective: This course will provide a comprehensive introduction to web development, covering front end development, back 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 including PHP, Java servlets, Java Server Pages, Javascript, XML and JDBC Understanding that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success
Readings: There are no required readings for this course. Each lecture will have suggested readings that contain additional background material.
Resources: 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.
Quizzes: 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.
Exams: There will be a comprehensive final exam which will be closed-book in-class. There will be no midterm exam.
Makeups: 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.
HWs: The homeworks in the course 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.
Grading: HWs: 40% Project reflection: 5% Class participation: 5% 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.
Tentative Schedule
- Course Overview (8/30) HWs: HW0 Out
- Web Development Tools (9/1)
- HTML & CSS (9/6) HWs: HW0 due, HW1 Out
- ECMAScript6 (9/8)
- Dynamic Webpages (9/13) HWs: HW1 due, HW2 Out
- Organizing Code in Web Apps (9/15)
- AJAX and WebSockets (9/20) HWs: HW2 due, HW3 Out
- Asynchronous Programming (9/22)
- Templates & Data-binding (9/27) HWs: HW3 due, HW4 Out
- MVVM Frameworks (9/29)
- Information Visualization Frameworks (10/4) HWs: HW4 due, HW5 Out
- Frontend Testing & Performance (10/6) (10/11) - NO CLASS - COLUMBUS DAY
- Backend Web Development (10/13) HWs: HW5 due, HW6 Out
- Handling HTTP Requests (10/18)
- Persistence (10/20) HWs: HW6 due, HW7 Out
- Privacy & Security (10/25)
- Microservices (10/27) HWs: HW7 due, HW8 Out
- Deployment (11/1)
- User-Centered Design (11/3) HWs: HW8 due, HW9 Out
- Human Cognition (11/8)
- Design Thinking & Prototyping (11/10) HWs: HW9 due, HW10 Out
- User Studies (11/15)
- Interaction Techniques (11/17) HWs: HW10 due, HW11 Out
- Site Design (11/22) (11/24) – NO CLASS – THANKSGIVING RECESS
- Information Visualization (11/29)
- Visual Design (12/1) HWs: HW11 due
- Design Languages (12/6)
- Review (12/8) Project reflection due
Final Exam 12/13, 10:30am - 1:15pm