Building Secure Web Applications with Python and Flask

This course is an introduction to building secure, full-stack web applications with Python and Flask.
We'll start with Python and Flask, and then subsequent weeks will cover how to add Flask extensions
to your applications to implement common web app functionalities, how to protect your website from bad
actors, and more! At the end of the course, you'll be able to deploy your own web app for the world to see.
Lectures: Online via zoom (see link in ELMS), Fridays 1:00pm
Instructors: Dhanvee Ivaturi, Nikolay Pomytkin
View the Syllabus here for more details
Schedule
This is the current schedule for the class. More details can be found on the syllabus. Of course, the schedule is subject to change as the semester goes on.
Week # | Date | Topic | Assignment | Links |
---|---|---|---|---|
1 | 01/29 | Course Details, Intro to Python | P1 assigned (Python practice), Q1 assigned | |
2 | 02/05 | Flask Intro | P1 due, P2 assigned (First Flask App). Q1 due, Q2 assigned | |
3 | 02/12 | Forms, CSRF | Q2 due, Q3 assigned | |
4 | 02/19 | Databases & Injection Attacks | P2 due, P3 assigned. Q3 due, Q4 assigned | |
5 | 02/26 | User Management | Q4 due, Q5 assigned | |
6 | 03/05 | Bootstrap & more | P3 due, P4 assigned, Q5 due, Q6 assigned | |
7 | 03/12 | CSS/React/API Design | Q6 due, Q7 assigned | |
8 | 03/19 | Spring Break | P4 due, Q7 due | |
(more weeks available on syllabus) |
Projects
Projects will be posted here as the semester goes on. More details can be found on the syllabus. Projects will be distributed via github, and will be submitted via ELMS. We recomment checking out the whole "cmsc388j-spring21" repository so that you can run `git pull` to get new projects.
# | Topic | Due | Late Deadline | Link |
---|---|---|---|---|
1 | Python practice | 02/04 11:59 PM ET | 02/08 11:59 PM ET | github |
2 | First Flask app - Poke-Info | 02/18 11:59 PM ET | 02/22 11:59 PM ET | github |
3 | Movie Ratings Database | 03/7 11:59 PM ET | 03/7 11:59 PM ET | github |
4 | Movie Ratings Database Pro | 03/22 11:59 PM ET | 03/25 11:59 PM ET | github |
Course Details
ELMS will be used for project submissions.
Piazza will be used for course communication.
Please use Piazza as your primary communication with the course staff,
we'll get back to you the quickest on Piazza. If you absolutely cannot
use Piazza, then email us; if you are emailing Nikolay or Dhanvee, make
sure to CC the other. Additionally, please include [CMSC 388J] at the
start of your subject line so we don't accidentally ignore your email.
Course Instructors:
Nikolay Pomytkin: pomytkin [AT] cs.umd.edu
Dhanvee Ivaturi: dhanvee [AT] cs.umd.edu
Faculty Sponsor:
Micheal Marsh: mmarsh [AT] umd.edu
More Info
Course Evaluations
If you have a suggestion for improving this class, don't hesitate to tell the instructor or TAs during the semester. At the end of the semester, please don't forget to provide your feedback using the campus-wide CourseEvalUM system. Your comments will help make this class better.
Excused Absence and Academic Accommodations
See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.
Disability Support Accommodations
See the section titled "Accessibility" available at Course Related Policies.
Academic Integrity
Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct.
It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu.