Networked Applications with Python


This course will cover server side development from first principles. We'll build on your knowledge of HTTP and the request/response cycle to create a dynamic web application from scratch, before moving on to build some more complex applications using a lightweight development framework. We'll also talk about other development considerations such as deployment and security, and deploy an application to Heroku.

Major Topics

  • HTML and CSS Basics
  • Handling HTTP Requests in an Application
  • Persisting State Between Request/Response Cycles
  • WSGI
  • Flask
  • Routes and Route Parameters
  • Templates and Layouts
  • Static Files
  • Template Filters
  • Redirection
  • Cookies
  • Flash Messages
  • Validations
  • Confirmation Dialogs
  • Deploying Your Application
  • Working With Files
  • Testing Web Applications
  • Authentication and Security
  • Optional Projects


Programming and Back-end Development

Detailed Syllabus

Introduction and Prerequisites

  • Setting Up Your Environment
  • HTML and CSS

Handling Requests Manually

  • A Simple Echo Server
  • Parsing Path and Parameters
  • Sending an HTML Response
  • Persisting State in the URL

Working with Flask

  • WSGI
  • Flask Documentation
  • Preparations
  • Understanding Flask Web Application Structure
  • How Routes Work
  • Rendering Templates
  • Using url_for` for Static Files
  • Adding a Table of Contents
  • Adding a Chapter Page
  • Using Layouts
  • Route Parameters
  • Before Request
  • Template Filters
  • Redirecting
  • Adding a Search Form
  • Improving Search
  • Code Challenge: Users and Interests
  • Server-side vs. Client-side Code

Project: Todos

  • The Home Page
  • Display All Todo Lists
  • Add a New Todo List
  • What is State?
  • Clearing Cookies
  • Flash Messages
  • Validations
  • Refactoring Validations
  • When to Use Validations
  • Display a Single Todo List
  • Creating New Todos
  • Editing Todos
  • Editing a Todo List
  • Todos Remaining Count and List Completion
  • Sort the Todo Lists and the Todos
  • Removing Code Duplication
  • Confirmation Dialogs
  • Deploying to Render

Project: File-based CMS

  • Getting Started
  • Adding an Index Page
  • Viewing Text Files
  • Adding Tests
  • Handling Requests for Nonexistent Document
  • Viewing Markdown Files
  • Editing Document Content
  • Isolating Test Execution
  • Adding Global Style and Behavior
  • Creating New Documents
  • Deleting Documents
  • Signing In and Out
  • Creating a Function Decorator in Python
  • Restricting Actions to Only Signed-in Users
  • Storing User Accounts in an External File
  • Storing Hashed Passwords

Optional Projects

  • Information about the Back-End Assessment
  • Project Ideas