CSE312: Web Applications

Fall 2024

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

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

Recitations

Starting on week 3, 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.

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
16-18 A
14-15 A-
12-13 B+
11 B
10 B-
9 C+
8 C
7 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 x5
    • Each of the 5 homework assignments contain an application objective. If you complete the application objective before the expected deadline of that homework, will earn 1 Application Objective
    • You cannot earn any credit for the Application Objectives on the final deadlines.
  • 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 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) and no additional drops will be given for any reason (ie. If you have to miss more than a full week of lecture, you have bigger problems to worry about than your lecture question points).
    • 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 6 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 6 lecture questions, you will not earn any application objectives from lecture questions

Last Chance Policy

For all learning objectives on the homework assignments, you have 2 chances to complete each object via the expected and final deadline. Under certain circumstances, you may be given a short extension to be able to one last chance to complete a learning objective after grades are released for the final deadline. The intent of this policy is to allow any student who putting a serious effort into being successful in the course to have another chance to complete the course instead of failing after struggling with a single objective.

To earn an extension, you must have shown that you are doing your best to do well in the course. If you are in danger of failing because you have neglected this course, you will fail after the final deadline. The following criteria will be used to determine if a student has been putting enough effort into the course to justify an extension beyond the final deadline:

  • Criteria 1: Expected Deadline Submission
    • If you did not make any submission before the expected deadline, no extension will be given.
    • If you did make an expected deadline submission, you must have made a serious attempt to complete the assignment. If your expected deadline submission is considered to be "low effort", to the extent that the course staff could not give you feedback on your eventual mistakes on the final deadline submission, no extension will be given (eg. If you fail on the final submission for a security issue that was not present in expected submission because you did not get that far in the assignment, you have effectively waived your right to the feedback and correction process that is built into the course and you will fail)
    • If you start falling behind and need to use a final deadline, you should complete your revisions quickly to give yourself enough time to make a quality submission for the next assignment. Falling behind is not an excuse for continuing to fall behind. You must make a serious effort to get caught up after falling behind.
  • Criteria 2: Recitation Attendance
    • If you attended less than half of the recitations at the point of the final deadline, you will not be given an extension.
    • If you have attended at least half of the recitations, but missed the recitation(s) related to the homework content that caused you to fail, you might not earn an extension
    • Attending recitation means being on time. If you are more than 10 minutes late, you may not be considered as attending
  • Criteria 3: Lecture Questions
    • If you are not on pace to earn any application objectives from your lecture question performance, you will not be given any extensions.
    • If you have not submitted (eg. missed/skipped lecture) more than 20% of the lecture question, you will not be given an extension.

If none of the above bullet points apply to you (eg. You made a quality submission for the expected deadline and regularly attend both recitation and lecture), you will be given a short extension after the final deadline grades are released.

There will be some discretion in following these criteria (Especially in determining if an expected deadline submission constitutes a "serious effort"). All extension decision will be made by the course instructor. Any situations that are not clear based on the criteria above will be made on a case-by-case basis and may take additional criteria into consideration.

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 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.

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 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.

Presentation

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

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://catalog.buffalo.edu/policies/integrity.html

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

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.
  • Asking any of the course staff to falsify your grade (eg. Asking for any result that you did not rightfully earn) or for an extension that you beyond what your performance warrants

Week 1: Introduction
Recitation: No Recitation
Monday
August 26
Course Introduction
Wednesday
August 28
TCP/IP - Slides
Friday
August 30
Front End Development - HTML/CSS + JavaScript - Slides
Week 2: Web Basics
Recitation: No Recitation
Monday
September 2
No Lecture
Wednesday
September 4
HTTP Request/Response - Slides
Friday
September 6
Docker and Docker Compose - Slides
Week 3: HTTP GET
Homework 1: HTTP
Recitation: Yes Recitation
Monday
September 9
HTTP - Static Files, MIME Types, and Encodings - Slides
Wednesday
September 11
Cookies - Slides
Friday
September 13
HTTP POST, Forms, and AJAX - Slides
Week 4: HTTP POST and Databases
Recitation: Yes Recitation
Monday
September 16
Databases and HTML Templates - Slides
Wednesday
September 18
HTML Injection Attacks and Browser Extensions - Slides
Friday
September 20
CRUD and REST API - Slides
Friday, September 20 @ 11:59 PM
Team Formation: Deadline
Week 5: Authentication
Homework 2: Authentication
Project Part 1
Recitation: Yes Recitation
Monday
September 23
Authentication and Secure Password Storage - Slides
Wednesday
September 25
Authentication Tokens and Sessions - Slides
Friday
September 27
XSRF - Slides
Week 6: OAuth 2.0
Recitation: Yes Recitation
Monday, September 30 @ 9:00 AM
Homework 1: Expected Deadline
Monday
September 30
OAuth 2.0 - Overview - Slides
Wednesday
October 2
OAuth 2.0 - Implementation Details - Slides
Friday
October 4
OAuth 2.0 - Add Ons - Slides
Week 7: Image Uploads
Homework 3: Media Uploads
Recitation: Yes Recitation
Monday
October 7
Multipart and File Uploads - Slides
Wednesday
October 9
Buffering HTTP Requests - Slides
Friday
October 11
Multipart and File Upload: Examples and Testing
Week 8: Fall Break 1
Recitation: No Recitation
Monday
October 14
No Lecture - Fall Break 1
Wednesday
October 16
No Lecture - Catch Up Day
Friday
October 18
No Lecture - Catch Up Day
Week 9: Video
Recitation: Yes Recitation
Monday, October 21 @ 9:00 AM
Homework 2: Expected Deadline
Monday, October 21 @ 9:00 AM
Homework 1: Final Deadline
Monday
October 21
File Types - Slides
Wednesday
October 23
Media Processing - Slides
Friday
October 25
Examples and Testing Media Uploads
Week 10: WebSockets
Homework 4: WebSockets
Project Part 2
Recitation: Yes Recitation
Monday, October 28 @ 9:00 AM
Project Part 1: Deadline
Monday
October 28
WebSocket Handshake - Slides
Wednesday
October 30
WebSocket Frames - Slides
Friday
November 1
WebSocket Buffering - Slides
Week 11: WebRTC
Recitation: Yes Recitation
Monday, November 4 @ 9:00 AM
Homework 3: Expected Deadline
Monday, November 4 @ 9:00 AM
Homework 2: Final Deadline
Monday
November 4
WebSocket Testing
Wednesday
November 6
WebRTC Overview - Slides
Friday
November 8
WebRTC Details - Slides
Week 12: HTTPS and Deployment
Homework 5: HTTPS
Recitation: Yes Recitation
Monday
November 11
Testing
Wednesday
November 13
Encryption - Slides
Friday
November 15
HTTPS - Slides
Week 13: Deployment
Project Part 3
Recitation: Yes Recitation
Monday, November 18 @ 9:00 AM
Last Day to Sign up for a Presentation Time: Deadline
Monday, November 18 @ 9:00 AM
Homework 4: Expected Deadline
Monday, November 18 @ 9:00 AM
Homework 3: Final Deadline
Monday
November 18
Reverse Proxy Servers - Nginx - Slides
Wednesday
November 20
Deployment
Friday
November 22
DoS and DDoS - Slides
Week 14: Fall Break 2
Recitation: No Recitation
Monday
November 25
No Lecture - Catch Up Day
Wednesday
November 27
No Lecture - Fall Break 2
Friday
November 29
No Lecture - Fall Break 2
Week 15: Project Presentations
Project Presentation
Recitation: Yes Recitation
Monday, December 2 @ 9:00 AM
Project Part 2: Deadline
Monday
December 2
Presentations
  • @7
  • 𝓽𝓮𝓪𝓶 𝓯𝓻𝓮𝓪𝓴𝔂
  • Unnamed Merged Team
  • The Cookie Jar
Wednesday
December 4
Presentations
  • FakeBook-BarterPlace
  • Red Toyota Tercel
  • wetrustourusers
  • ShiftSpace
Friday
December 6
Presentations
  • MESBD
  • TALRIZ
  • WAJD
  • Project EverGreen
Week 16: Project Presentations
Recitation: No Recitation
Monday, December 9 @ 9:00 AM
Project Part 3: Deadline
Monday, December 9 @ 9:00 AM
Homework 4: Final Deadline
Monday, December 9 @ 9:00 AM
Homework 5: Deadline
Monday
December 9
Presentations
  • Buzzer Beater
  • elephant-small.jpg (FINAL OFFICIAL NAME!!!!!!!)
  • Week Four
  • Besot
Friday
December 13 @ 3:30 - 6:30 PM in Davis 101
Presentations (During Final Exam Time)
  • Backend Baddies
  • Lord Jesse's Recreational Objects
  • Midnight Coders
  • Null Pointers
  • Study Buddies
  • Academic Weapons
  • Station pplz
  • team2^2
  • Environmental Criticism Savants 2.0

Website GitHub Website GitHub