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 4 learning objectives, all of which are programming objectives. Each of the 4 homework assignments contain a learning objectives section which must be completed successfully in order to pass the class.
All Learning Objectives will be autograded and Autolab will let you know if you've completed the objective. You may resubmit as many times as you'd like until you complete each Learning Objective.
Learning Objectives Completed | Grade |
---|---|
4 | Grade depends on the number of Application Objectives completed |
0-3 | F |
If you have completed all 4 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 |
---|---|
24-28 | A |
23 | A- |
22 | B+ |
20-21 | B |
18-19 | B- |
15-17 | C+ |
12-14 | C |
9-11 | C- |
0-8 | F |
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 only be automated grading for the Learning Objective portion of each assignment. You will submit all 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 sections. The project does not officially start until week 12 though you are welcome and encouraged to start much earlier
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.
The project will give you practice using the tools that you will use in the real world, unlike the homework which will show you the low-level details of how the protocols of Internet work. The following apply to the team project:
Your team will give a 10-minute presentation showing your project to the class at the end of the semester. The audience will use your live app during this presentation
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://catalogs.buffalo.edu/content.php?catoid=11&navoid=571#preamble
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:
Any student may be challenged by the course staff to explain their code. If they can not explain their code in a way that convinces the course staff that they were the author of all the code they submitted for course credit, they will be found in violation of this academic integrity policy. Please note that if you are in violation of any other part of this policy, it is still a violation even if you can explain your code (eg. If you did write the code, but helped someone else cheat)
Recitation: No Recitation | ||
Wednesday January 22 |
Course Introduction |
|
Friday January 24 |
TCP/IP - Slides |
Homework 1: HTTP | ||
Recitation: Yes Recitation - Slides | ||
Monday February 3 |
HTTP POST, Forms, and AJAX - Slides |
|
Wednesday February 5 |
Databases and HTML Templates - Slides |
|
Friday February 7 |
CRUD and REST API - Slides |
Homework 2: Authentication | ||
Recitation: Yes Recitation | ||
Monday, February 17 @ 9:00 AM Homework 1: Expected Deadline |
||
Monday February 17 |
Authentication and Secure Password Storage - Slides |
|
Wednesday February 19 |
Authentication Tokens and Sessions - Slides |
|
Friday February 21 |
XSRF - Slides |
Recitation: No Recitation | ||
Monday March 17 |
No Lecture - Spring Break |
|
Wednesday March 19 |
No Lecture - Spring Break |
|
Friday March 21 |
No Lecture - Spring Break |
Recitation: Yes Recitation | ||
Monday April 21 |
Content |
|
Wednesday April 23 |
Content |
|
Friday April 25 |
Content |
Recitation: No Recitation | ||
Monday, April 28 @ 9:00 AM Team Project Checkpoint: Deadline |
||
Monday April 28 |
Presentations |
|
Wednesday April 30 |
Presentations |
|
Friday May 2 |
Presentations |
Recitation: No Recitation | ||
Monday, May 5 @ 9:00 AM Team Project: Deadline |
||
Monday May 5 |
Presentations |
|
Monday May 12 |
Presentations (During Final Exam Time - 3:30 - 6:30 PM in Davis 101) |