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:
Being successful in CSE312 requires you to complete a total of 8 learning objectives, all of which are programming objectives. The first 2 objectives (out of 5) on each homework assignment are learning objectives. You must complete all of these objectives on time in order to pass the class.
Each homework will have 2 deadlines listed on the course schedule. The first will be the learning objective expected deadline. This is the time when you are expected to have completed the learning objectives for the assignment. You should always aim to complete the learning objectives by this deadline. The second deadline is the actual deadline for all 5 objectives of the assignment. Since you must complete all 8 learning objectives by this second deadline, there are some provision provided for you to allow some leniency.
Late Days: You will be given 4 late days to use throughout the semester on the 4 programming assignments. You may use these days however you'd like including using all 4 on the same assignment. Though, it is highly recommended to not use these on the first assignment since you will want to save them for the more difficult assignments. If you make a submission that even 1 second late, you will be charged a late day and your deadline will be extended by 24 hours. Late day usage applies to all objectives.
Recovery Opportunities: Since you must complete all 8 learning objectives to complete the course, you will be given 4 recovery opportunities that can be used on any learning objectives. Using a recovery opportunity on a learning objective will give you a 1-week extension on that objective. Please note that this is on a per-objective basis. If you missed both learning objectives on a single assignment then you'll need to use 2 recovery opportunities on a single assignment.
If you use all your late days and recovery opportunities and still have not completed a learning objective, you will fail the class.
Learning Objectives Completed | Grade |
---|---|
8 | Grade depends on the number of Application Objectives completed |
0-7 | F |
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 |
---|---|
22-26 | A |
19-21 | A- |
16-18 | B+ |
13-15 | B |
10-12 | B- |
7-9 | C+ |
4-6 | C |
0-3 | C- |
0+, but did not complete all Learning Objectives | F |
You can improve your letter grade by showing that you can apply the learning objectives to solve real-world problems. You will have the following opportunities to complete application objectives.
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:
There is no textbook for this course. Links to relevant readings and tutorials will be provided in the course schedule.
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:
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:
Examples of unacceptable behavior:
You will work in a team of 4-6 students to create a web application.
Relevant links/documents:
All scheduled recitation sections are cancelled and replaced with team meetings which will start on week 5 of the semester. Your team will schedule a time and location for these meetings and all team members will submit the team meeting form after each meeting.
Meeting submissions and peer evaluations will be used as evidence when making individual grade adjustment decisions at the end of the semester.
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.
The entire project is due after the last day of classes. There is no submission at the deadline. After the due date, we will clone your repository and grade based on the code you've pushed.
As opposed to the homework assignments, you are allowed to use external libraries, frameworks, and services for your project. For example, instead of building your site starting with a TCP socket server you can use technology such as Express, Flask, Django, React, Angular, Handlebars, Socket.io, etc. However, you are required to write several reports explaining how these libraries function. See the project requirements document for specific requirements on the reports that need to be written.
Each report must answer:
Why?: Developing a website using existing frameworks/libraries/services does not require years of CSE education and is not appropriate for a project in a 300-level technical course. The use of frameworks/libraries/services are required for this project, and strongly encouraged outside of this course, but you must prove that you understand what is being done for you by other developers and how they do it. In this course, you cannot use technology that you do not understand.
If any reports are missing, inadequate, or don't go into enough depth, the team is in violation and the project may become invalid. Consequences will be decided by the course staff on a case-by-case basis which can range up to a 0 for the entire project.
Features: Each project has 3 features outlined in the project requirements document. Each feature will be graded in the same manner as the homework objectives and are worth 1 application objective each.
Reports: The project requirements document describes 3 open-source reports that are required. Each report is worth 1 application objective. To provide a round of feedback on these reports, there is a Team Project Reports Checkpoint listed on the course schedule. After this checkpoint, a TA will review the reports in your repository and provide feedback to you that will be posted on AutoLab. If your reports are complete at this point, you can earn the application objectives early. If they are not complete, you will receive feedback on what you have and you can correct/complete them by the project deadline on the last day of class to earn credit.
Security: If there are any security issues with your project that have been covered in lecture, your grade for each feature that exposes the vulnerability will be changed to 0. Your entire project grade may be changed to 0 at the discretion of the course staff and depending on the severity of the security vulnerability.
Homework 1 | ||
Week 1 | ||
Monday January 30 |
Course Introduction and TCP/IP - Slides |
|
Wednesday February 1 |
HTTP Overview |
|
Friday February 3 |
HTTP Request/Response - Slides |
|
Week 2 | ||
Monday February 6 |
HTTP - Static Files, MIME Types, and Encodings - Slides |
|
Wednesday February 8 |
Docker - Slides |
|
Friday February 10 |
Databases and docker-compose - Slides |
|
Week 3 | ||
Monday February 13 |
Docker and docker-compose Examples and Testing |
|
Wednesday February 15 |
CRUD and REST API - Slides |
|
Friday February 17 |
Testing APIs and docker examples |
Homework 2 | ||
Week 4 | ||
Monday, February 20 @ 9:00 AM HW1 Learning Objective Expected Deadline | ||
Monday February 20 |
Front End Development - HTML/CSS + JavaScript - Slides |
|
Wednesday February 22 |
HTTP POST and Forms - Slides |
|
Friday February 24 |
HTTP POST - File Uploads - Slides |
|
Friday, February 24 @ 11:59pm Team Formation Due | ||
Week 5 | ||
Monday, February 27 @ 9:00 AM HW1 Actual Deadline | ||
Monday February 27 |
HTML Templates - Slides |
|
Wednesday March 1 |
Buffers - Slides |
|
Friday March 3 |
HTML Injection Attacks - Slides |
|
Week 6 | ||
Monday March 6 |
AJAX and Polling - Slides |
|
Wednesday March 8 |
XSRF - Slides |
|
Friday March 10 |
Browser Extensions |
Homework 3 | ||
Week 7 | ||
Monday, March 13 @ 9:00am HW2 Learning Objective Expected Deadline | ||
Monday March 13 |
WebSocket Handshake - Slides |
|
Wednesday March 15 |
WebSocket Frames - Slides |
|
Friday March 17 |
WebSocket Examples |
|
Spring Break! | ||
Monday March 20 |
No Class |
|
Wednesday March 22 |
Rest and Relax |
|
Friday March 24 |
Mental Health Day |
|
Week 8 | ||
Monday, March 27 @ 9:00am HW2 Actual Deadline | ||
Monday March 27 |
WebRTC Overview - Slides |
|
Wednesday March 29 |
WebRTC Details - Slides |
|
Friday March 31 |
WebRTC Demos |
|
Week 9 | ||
Monday April 3 |
Examples and Architecture |
|
Wednesday April 5 |
Examples and Architecture |
|
Friday April 7 |
Examples and Architecture |
Homework 4 | ||
Week 10 | ||
Monday, April 10 @ 9:00am HW3 Learning Objective Expected Deadline | ||
Monday April 10 |
Cookies - Slides |
|
Wednesday April 12 |
Authentication and Secure Password Storage - Slides |
|
Friday April 14 |
Authentication Tokens and Sessions - Slides |
|
Friday, April 14 @ 11:59pm Team Project Reports Checkpoint | ||
Week 11 | ||
Monday, April 17 @ 9:00am HW3 Actual Deadline | ||
Monday April 17 |
Encryption - Slides |
|
Wednesday April 19 |
HTTPS - Slides |
|
Friday April 21 |
Reverse Proxy Servers |
|
Week 12 | ||
Monday April 24 |
Deployment with docker-compose |
|
Wednesday April 26 |
Deployment with docker-compose |
|
Wednesday, April 26 @ 11:59pm Deadline to sign up for a presentation time | ||
Friday April 28 |
Deployment with docker-compose and certbot |
Week 13 | ||
Monday, May 1 @ 9:00am HW4 Learning Objective Expected Deadline | ||
Monday May 1 |
Review |
|
Wednesday May 3 |
Review |
|
Friday May 5 |
Review |
|
Week 14 | ||
Monday, May 8 @ 9:00am HW4 Actual Deadline | ||
Monday May 8 |
Project Presentations
|
|
Wednesday May 10 |
Project Presentations
|
|
Friday May 12 |
Project Presentations
|
|
Friday, May 12 @ 11:59pm Project Deadline | ||
Friday May 19 |
Project Presentations
|