CSE312: Web Applications

Spring 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

Learning Objectives

Being successful in CSE312 requires you to complete a total of 4 learning objectives, all of which are programming objectives. Each of the 4 homework assignments contain a learning objectives section which must be completed successfully in order to pass the class.

All Learning Objectives will be autograded and Autolab will let you know if you've completed the objective. You may resubmit as many times as you'd like until you complete each Learning Objective.

Learning Objectives Completed Grade
4 Grade depends on the number of Application Objectives completed
0-3 F

Application Objectives

If you have completed all 4 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
24-28 A
23 A-
22 B+
20-21 B
18-19 B-
15-17 C+
12-14 C
9-11 C-
0-8 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 x12
    • Each of the 4 homework assignments contain 3 application objective. For each of these objectives you complete before the final deadline of that homework, will earn 1 Application Objective
    • You will not receive autograding feedback about completion of these objectives in Autolab
  • Homework Learning Objective Expected Deadlines x4
    • There are two deadlines for each of the 4 homework assignments: expected and final. You are expected to complete the Learning Objective portion before the expected deadline. Each time you do, you will earn 1 Application Objective. Since you must complete these objectives to pass the class, you are given a free 1-week extension in the form of a late deadline to still complete the learning objective
  • Team Project x8
    • There are a total of 8 Application Objectives available via the team project during the last few weeks of the course. This includes the project checkpoint, project completion at the deadline, and the project presentation
  • Recitation x2
    • There are 12 recitations through the semester during the weeks with "Yes Recitation" listed on the course schedule. During these recitation, the TAs with provide examples and demos related to the previous week of lecture content. The purpose of these recitations are to bridge the gap between the more conceptual lecture content and what you are expected to code on the homework assignments. We have seen far too many students fail this course because they were missing important content that was covered in a recitation that they skipped. In the spirit of seeing more students pass the course, recitations are required.
    • 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.
    • If you earn participation credit during 10-12 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 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 6 (2 full weeks worth) lecture questions that were either not submitted or 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

Homework

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 only be automated grading for the Learning Objective portion of each assignment. You will submit all 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)
  • 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 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.

Project

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 sections. The project does not officially start until week 12 though you are welcome and encouraged to start much earlier

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.

The project will give you practice using the tools that you will use in the real world, unlike the homework which will show you the low-level details of how the protocols of Internet work. The following apply to the team project:

  • You are required to use libraries and frameworks on your project. Any and all libraries are allowed, and you must use a web framework (eg. Flask, Express) of your choice as the core of your app
  • You may use any programming language(s) you'd like to complete the project
  • AI assistance (eg. ChatGPT or full-line completion) is allowed [on your team project only]. These tools are typically used in industry, depending on your specific company/team, and this project will offer you an opportunity to get familiar with these tools. The team project is simulating a real-world project and therefor these tools are explicitly allowed. (Please note that this only applies to the team project and NOT to the homework assignments! Claiming confusion on the policy after being caught using AI on you homework is not a valid excuse)
  • In general, as long as what you're doing is not illegal and does not violate any real-world requirements (eg. Violating the term and service of a tool you've used, using someone else's work that's protected by a copyright)
  • The one academic requirements that remains is: All work completed for the project must be completed by the members of your team.
Presentation

Your team will give a 10-minute presentation showing your project to the class at the end of the semester. The audience will use your live app during this presentation

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 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
  • Asking the course staff about a potential grading error
  • Using Artificial Intelligence to help you write code for 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 a homework 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 for a homework assignment.
  • 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 homework submission.
  • 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 (eg. 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 (eg. Launching a DoS attack on a team's app during their presentation).

Any student may be challenged by the course staff to explain their code. If they can not explain their code in a way that convinces 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 you are in violation of any other part of this policy, it is still a violation even if you can explain your code (eg. If you did write the code, but helped someone else cheat)


Week 1: Introduction
Recitation: No Recitation
Wednesday
January 22
Course Introduction
Friday
January 24
TCP/IP - Slides
Week 2: Web Basics
Recitation: Yes Recitation - Slides
Monday
January 27
HTTP Request/Response - Slides
Wednesday
January 29
HTTP - Static Files, MIME Types, and Encodings - Slides
Friday
January 31
Cookies - Slides
Week 3: HTTP GET
Homework 1: HTTP
Recitation: Yes Recitation - Slides
Monday
February 3
HTTP POST, Forms, and AJAX - Slides
Wednesday
February 5
Databases and HTML Templates - Slides
Friday
February 7
CRUD and REST API - Slides
Week 4: HTTP POST and Databases
Recitation: Yes Recitation
Monday
February 10
Docker and Docker Compose - Slides
Wednesday
February 12
Front End Development - HTML/CSS + JavaScript - Slides
Friday
February 14
HTML Injection Attacks and Browser Extensions - Slides
Week 5: Authentication
Homework 2: Authentication
Recitation: Yes Recitation
Monday, February 17 @ 9:00 AM
Homework 1: Expected Deadline
Monday
February 17
Authentication and Secure Password Storage - Slides
Wednesday
February 19
Authentication Tokens and Sessions - Slides
Friday
February 21
XSRF - Slides
Week 6: OAuth 2.0
Recitation: Yes Recitation
Monday, February 24 @ 9:00 AM
Homework 1: Final Deadline
Monday
February 24
OAuth 2.0 - Overview - Slides
Wednesday
February 26
OAuth 2.0 - Implementation Details - Slides
Friday
February 28
OAuth 2.0 - Add Ons - Slides
Week 7: Image Uploads
Homework 3: Media Uploads
Recitation: Yes Recitation
Monday, March 3 @ 9:00 AM
Homework 2: Expected Deadline
Monday
March 3
Multipart and File Uploads - Slides
Wednesday
March 5
Buffering HTTP Requests - Slides
Friday
March 7
Multipart and File Upload: Examples and Testing
Week 8: Video
Recitation: Yes Recitation
Monday, March 10 @ 9:00 AM
Homework 2: Final Deadline
Monday
March 10
File Types - Slides
Wednesday
March 12
Media Processing - Slides
Friday
March 14
Examples and Testing Media Uploads
Week 9: Spring Break
Recitation: No Recitation
Monday
March 17
No Lecture - Spring Break
Wednesday
March 19
No Lecture - Spring Break
Friday
March 21
No Lecture - Spring Break
Week 10: WebSockets
Homework 4: WebSockets
Recitation: Yes Recitation
Monday, March 24 @ 9:00 AM
Homework 3: Expected Deadline
Monday
March 24
WebSocket Handshake - Slides
Wednesday
March 26
WebSocket Frames - Slides
Friday
March 28
WebSocket Buffering - Slides
Week 11: WebRTC
Recitation: Yes Recitation
Monday, March 31 @ 9:00 AM
Homework 3: Final Deadline
Monday
March 31
WebSocket Testing
Wednesday
April 2
WebRTC Overview - Slides
Friday
April 4
WebRTC Details - Slides
Friday, April 4 @ 11:59 PM
Team Formation: Deadline
Week 12: HTTPS and Deployment
Team Project
Recitation: Yes Recitation
Monday, April 7 @ 9:00 AM
Homework 4: Expected Deadline
Monday
April 7
Testing
Wednesday
April 9
Encryption - Slides
Friday
April 11
HTTPS - Slides
Week 13: Deployment
Recitation: Yes Recitation
Monday, April 14 @ 9:00 AM
Homework 4: Final Deadline
Monday, April 14 @ 9:00 AM
Last Day to Sign Up for a Presentation Time: Deadline
Monday
April 14
Reverse Proxy Servers - Nginx - Slides
Wednesday
April 16
Deployment
Friday
April 18
DoS and DDoS - Slides
Week 14: Review
Recitation: Yes Recitation
Monday
April 21
Content
Wednesday
April 23
Content
Friday
April 25
Content
Week 15: Project Presentations
Recitation: No Recitation
Monday, April 28 @ 9:00 AM
Team Project Checkpoint: Deadline
Monday
April 28
Presentations
Wednesday
April 30
Presentations
Friday
May 2
Presentations
Week 16: Project Presentations
Recitation: No Recitation
Monday, May 5 @ 9:00 AM
Team Project: Deadline
Monday
May 5
Presentations
Monday
May 12
Presentations (During Final Exam Time - 3:30 - 6:30 PM in Davis 101)

Website GitHub Website GitHub