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:
Starting on week 2, 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. Do not expect any leniency, or addition chances to pass, if you regularly skip recitation.
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 |
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 |
---|---|
21-24 | A |
19-20 | A- |
17-18 | B+ |
15-16 | B |
13-14 | B- |
11-12 | C+ |
9-10 | C |
7-8 | C- |
4-6 | D+ |
0-3 | D |
You can earn application objectives to improve your grade in this 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 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:
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.
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.
You will present your project at the end of the semester:
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:
Recitation: No Recitation | ||
Wednesday January 24 |
Course Introduction |
|
Friday January 26 |
TCP/IP - Slides |
Homework 1: HTTP | ||
Recitation: Yes Recitation | ||
Monday February 5 |
HTTP - Static Files, MIME Types, and Encodings - Slides |
|
Wednesday February 7 |
Cookies - Slides |
|
Friday February 9 |
HTTP POST, Forms, and AJAX - Slides |
Homework 2: Authentication | ||
Project Part 1 | ||
Recitation: Yes Recitation | ||
Monday February 19 |
Authentication and Secure Password Storage - Slides |
|
Wednesday February 21 |
Authentication Tokens and Sessions - Slides |
|
Friday February 23 |
XSRF - Slides |
Homework 3: Media Uploads | ||
Recitation: Yes Recitation | ||
Monday March 4 |
Multipart and File Uploads - Slides |
|
Wednesday March 6 |
Multipart and File Uploads |
|
Friday March 8 |
Buffering HTTP Requests - Slides |
Recitation: No Recitation | ||
Monday March 18 |
No Lecture |
|
Wednesday March 20 |
No Lecture |
|
Friday March 22 |
No Lecture |
Homework 4: WebSockets | ||
Project Part 2 | ||
Recitation: Yes Recitation | ||
Monday, March 25 @ 9:00 AM Project Part 1: Deadline |
||
Monday March 25 |
WebSocket Handshake - Slides |
|
Wednesday March 27 |
WebSocket Frames - Slides |
|
Friday March 29 |
Testing WebSocket and Buffering - Slides |
Homework 5: HTTPS | ||
Recitation: Yes Recitation | ||
Monday April 8 |
Eclipse Day (No lecture or recitation) |
|
Wednesday April 10 |
Encryption - Slides |
|
Friday April 12 |
HTTPS - Slides |
Project Part 3 | ||
Recitation: Yes Recitation | ||
Monday, April 15 @ 9:00 AM Last Day to Sign up for a Presentation Time: Deadline |
||
Monday, April 15 @ 9:00 AM Homework 4: Expected Deadline |
||
Monday, April 15 @ 9:00 AM Homework 3: Final Deadline |
||
Monday April 15 |
Reverse Proxy Servers - Nginx - Slides |
|
Wednesday April 17 |
Deployment |
|
Friday April 19 |
DoS and DDoS - Slides |
Project Presentation | ||
Recitation: Yes Recitation | ||
Monday, April 22 @ 9:00 AM Project Part 2: Deadline |
||
Monday April 22 |
Presentations2pm
4pm
|
|
Wednesday April 24 |
Presentations2pm
4pm
|
|
Friday April 26 |
Presentations2pm
4pm
|
Recitation: Yes Recitation | ||
Monday, April 29 @ 9:00 AM Homework 5: Deadline |
||
Monday, April 29 @ 9:00 AM Homework 4: Final Deadline |
||
Monday April 29 |
Presentations2pm
4pm
|
|
Wednesday May 1 |
Presentations2pm
4pm
|
|
Friday May 3 |
Presentations2pm
4pm
|
Recitation: No Recitation | ||
Monday, May 6 @ 9:00 AM Project Part 3: Deadline |
||
Monday May 6 |
Presentations2pm
4pm
|