CSE312: Web Applications

Spring 2024

Jump to current week
Autolab Submit programming assignments
YouTube Watch past lectures
Piazza Ask questions and find office hours
Discord Chat with other students


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.


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 guidance
  • Be able to find, read, and understand technical documentation
  • Spend a minimum of 12 hours/week on CSE312


Starting on week 2, you will have recitation sections. These recitations will provide a chance for you to get extra help from the TAs in smaller groups. In general, recitation will offer examples, demos, and review of the previous week of content. Though you should come to these recitations with questions so the TA can present specifically about the content that is proving difficult for you.

The TAs may take attendance during recitation. This attendance does not directly affect your grade. However, if you are struggling in the course and are taking advantage of recitations, and therefore showing an effort to learn the material, there may be some leniency offered if you are in danger of failing. Do not expect any leniency, or addition chances to pass, if you regularly skip recitation.

Learning Objectives

Being successful in CSE312 requires you to complete a total of 12 learning objectives, all of which are programming objectives. Each of the first 4 homework assignments contain 3 learning objectives each. You must complete all of these objectives in order to pass the class.

There are 2 deadlines for each homework assignment which are an expected deadline and a final deadline. You can complete the learning objectives by either deadline. After the expected deadline, you will receive feedback on each of the 3 learning objectives as well as your completion status (The objectives are all graded on a pass/fail basis). If you did not complete all 3 learning objectives, you have until the final deadline to correct your mistakes and resubmit. If you do not complete all 3 learning objectives by the final deadline for the assignment, you have failed the course.

Learning Objectives Completed Grade
12 Grade depends on the number of Application Objectives completed
0-11 F

Application Objectives

If you have completed all 12 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
21-24 A
19-20 A-
17-18 B+
15-16 B
13-14 B-
11-12 C+
9-10 C
7-8 C-
4-6 D+
0-3 D

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 each. Each objective you complete before the expected deadline of an homework will earn you 1 Application Objective
    • You cannot earn any credit for the Application Objectives on the final deadline.
  • Group Project x9
    • Each of the 3 parts of the project will contain 3 application objectives each. Grading for these objectives will be similar to that of the homework application objectives to determine the team's score for each objective. Individual grade adjustments may be made (positive or negative) if it is discovered that the distribution of work is uneven across team members.
  • Group Project - Presentation/Demo x2
    • At the end of the semester, your team will present your project to the class with an opportunity to earn 2 more application objectives. You will demo the live/deployed version of your app while the audience uses your app and interacts with your software
  • Lecture Questions x3
    • 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 lecture 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 9 (3 full weeks worth) lecture questions that were either not submitted or submitted with an incorrect answer. You can use these 9 drops for any reason (Including illness or travel) and no additional drops will be given for any reason (ie. If you have to miss more than 3 full weeks of lecture, you have bigger problems to worry about than your lecture question points).
    • If, after the 9 drops, you answer all lecture questions correctly, you will earn 3 application objectives
    • If, after the 9 drops, you missed (either not submitted or submitted with an incorrect answer) between 1 and 5 lecture questions, you will earn 2 application objectives
    • If, after the 9 drops, you missed (either not submitted or submitted with an incorrect answer) between 6 and 10 lecture questions, you will earn 1 application objective
    • If, after the 9 drops, you missed (either not submitted or submitted with an incorrect answer) more than 10 lecture questions, you will not earn any application objectives from lecture questions


All homework assignments will be completed in Python

Each assignment will be a programming/development assignment with a submission of your software on Autolab, though there will be very little automated grading in this course. You will submit all of the code and files that comprise your software on AutoLab in a single zip file.

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

  • No external libraries or frameworks are allowed if the library implements functionality that we covered in class (Exceptions are made for TCP and IP only)
  • 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.


You will work in a team of 4-5 students to create a web application. You have full freedom to choose your own team. You are allowed to form teams across different recitation and lecture sections, though you are responsible for resolving any logistics are complicated by this (eg. If you form a team across lecture sections, make sure everyone on the team is able to make one of the lecture sections for the presentation)

Unlike the homework assignments, you are required to use libraries and frameworks on your project. The intent is that homework will show you how the protocols of Internet work, while the project will give you practice using the tools that you will actually use in the real world.

Weekly Meetings

Once meetings start, all member of your team must complete a meeting form after each meeting. This form will ask for a summary of the meeting, what you accomplished since the last meeting, what you'll complete before the next meeting, and for self and peer evaluations of all team members. These peer evaluations will be used as evidence when making individual grade adjustment decisions during grading if necessary.

If you do not fill out these meeting forms after each meeting (Once per week), your project grade will be reduced.

You may fill out the meeting form as often as you'd like, not just when you have a team meeting. Many students prefer to fill out the form again to rate their team after the project deadline even if they don't have a team meeting after the deadline.


You will present your project at the end of the semester:


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 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 code and documentation independently
  • Searching the Internet for supplementary material on the course topics
  • Asking the teaching staff for clarification on a homework question
  • Collaborating with your team mates on the team project

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 an assignment. (Ex. Sitting side-by-side while working on a homework such that you can see each other screens)
  • Using Artificial Intelligence to help you write code
  • Collaborating with another student to write code or documentation for a homework assignment.
  • Copying a large amount of material found on the Internet into your submission.

Week 1: Introduction
Recitation: No Recitation
January 24
Course Introduction
January 26
TCP/IP - Slides
Week 2: Web Basics
Recitation: Yes Recitation
January 29
Front End Development - HTML/CSS + JavaScript - Slides
January 31
HTTP Request/Response - Slides
February 2
Docker and Docker Compose - Slides
Week 3: HTTP GET
Homework 1: HTTP
Recitation: Yes Recitation
February 5
HTTP - Static Files, MIME Types, and Encodings - Slides
February 7
Cookies - Slides
February 9
HTTP POST, Forms, and AJAX - Slides
Week 4: HTTP POST and Databases
Recitation: Yes Recitation
February 12
Databases and HTML Templates - Slides
February 14
HTML Injection Attacks and Browser Extensions - Slides
February 16
CRUD and REST API - Slides
Friday, February 16 @ 11:59 PM
Team Formation: Deadline
Week 5: Authentication
Homework 2: Authentication
Project Part 1
Recitation: Yes Recitation
February 19
Authentication and Secure Password Storage - Slides
February 21
Authentication Tokens and Sessions - Slides
February 23
XSRF - Slides
Week 6: OAuth 2.0
Recitation: Yes Recitation
Monday, February 26 @ 9:00 AM
Homework 1: Expected Deadline
February 26
OAuth 2.0 - Overview - Slides
February 28
OAuth 2.0 - Implementation Details - Slides
March 1
OAuth 2.0 - Add Ons - Slides
Week 7: Image Uploads
Homework 3: Media Uploads
Recitation: Yes Recitation
March 4
Multipart and File Uploads - Slides
March 6
Multipart and File Uploads
March 8
Buffering HTTP Requests - Slides
Week 8: Video
Recitation: Yes Recitation
Monday, March 11 @ 9:00 AM
Homework 2: Expected Deadline
Monday, March 11 @ 9:00 AM
Homework 1: Final Deadline
March 11
Video - MP4 - Slides
March 13
Video - Adaptive Bit-Rate (ABR) - Slides
March 15
Examples and Testing Media Uploads
Spring Break
Recitation: No Recitation
March 18
No Lecture
March 20
No Lecture
March 22
No Lecture
Week 9: WebSockets
Homework 4: WebSockets
Project Part 2
Recitation: Yes Recitation
Monday, March 25 @ 9:00 AM
Project Part 1: Deadline
March 25
WebSocket Handshake - Slides
March 27
WebSocket Frames - Slides
March 29
Testing WebSocket and Buffering - Slides
Week 10: WebRTC
Recitation: Yes Recitation
Monday, April 1 @ 9:00 AM
Homework 3: Expected Deadline
Monday, April 1 @ 9:00 AM
Homework 2: Final Deadline
April 1
WebRTC Overview - Slides
April 3
WebRTC Details - Slides
April 5
WebSocket and WebRTC Examples
Week 11: HTTPS and Deployment
Homework 5: HTTPS
Recitation: Yes Recitation
April 8
Eclipse Day (No lecture or recitation)
April 10
Encryption - Slides
April 12
HTTPS - Slides
Week 12: Deployment
Project Part 3
Recitation: Yes Recitation
Monday, April 15 @ 9:00 AM
Last Day to Sign up for a Presentation Time: Deadline
Monday, April 15 @ 9:00 AM
Homework 4: Expected Deadline
Monday, April 15 @ 9:00 AM
Homework 3: Final Deadline
April 15
Reverse Proxy Servers - Nginx - Slides
April 17
April 19
DoS and DDoS - Slides
Week 13: Project Presentations
Project Presentation
Recitation: Yes Recitation
Monday, April 22 @ 9:00 AM
Project Part 2: Deadline
April 22
  • Team team
  • JJKM
  • cse312-project
  • 312-webapps-project
April 24
  • Lopie Boop
  • Intellectuals
  • Makeshift
  • CSSCrusaders
  • Team Name
  • jesseisnotworstcseteacher
  • We'reBadAtWebDesign
April 26
  • web-slingers
  • CSE-312-SJTM-Project
  • Nah, I'd Win
  • 312WebApp
  • wo ai cse312
  • The <div>as
  • Clueless
Week 14: Project Presentations
Recitation: Yes Recitation
Monday, April 29 @ 9:00 AM
Homework 5: Deadline
Monday, April 29 @ 9:00 AM
Homework 4: Final Deadline
April 29
  • its m&m
  • The Sluggers
  • Cache Money
  • ikun
  • 200 OK
  • theranos
  • Champions
May 1
  • The Winners
  • 404 Group Not Found
  • TBD
  • 666
  • Byte Bros
  • Recall
  • Project
  • Jesse's Tech Support
May 3
  • To Be Determined
  • DROP TABLE cse312_grades;
  • Team Rocket
  • DucksOnQuack
  • The interns 2.0
  • Byte Brigade
  • ForProfitOnly
Week 15: Project Presentations
Recitation: No Recitation
Monday, May 6 @ 9:00 AM
Project Part 3: Deadline
May 6
  • cse312project
  • Programmers
  • HeapOverflow
  • Team Red
  • Pending...
  • Derp
  • Team_CTP_Project
  • Brainiacs

Website GitHub Website GitHub