CSE312: Web Applications

Spring 2026

Jump to current week


Syllabus

Course Description

Covers the fundamentals of full-stack web development and deployment with a strong emphasis on server-side code and functionality. Students will develop a full-stack web application without the use of a pre-existing web server or web framework. Topics include HTTP, APIs, AJAX, databases, encryption, authentication, sockets, privacy, and security.

Expectations

To do well in this course you are expected to:

  • Spend a minimum of 12 hours/week on CSE312
  • Have a desire to learn about Web Applications
  • Be able to develop software with little/no guidance from the course staff
  • Be able to find, read, and understand technical documentation

Homework

There are 5 homework assignments throughout the course. Each homework assignment will consist of:

  • A Learning Objective (LO)
    • All features in the learning objective must be completed in order to pass the class. Learning objectives will be autograded, and you have unlimited attempts to complete them before the deadline
    • If needed, you will be given up to 1 deadline extension on 1 Learning Objective deadline. This extension will be automatically applied if you miss a Learning Objective deadline. The extended deadline will be set to the day of the Application Objective deadline for that Homework assignment. If you do not complete a Learning Objective by the extended deadline, or if you miss a second Learning Objective deadline, you will fail the course.
  • 2 Application Objectives (AO)
    • Additional features that can be completed to improve your grade. Application objectives will be manually graded after the deadline
    • Application objectives are due 1 week after the learning objectives

The following apply to all homework assignments except where exceptions are explicitly stated:

  • All homework assignments will be completed in Python
  • No external libraries or frameworks are allowed if the library implements functionality that we covered in class (Exceptions are made for TCP and IP)
  • Any libraries/packages/classes/functions/etc that are included in Python that complete part of an assignment - related to the course content - for you are not allowed. This includes the HTTP module
  • If you have any question whether or not something is allowed, please ask before the assignment is due. As a general rule: If a topic is covered in detail during lecture, then you must write all the code that implements those details.

Exams

There are 2 exams in the course, a midterm and final exam, whose dates are listed in the course schedule and contain the following objectives:

  • Exam Learning Objective (LO)
    • You must earn at least half of the available points on either exam to pass the class
    • This means that if you earn at least half the points on the midterm exam, you do not have to worry about the LO on the final exam. However, if you completely bomb the midterm, you still have an opportunity to complete the exam LO on the final exam
  • 4 Application Objectives (AO)
    • Each exam will offer the chance to earn up to 4 AOs for a total of 8 AOs that can be earned from the 2 exams

No electronics or outside material are allowed during the exams. It's just you, the exam, and a writing utensil.

Exams will be completed on paper and will be manually graded. The midterm will be graded out of 40 and the final out of 120 with the following points to LO/AO conversions:


Midterm Grade Objectives Completed
36-40 4 AOs + The Exam LO
32-35 3 AOs + The Exam LO
28-31 2 AOs + The Exam LO
24-27 1 AO + The Exam LO
20-23 The Exam LO
0-19 No objectives completed


Final Exam Grade Objectives Completed
108-120 4 AOs + The Exam LO*
96-107 3 AOs + The Exam LO*
84-95 2 AOs + The Exam LO*
72-83 1 AO + The Exam LO*
60-71 The Exam LO*
0-59 No objectives completed

* The exam LO is only completed on the final if it wasn't already earned on the midterm. If it was completed on the midterm, there's no need to complete it a second time (ie. If you did well on the midterm, and you're happy with your grade, you may skip the final exam)

Learning Objectives

The Learning Objectives of this course are, as the name implies, what you should expect to learn from taking this course. Anyone who has not completed every Learning Objective has not gained the knowledge expected when they enrolled in this course and therefore cannot be assigned a passing grade.

Learning Objectives Completed Grade
6 (All 5 HW LOs + The Exam LO) Grade depends on the number of Application Objectives completed
0-5 F

Application Objectives

If you have completed all 6 learning objectives, your grade will be determined by the number of application objectives you've completed. Your final letter grade will be determined as follows:

Application Objectives Completed Grade
18-22 A
16-17 A-
14-15 B+
12-13 B
10-11 B-
8-9 C+
6-7 C
4-5 C-
0-3 F


Application Objectives

You can earn application objectives to improve your grade in this course. You will have the following opportunities to complete application objectives.

  • Homework Application Objectives x10
    • Each of the 5 homework assignments contain 2 application objectives. For each of these objectives you complete before the Application Objective deadline of that homework, you will earn 1 Application Objective
    • All application objectives are manually graded. Grades will be released within 1 week after the deadline
  • Exam Application Objectives x8
    • The midterm and final exams each offer the opportunity to earn 4 Application Objectives based on your exam scores
  • Recitation x2
    • There are 11 recitations throughout the semester during the weeks with "Yes Recitation" listed on the course schedule. During these recitations, the TAs will provide examples and demos related to the previous week of lecture content. The purpose of these recitations is to bridge the gap between the more conceptual lecture content and what you are expected to code on the homework assignments
    • The TAs will record participation during every recitation. To earn credit for a recitation you must 1) Show up on time 2) Participate in the recitation (eg. If you physically attend, but don't pay attention and spend the whole time staring at your phone, the TA has the right to deny your credit for that day). Some recitations may require you to complete an activity for that day's participation
    • You may attend any of the 4 recitation sections, pending room capacity (eg. If a section becomes too popular to fit everyone in the room, we will prioritize students who are registered for that section and may deny others from attending). We will cover the same content throughout the week of recitation so some students find it more helpful to attend earlier in the week to get started on the HW earlier
    • If you earn participation credit during 9-11 recitations, you will earn 2 Application Objectives
    • If you earn participation credit during 7-8 recitations, you will earn 1 Application Objectives
    • If you earn participation credit during 0-6 recitations, you will not earn any Application Objectives
    • If you have to miss more than 2 recitations, to the point where you will not earn both Application Objectives, and you expect to be given a waiver, you must provide official documentation stating that you were unable to attend recitation for more than 2 weeks. Please note that a plane ticket is not official documentation.
  • Lecture Questions x2
    • Most lectures will include questions to be answered during live lectures. These will be simple questions designed to encourage you to attend lecture and stay up to date on the material. Since lectures will be recorded, there is a temptation to watch lectures days, or even weeks, after they occur. These questions are to serve as an incentive for you to attend lecture and avoid falling behind in the course.
    • We will drop a total of 6 (2 full weeks worth!) lecture questions that were either not submitted or were submitted with an incorrect answer. You can use these 6 drops for any reason (Including illness, travel, TopHat login issues, etc). If you have to miss more than 2 full weeks of lecture, and expect to be able to makeup more than 6 lecture questions, you must provide official documentation stating that you were unable to attend lecture for more than 2 weeks. Please note that a plane ticket is not official documentation.
    • If, after the 6 drops, you answer all lecture questions correctly, you will earn 2 application objectives
    • If, after the 6 drops, you missed (either not submitted or submitted with an incorrect answer) between 1 and 3 lecture questions, you will earn 1 application objective
    • If, after the 6 drops, you missed (either not submitted or submitted with an incorrect answer) more than 3 lecture questions (>9 total question missed), you will not earn any application objectives from lecture questions

Readings

There is no textbook for this course. Links to relevant readings and tutorials will be provided in the course schedule.

Academic Integrity

CSE Department Academic Integrity Policy

UB Academic Integrity Policy

In addition to the department and university policies, the following apply to this course:

  1. All submitted work must be of your own creation.
  2. Do not help another student violate point 1.

All violations will result in:

An F in CSE312.

Examples of acceptable behavior:

  • Discussing an assignment with your classmates and brainstorming abstract solutions, then writing the code on your own
  • Forming study groups and discussing course material and assignments on Discord, Zoom, etc.
  • Studying from supplementary material to improve your understanding of the course topics
  • Asking the teaching staff for clarification on a homework question
  • Having, or hiring, someone to help you understand the concepts of the course
  • Copying code from courses examples repo, linked at the top of this page, into your assignments

Examples of unacceptable behavior:

  • Using Artificial Intelligence to help you write code (The code is not your own creation).
  • Using autocorrect or autocomplete without understanding exactly what the code does (The code is not your own creation).
  • Collaborating with another student to write code for an assignment. (Do not sit next to your friend while you both work on the coding tasks)
  • Allowing another student to see your code or submission for an assignment.
  • Allowing another student to access your work that will be submitted for course credit. (Examples: Do not post you code publicly, host your code in a public repository, or allow a classmate to access your laptop)
  • Having someone help you write code. I don't care if you typed the code when someone else is telling you what to type
  • Copying a large amount of material found on the Internet into your submission.
  • Copying any amount of code you found without knowing exactly what it does, even it's 1 character.
  • Attempting to access the grading code on Autolab.
  • Asking any of the course staff to falsify your grade (eg. Asking for any result that you did not rightfully earn). This includes pressuring your TA to give you credit for recitation when you did not rightfully earn it (Ex. if you showed up late).
  • Submitting lecture questions without attending the entire lecture in person.
  • Interfering with another student in a way that may affect their grade.
  • Using any unauthorized assistance during an exam.
  • Submitting code for credit without being able to explain how the code works and why you wrote it the way you did (The code is not your creation if you can't).

Any student may be challenged by the course staff at any time to prove that they did create the code they submitted for course credit. They must be able to explain their code and walk through their thought process as they wrote the code. The method of proof can vary and is left for the course staff to decide. If the student fails to convince the course staff that they created all the code they submitted for course credit, they will be found in violation of this academic integrity policy. Please note that if a student is in violation of any other part of this policy, it is still a violation even if they can prove that they were the creator of their code (Ex. If they did write their code, but helped someone else cheat).

If challenged, the following excuses are not acceptable:

  • "That assignment was 3 weeks ago. I forgot." (If you forgot everything in 3 weeks, you did not learn it)
  • "I got that from the Internet." (You're clearly not the creator)
  • "I didn't write that." (Yes, this is a common excuse. At least it makes the meeting easier..)
  • "The TA told me to do that." (If they did, you still need to understand all code you submit)
  • "I hired a tutor" (You hired a cheater)

If you plan on cheating, plan on taking this course again.


Week 1: HTTP
Recitation: No Recitation
Wednesday
January 21

Course Introduction - Slides

Friday
January 23

HTTP Request/Response - Slides

Week 2: Web App Basics
Homework 1: HTTP
Recitation: No Recitation - Slides
Monday
January 26

HTTP - Static Files, MIME Types, and Encodings - Slides

Wednesday
January 28

HTTP POST, Forms, and AJAX - Slides

Friday
January 30

Databases and HTML Templates - Slides

Week 3: APIs and Docker
Recitation: Yes Recitation - Slides
Monday
February 2

CRUD and REST API - Slides

Wednesday
February 4

Cookies - Slides

Friday
February 6

Docker and Docker Compose - Slides

Week 4: HTTP and Docker Examples
Recitation: Yes Recitation
Monday
February 9

Review and Examples

Wednesday
February 11

Review and Examples

Friday
February 13

Review and Examples

Week 5: Authentication
Homework 2: Authentication
Recitation: Yes Recitation
Monday, February 16 @ 9:00 AM
Homework 1: Learning Objective Deadline
Monday
February 16

Authentication and Secure Password Storage - Slides

Wednesday
February 18

Authentication Tokens and Sessions - Slides

Friday
February 20

XSRF - Slides

Week 6: OAuth 2.0
Recitation: Yes Recitation
Monday, February 23 @ 9:00 AM
Homework 1: Application Objective Deadline
Monday
February 23

OAuth 2.0 - Overview - Slides

Wednesday
February 25

OAuth 2.0 - Implementation Details - Slides

Friday
February 27

OAuth 2.0 - Add Ons - Slides

Week 7: Multipart Requests and Media Uploads
Homework 3: Media Uploads
Recitation: Yes Recitation
Monday, March 2 @ 9:00 AM
Homework 2: Learning Objective Deadline
Monday
March 2

Multipart and File Uploads - Slides

Wednesday
March 4

Buffering HTTP Requests - Slides

Friday
March 6

Multipart and File Upload: Examples and Testing

Week 8: Video
Recitation: Yes Recitation
Monday, March 9 @ 9:00 AM
Homework 2: Application Objective Deadline
Monday
March 9

Video Processing - Slides

Wednesday
March 11

Video - Adaptive Bit-Rate (ABR) - Slides

Friday
March 13

Streaming

Week 9: Spring Break
Recitation: No Recitation
Monday
March 16

No Lecture

Wednesday
March 18

No Lecture

Friday
March 20

No Lecture

Week 10: WebSockets
Homework 4: WebSockets
Recitation: Yes Recitation - Slides
Monday, March 23 @ 9:00 AM
Homework 3: Learning Objective Deadline
Monday
March 23

WebSocket Handshake - Slides

Wednesday
March 25

WebSocket Frames - Slides

Friday
March 27

WebSocket Buffering - Slides

Week 11: Midterm
Recitation: Yes Recitation - Slides
Monday, March 30 @ 9:00 AM
Homework 3: Application Objective Deadline
Monday
March 30

Midterm Review

Wednesday
April 1

Midterm Review

Friday
April 3

*** Midterm Exam ***

Week 12: WebRTC
Homework 5: Deployment
Recitation: Yes Recitation
Monday
April 6

WebSocket Testing

Wednesday
April 8

WebRTC Overview - Slides

Friday
April 10

WebRTC Details - Slides

Week 13: HTTPS and Deployment
Recitation: Yes Recitation
Monday, April 13 @ 9:00 AM
Homework 4: Learning Objective Deadline
Monday
April 13

Encryption - Slides

Wednesday
April 15

HTTPS - Slides

Friday
April 17

Reverse Proxy Servers - Nginx - Slides

Week 14: Deployment
Recitation: No Recitation
Monday, April 20 @ 9:00 AM
Homework 4: Application Objective Deadline
Monday
April 20

DoS and DDoS - Slides

Wednesday
April 22

JSON Web Tokens (JWTs) - Slides

Friday
April 24

JWT Examples

Week 15: Real-World Deployment
Recitation: Yes Recitation
Monday, April 27 @ 9:00 AM
Homework 5: Learning Objective Deadline
Monday
April 27

Architecture Decisions - Slides

Wednesday
April 29

Deployment

Friday
May 1

Deployment

Week 16: Final
Recitation: No Recitation
Monday, May 4 @ 9:00 AM
Homework 5: Application Objective Deadline
Monday
May 4

No Lecture

Monday
May 11

Final Exam: 3:30PM - 6:30PM in NSC 215


Website GitHub Website GitHub