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 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.
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 |
---|---|
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 |
You can earn application objectives to improve your grade in this course. You will have the following opportunities to complete application objectives.
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:
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.
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:
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 |
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 |
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 |
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 |
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 |
Homework 5: HTTPS | ||
Recitation: Yes Recitation | ||
Monday November 11 |
Testing |
|
Wednesday November 13 |
Encryption - Slides |
|
Friday November 15 |
HTTPS - Slides |
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 |
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 |
Project Presentation | ||
Recitation: Yes Recitation | ||
Monday, December 2 @ 9:00 AM Project Part 2: Deadline |
||
Monday December 2 |
Presentations
|
|
Wednesday December 4 |
Presentations
|
|
Friday December 6 |
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
|
|
Friday December 13 @ 3:30 - 6:30 PM in Davis 101 |
Presentations (During Final Exam Time)
|