CSE312: Web Applications

Fall 2023


Submit assignments here
Watch past lectures
Ask questions and find office hours
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 guidance
  • 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 10 learning objectives, all of which are programming objectives. Each of the first 3 homework assignments contain 3 learning objectives with a single learning objective related to the project (The first project objective). You must complete all of these objectives in order to pass the class.

You will until the last day of classes to complete the 10 learning objectives.

Learning Objectives Completed Grade
10 Grade depends on the number of Application Objectives completed
0-9 F

Application Objectives

If you have completed all 8 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
52-60 A
47-51 A-
42-46 B+
37-41 B
31-36 B-
24-30 C+
17-23 C
10-16 C-
0-9 or did not complete all Learning Objectives F


Application Objectives

You can earn application objectives to improve your grade in this course. Most of these objectives are designed to encourage you to stay up-to-date on the content of the course. You will have the following opportunities to complete application objectives.

  • Homework Learning Objectives x18
    • Each of the first 3 homework assignments contain 3 learning objectives each. These learning objectives must be completed by the final deadline on the last day of classes in order to pass the class. However, there are 3 deadlines for each homework and completing an objective by an earlier deadline will earn you application objectives
    • Expected Deadline: As the name implies, this is when you are expected to complete all the objectives of an assignment. For each objective you complete by this deadline, you will earn 2 application objectives
    • Late Deadline: This deadline is 2 weeks after the expected deadline. For each objective you complete by this deadline, you will earn 1 application objective
    • Final Deadline: You must complete all 9 learning objectives before this deadline or you will fail the class. This deadline is the night of the last day of classes for all 9 objectives
  • Homework Application Objectives x8
    • Each of the 4 homework assignments will contain 1 application objectives. You will earn application objectives for these objectives the same way you do for learning objectives (ie. complete by expected deadline for 2 AOs and before the late deadline for 1 AO) except you do not have to complete these objectives to pass the class. This implies that if you do not complete these objectives before the late deadline, you can no longer earn any credit for them
  • Lecture Questions x4
    • Most lectures will include multiple choice 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.
    • If you answer >=90% of the total available lecture question correctly, you will earn 4 application objectives
    • If you answer >=80% of the total available lecture question correctly, you will earn 3 application objectives
    • If you answer >=70% of the total available lecture question correctly, you will earn 2 application objectives
    • If you answer >=50% of the total available lecture question correctly, you will earn 1 application objective
  • Group Project - Part 1 x6
    • You will work in a group to complete a project throughout this semester. However, the first part of this project will be completed individually. This first part is the 10th learning objective of the course and must be completed by the final deadline on hte last day of classes.
    • Project Part 1 Deadline: Complete part 1 of the project by this deadline to earn 6 application objectives
    • Project Part 2 Deadline: Complete part 1 of the project by the second project deadline to earn 3 application objectives
    • Final deadline: Complete part 1 of the project by the night of the last day of classes to pass this course. You will not earn any application objectives if you rely on this deadline
  • Group Project - Parts 2-4 x18
    • Each of parts 2-4 of the project will provide opportunities to earn 6 application objectives each. There is only one deadline for each of these parts and you will complete these parts as a team
  • Group Project - Presentation/Demo x6
    • At the end of the semester, your team will present your project to the class with an opportunity to earn 6 more application objectives. You will demo the live/deployed version of your app while the audience uses your app and interacts with your software

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 little/no 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-6 students to create a web application. You will choose your teams through your project part 1 submission.

Unlike the homework assignments, you 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

All scheduled recitation sections are replaced with team meetings which will start on week 5 of the semester. Your team will schedule a time and location for these meetings.

Once meetings start, each member of your team will be asked to 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 at the end of the semester if necessary.

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.

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

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.

1 - HTTP and Docker
Homework 1
Project Part 1
Week 1
Monday
August 28
Course Introduction
Wednesday
August 30
TCP/IP - Slides
Friday
September 1
HTTP Request/Response - Slides
Week 2
Monday
September 4
No Class
Wednesday
September 6
HTTP - Static Files, MIME Types, and Encodings - Slides
Friday
September 8
Cookies - Slides
Week 3
Monday
September 11
Docker - Slides
Wednesday
September 13
Docker Compose - Slides
Friday
September 15
Examples
2 - Authentication
Homework 2
Project Part 2
Week 4
Monday, September 18 @ 9:00 AM
Homework 1: Expected Deadline
Monday
September 18
Front End Development - HTML/CSS + JavaScript - Slides
Wednesday
September 20
HTTP POST, Forms, and AJAX - Slides
Friday
September 22
Databases and HTML Templates - Slides
Week 5
Monday, September 25 @ 9:00 AM
Project Part 1 Deadline
Monday
September 25
Authentication and Secure Password Storage - Slides
Wednesday
September 27
Authentication Tokens and Sessions - Slides
Friday
September 29
CRUD and REST API - Slides
Week 6
Monday, October 2 @ 9:00 AM
Homework 1: Late Deadline
Monday
October 2
HTML Injection Attacks and Browser Extensions - Slides
Wednesday
October 4
XSRF - Slides
Friday
October 6
Testing APIs
Break 1
Monday
October 9
No Class
Wednesday
October 11
No Class
Friday
October 13
No Class
3 - Image Uploads and WebSockets
Homework 3
Project Part 3
Week 8
Monday, October 16 @ 9:00 AM
Homework 2: Expected Deadline
Monday
October 16
HTTP POST - File Uploads - Slides
Wednesday
October 18
Testing Multipart Uploads
Friday
October 20
WebSocket Handshake - Slides
Week 9
Monday, October 23 @ 9:00 AM
Project Part 2 Deadline
Monday
October 23
WebSocket Frames - Slides
Wednesday
October 25
Testing WebSocket
Friday
October 27
Buffers - Slides
Week 10
Monday, October 30 @ 9:00 AM
Homework 2: Late Deadline
Monday
October 30
WebRTC Overview - Slides
Wednesday
November 1
WebRTC Details - Slides
Friday
November 3
Examples
4 - Deployment
Homework 4
Project Part 4
Week 11
Monday, November 6 @ 9:00 AM
Homework 3: Expected Deadline
Monday
November 6
Encryption - Slides
Wednesday
November 8
HTTPS - Slides
Friday
November 10
Deployment and Reverse Proxy Servers
Week 12
Monday, November 13 @ 9:00 AM
Project Part 3 Deadline
Monday
November 13
Automated Clients
Wednesday
November 15
DoS and DDoS
Friday
November 17
Examples
Break 2
Monday, November 20 @ 11:59pm Deadline to sign up for a presentation time
Monday
November 20
No Class
Wednesday
November 22
No Class
Friday
November 24
No Class
Week 14
Monday, November 27 @ 9:00 AM
Homework 3: Late Deadline
Monday, November 27 @ 9:00 AM
Homework 4: Expected Deadline
Monday
November 27
SMTP
Wednesday
November 29
Payments
Friday
December 1
API vs. HTML Templates
Presentations
Week 15
Monday, December 4 @ 9:00 AM
Project Part 4 Deadline
Monday
December 4
Review
Wednesday
December 6
Project Presentations
Friday
December 8
Project Presentations
Week 16
Monday, December 11 @ 9:00 AM
Homework 4: Late Deadline
Monday, December 11 @ 11:59 PM
Homework 1-3 & Project Part 1 (Learning Objectives Only): Final Deadline
Monday
December 11
Project Presentations
Friday
December 15
Final Exam @ 3:30AM - 6:30PM [Hoch 114] [Used for remaining project presentations]