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:
Your final grade will be determined by the following percentages:
Your final letter grade will be determined by the following cutoffs:
|90% - 93%||A-|
|87% - 90%||B+|
|84% - 87%||B|
|80% - 84%||B-|
|77% - 80%||C+|
|74% - 77%||C|
|70% - 74%||C-|
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:
UB Academic Integrity Policy:
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:
For the homework in this course you will develop a web server from scratch that is divided into 5 assignments. Each assignment will add more features to your server. Each assignment will be equally weighted.
Each assignment will be a programming/development assignment with a submission of your software and documentation on AutoLab, though there will be 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:
Your homework must be accompanied by report in the root directory of your zip file names "report.txt". This report will serve as documentation for the course staff to understand your code during grading and you will expand this file for each of the 5 submissions. Your reports must include:
Since each homework submission builds on the previous submissions you will find yourself working on past assignments if you were not able to complete them on time. To compensate for this, your can earn back half of points you missed on each assignment if you complete the assignment before the next HW's due date. For HW5, the makeup deadline is 2 weeks after the original deadline.
Example: You earn a 60% on HW2 at the time of it's deadline. Before the HW3 deadline you are able to complete enough of HW2 to earn a 90% on it. You then recover half of the missed points that you completed and your final HW2 grade becomes a 75%.
You'll work in teams of 4 to create a web app of your own design which must include:
You will also create a video presentation showing off your project at the end of the semester.
All scheduled recitation sections are cancelled and replaced with team meetings which will start on week 3 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.Team Meeting Form
Meeting submissions and peer evaluations will be used to adjust individual grades at the discretion of the course staff. The average individual score for a team will equal the team score for each phase (ie. An entire team will not be penalized based on meetings and evaluations). Individual grade adjustments will never result in a score > 100%.
The entire project is due after the last day of classes. However, your team is allowed to use 2 project checkpoints during the semester. When a checkpoint is used, the course staff will review your project and provide feedback on your progress. Checkpoints will follow these guidelines
Specific requirements for the project and presentation, will be linked here.
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, Apache, Nginx, Socket.io, etc. However, any time you use technology that was not developed by your team you must provide a report for that technology.
Report: For each technology used in your project that would not be allowed for a homework assignment, your team must submit a technical report explaining what it accomplishes, how it works, and the licenses involved. In addition to the report, every team member who helped develop the part of the project using a specific technology must be prepared to answer questions about it at all times.
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 allowed 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.
A report must be included in your repository for each library/framework used in your project. If any reports are missing, inadequate, or a team member who developed with a technology fails to answer questions about it 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.
Project grading is divided as follows:
Security: If there are any security issues with your project that have been covered in lecture, your project grade may be changed to 0 at the discretion of the course staff and depending on the severity of the security vulnerability.
|Monday, February 1||
|Wednesday, February 3|
|Friday, February 5|
|Monday, February 8|
|Wednesday, February 10|
|Friday, February 12||
Docker and HTTP Examples
|Friday, February 12 Team Formation Due|
|Monday, February 15|
|Wednesday, February 17|
|Friday, February 19|
|Friday, February 19 @ 11:59pm HW1 Due|
|Monday, February 22||
HTTP - Encodings and serving files
|Wednesday, February 24|
|Friday, February 26||
HTTP - Examples
|Monday, March 1||
|Wednesday, March 3|
|Friday, March 5||
|Friday, March 5 @ 11:59pm HW2 Due|
|Monday, March 8|
|Wednesday, March 10||
|Friday, March 12|
|Monday, March 15||
|Wednesday, March 17||
|Friday, March 19||
|Monday, March 22|
|Wednesday, March 24|
|Friday, March 26||
WebSocket Examples and Help
|Friday, March 26 @ 11:59pm HW3 Due|
|Friday, March 26 Last day to submit first project checkpoint if you want to use both checkpoints|
|Monday, March 29||
WebSocket Examples and Help
|Wednesday, March 31|
|Friday, April 2||
|Monday, April 5||
|Wednesday, April 7|
|Friday, April 9||
|Friday, April 9 @ 11:59pm HW4 Due|
|Monday, April 12|
|Wednesday, April 14||
|Friday, April 16||
|Monday, April 19|
|Wednesday, April 21|
|Wednesday, April 21 Last day to submit a project checkpoint|
|Friday, April 23|
|Friday, April 23 @ 11:59pm HW5 Due|
|Monday, April 26|
|Wednesday, April 28||
Web App Architecture and Examples
|Friday, April 30||
Web App Architecture and Examples
|Monday, May 3||
|Wednesday, May 5||
|Friday, May 7||
|Friday, May 7 @ 11:59pm HW5 Half Credit Deadline|
|Friday, May 7 @ 11:59pm Last Project Checkpoint|
|Friday, May 14 @ 11:00AM Project Video Due|