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