CSE312: Web Applications

Fall 2025

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:

  • 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
  • Spend a minimum of 12 hours/week on CSE312

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
    • Each of the 5 hws will have an LO and you must complete all 5 LOs to pass the class
    • 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
  • No AI assistance (eg. ChatGPT/Gemini or full-line completion) is allowed.
  • 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 date 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 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

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, 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 10-11 recitations, you will earn 2 Application Objectives
    • If you earn participation credit during 8-9 recitations, you will earn 1 Application Objectives
    • If you earn participation credit during 0-7 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 or travel). 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:
https://engineering.buffalo.edu/computer-science-engineering/information-for-students/undergraduate-program/cse-undergraduate-academic-policies/cse-academic-integrity-policy.html

UB Academic Integrity Policy:
https://catalogs.buffalo.edu/content.php?catoid=11&navoid=571#preamble

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

All submitted work must be of your own creation, and you must not share your submission with anyone else. If any submission is very similar to what has been submitted by another student, or can be found online, it is in violation of this courses academic integrity policy and all students will be penalized whether they were copying or sharing their submission with other students so they can copy. If two submissions are similar beyond what is likely if the students worked independently, then both students are in violation of the academic integrity policy.

All violations will result in:

An F in CSE312.

It is your responsibility to understand what constitutes an academic integrity violation. If you have any question whether something you are doing is a violation or not, ask for clarification before receiving an F in the course. I will not entertain excuses after you have been caught.

Examples of acceptable behavior:

  • Discussing an assignment with your classmates and brainstorming abstract solutions, then writing your code independently
  • Searching the Internet for supplementary material on the course topics
  • Asking the teaching staff for clarification on a homework question
  • Asking the course staff about a potential grading error

Examples of unacceptable behavior:

  • Submitting code or other work that is not your own for course credit.
  • Allowing another student to see your code or submission for a homework assignment. (Ex. Sitting side-by-side while working on a homework such that you can see each other screens, hosting your code in a public repository, posting your code publicly on Piazza, etc.)
  • Using Artificial Intelligence to help you write code.
  • Collaborating with another person to write code for a homework assignment.
  • Copying a large amount of material found on the Internet into your homework submission.
  • Asking any of the course staff to falsify your grade (Ex. 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).
  • Attempting to access the grading code on Autolab.
  • 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.

Any student may be challenged by the course staff to prove that they did write any code they submitted for course credit. 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 were the author of 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 you can prove that you were the author of your code (Ex. If you did write your code, but helped someone else cheat).


Week 1: HTTP
Recitation: No Recitation
Monday
August 25
Course Introduction - Slides
Wednesday
August 27
HTTP Request/Response - Slides
Friday
August 29
HTTP - Static Files, MIME Types, and Encodings - Slides
Week 2: Web App Basics
Homework 1: HTTP
Recitation: No Recitation - Slides
Monday
September 1
No Lecture
Wednesday
September 3
HTTP POST, Forms, and AJAX - Slides
Friday
September 5
Databases and HTML Templates - Slides
Week 3: APIs and Docker
Recitation: Yes Recitation - Slides
Monday
September 8
CRUD and REST API - Slides
Wednesday
September 10
Cookies - Slides
Friday
September 12
Docker and Docker Compose - Slides
Week 4: Authentication
Homework 2: Authentication
Recitation: Yes Recitation
Monday, September 15 @ 9:00 AM
Homework 1: Learning Objective Deadline
Monday
September 15
Authentication and Secure Password Storage - Slides
Wednesday
September 17
Authentication Tokens and Sessions - Slides
Friday
September 19
XSRF - Slides
Week 5: OAuth 2.0
Recitation: Yes Recitation
Monday, September 22 @ 9:00 AM
Homework 1: Application Objective Deadline
Monday
September 22
OAuth 2.0 - Overview - Slides
Wednesday
September 24
OAuth 2.0 - Implementation Details - Slides
Friday
September 26
OAuth 2.0 - Add Ons - Slides
Week 6: Multipart Requests and Media Uploads
Homework 3: Media Uploads
Recitation: Yes Recitation
Monday, September 29 @ 9:00 AM
Homework 2: Learning Objective Deadline
Monday
September 29
Multipart and File Uploads - Slides
Wednesday
October 1
Buffering HTTP Requests - Slides
Friday
October 3
Multipart and File Upload: Examples and Testing
Week 7: Video
Recitation: Yes Recitation
Monday, October 6 @ 9:00 AM
Homework 2: Application Objective Deadline
Monday
October 6
Video Processing - Slides
Wednesday
October 8
Video - Adaptive Bit-Rate (ABR) - Slides
Friday
October 10
Streaming
Week 8: Break
Recitation: No Recitation
Monday, October 13 @ 9:00 AM
Homework 3: Learning Objective Deadline
Monday
October 13
No Lecture
Wednesday
October 15
No Lecture
Friday
October 17
No Lecture
Week 9: WebSockets
Homework 4: WebSockets
Recitation: Yes Recitation
Monday
October 20
WebSocket Handshake - Slides
Wednesday
October 22
WebSocket Frames - Slides
Friday
October 24
WebSocket Buffering - Slides
Week 10: Midterm
Recitation: Yes Recitation
Monday, October 27 @ 9:00 AM
Homework 3: Application Objective Deadline
Monday
October 27
Midterm Review
Wednesday
October 29
Midterm Review
Friday
October 31
*** Midterm Exam ***
Week 11: WebRTC
Recitation: Yes Recitation - Slides
Monday
November 3
WebSocket Testing
Wednesday
November 5
WebRTC Overview - Slides
Friday
November 7
WebRTC Details - Slides
Week 12: HTTPS and Deployment
Homework 5: Deployment
Recitation: Yes Recitation
Monday, November 10 @ 9:00 AM
Homework 4: Learning Objective Deadline
Monday
November 10
Encryption - Slides
Wednesday
November 12
HTTPS - Slides
Friday
November 14
Reverse Proxy Servers - Nginx - Slides
Week 13: Deployment
Recitation: Yes Recitation
Monday, November 17 @ 9:00 AM
Homework 4: Application Objective Deadline
Monday
November 17
DoS and DDoS - Slides
Wednesday
November 19
JSON Web Tokens (JWTs)
Friday
November 21
JWT Examples
Week 14: Break
Recitation: No Recitation
Monday, November 24 @ 9:00 AM
Homework 5: Learning Objective Deadline
Monday
November 24
No Lecture
Wednesday
November 26
No Lecture
Friday
November 28
No Lecture
Week 15: Content
Recitation: Yes Recitation
Monday, December 1 @ 9:00 AM
Homework 5: Application Objective Deadline
Monday
December 1
Architecture Decisions - Slides
Wednesday
December 3
Deployment
Friday
December 5
Deployment
Week 16: Final
Recitation: No Recitation
Monday
December 8
No Lecture
Friday
December 12
Final Exam: 3:30PM - 6:30PM in Davis 101

Website GitHub Website GitHub