Notice 2023-01-03
Winter 2023 Teaching
I am teaching CMPUT404 in the Winter of 2023. It will be in person. Groups should be formed from the lab section.
Pre-requisites: CMPUT 301, CMPUT 291.
You do not need CMPUT 391, I will waive CMPUT 391 if and only if you ave CMPUT 291 and CMPUT 301. CMPUT301 and CMPUT291 are hard pre-requisite, not co-requisite, and not optional. I will not grant anyone exemptions from pre-requisites for CMPUT301 or CMPUT291.
Summary
CMPUT404 is a software engineering course about the web, backend and frontend. It’s not just a web course, it’s the web from the point of view of a software developer. How do we deploy software on the web. We cover lots of concepts.
I have cotaught with Hazel Campbell before.
The goals of the course of is to produce students who are confident with web concepts and unafraid to look under the hood to debug something.
Lab Notes
The labs for the course are hosted here: https://uofa-cmput404.github.io/
Groups are formed in the lab. You must be in the same lab section.
Lecture Notes
The lecture notes are available online and available under a FLOSS compatible license: https://uofa-cmput404.github.io/cmput404-slides/#/
- Part 01: Introduction
- Part 02: Overview
- Part 03: Internet
- Part 04: HTTP
- Part 05: More HTTP
- Part 05.1: Even More HTTP
- Part 06: HTML
- Part 07: JavaScript
- Part 08: AJAX
- Part 09: Websockets
- Part 10: REST
- Part 11: Web Mining
- Part 12: HTTP Auth
- Part 13: Security
- Part 14: TLS
- Part 15: Performance
Assignments
Learn some backend, frontend, and protocols
- CMPUT404-assignment-webserver https://github.com/abramhindle/CMPUT404-assignment-webserver
- CMPUT404-assignment-css-hell https://github.com/abramhindle/CMPUT404-assignment-css-hell
- CMPUT404-assignment-web-client https://github.com/abramhindle/CMPUT404-assignment-web-client
- CMPUT404-assignment-ajax https://github.com/abramhindle/CMPUT404-assignment-ajax
- CMPUT404-assignment-websockets https://github.com/abramhindle/CMPUT404-assignment-websockets
In class exercises
Essentially we exercise your knowledge and learning from prior lectures with interactive in class work, such as handwriting an ethernet packet.
Project
Build a Peer to Peer blog platform
- CMPUT404-project-socialdistribution https://github.com/abramhindle/CMPUT404-project-socialdistribution
Derivative Work
Feel free to clone and copy provided you give my collaborators and myself appropriate attribute and follow the licenses.