NANODEGREE PROGR AM SYLL ABUS
Full Stack Web
Developer
Overview
The goal of the Full Stack Web Developer Nanodegree program is to equip learners with the unique skills
they need to build database-backed APIs and web applications. A graduate of this program will be able to:
• Design and build a database for a software application
• Create and deploy a database-backed web API (Application Programming Interface)
• Secure and manage user authentication and access control for an application backend
• Deploy a Flask-based web application to the cloud using Docker and Kubernetes
This program includes 4 courses and 5 projects. Each project you build will be an opportunity to
apply what you’ve learned in the lessons and demonstrate to potential employers that you have practical
full-stack development skills.
Estimated Time: Prerequisites:
4 Months at Prior experience
5-10hrs/week with Python, CSS/
HTML, and Git
Technical Mentor
Flexible Learning:
Support:
Self-paced, so
Our knowledgeable
you can learn on
mentors guide your
the schedule that
learning and are
works best for you
focused on answering
your questions,
motivating you and
keeping you on track
Full Stack Web Developer | 2
Course 1: SQL and Data Modeling for the Web
Master relational databases with the power of SQL, and leverage Python to incorporate database logic into your
programs.
For your first project, you’ll be building out the data models and
database for an artist/venue booking application. The fictitious
startup Fy-yur is building a website that facilitates bookings between
artists who can play at venues, and venues who want to book artists.
This site:
• Lets venue managers and artists sign up, fill out their
information, and list their availability for shows.
Course Project • Lets artists browse venues where they can play, and see what
past/upcoming artists have been booked at a venue.
Design a Venue Booking • Lets a venue manager browse artists that would like to play in
Database their city, and see what past/upcoming venues where the artist
has played/will be playing.
The goal of this project is to build out the data models for this
booking application. A prototype design of the web app will be
provided. You’ll use SQLAlchemy and Postgresql to build out the
data models upon which this site will rely. You’ll write out both the
raw SQL and SQLAlchemy commands to run for powering
the backend functionality of the website.
LEARNING OUTCOMES
• Describe and explain the client-server model
• Describe and explain the TCP/IP communication protocol
• Describe and explain the base unit of database work:
Connecting and transactions
LESSON ONE Interacting • Install the PostgreSQL database management system
with Databases • Create and manage Postgres databases with the psql client
• Install the psycopg2 Python+Postgres database driver
• Create and manage Postgres databases using the psycopg2
Python database driver
Full Stack Web Developer | 3
• Describe and explain the use cases for an Object Relational
Mapping (ORM) library
• Describe and explain the abstraction layers of SQLAlchemy
Intro to SQLAlchemy
• Connect to and manage a database using composable SQL
and
LESSON TWO expressions
SQLAlchemy ORM
• Define data model objects with Python using SQLAlchemy
Basics
ORM
• Connect data models to a lightweight Flask web application
• Build data models using different types of data
• Explore and retrieve data using the SQLAlchemy Model.
query object
• Create database sessions for executing database
transactions
• Execute database transactions within a connection session
• Describe and explain the SQLAlchemy object lifecycle
• Build a lightweight data app using SQLAlchemy
SQLAlchemy ORM in • Describe and explain the Model-View-Controller (MVC)
LESSON THREE
Depth application architecture
• Retrieve from data from a webform using Flask
• Update data models using data migrations
• Migrate data using Flask-Migrate and Flask-Script
• Define and code relationships between tables and objects
using SQLAlchemy
• Implement database methods to query relationships
between data models
• Use the CRUD (Create, Read, Update, Delete) model to build
Build a CRUD App a small database backed app
with • Capture user input from a webform to add and modify data
LESSON FOUR
SQLAlchemy ORM - to a database
Part 1 • Manage data using database sessions in an application
controller
• Modify a data schema using Flask-Migrate and Alembic
LESSON FIVE Migrations • Write migration scripts to update data schemas using Flask-
Script
• Update database models using webforms and application
routing
Build a CRUD App • Delete information from a database using SQLAlchemy
with • Model and control relationships between different types of
LESSON SIX
SQLAlchemy ORM - data objects
Part 2 • Implement one-to-many and many-to-many relationships
using SQLAlchemy
• Execute complex database queries on related data models
Full Stack Web Developer | 4
Course 2: API Development and Documentation
Learn how to use APIs to control and manage web applications, including best practices for API testing and
documentation.
In this project, you will use the skills you’ve developed to build a
Trivia API. The API will allow users to:
• Search for trivia questions and answers via category and
Course Project: difficulty
• Add new questions
Trivia API • Modify the difficulty rating of questions.
The goal of this project is to use APIs to control and manage a web
application using existing data models. You’ll be given a set of data
models and the application front end. Your task will be to implement
the API in Flask to make the Trivia game functional.
LEARNING OUTCOMES
• Describe and explain the definition and use cases of APIs
Introduction to (Application Programming Interface)
LESSON ONE
APIs • Describe and explain how APIs are used to connect application
front ends to server backends
• Describe and explain the Hypertext Transfer Protocol (HTTP)
• Describe and explain the components of an HTTP request
• Describe and explain the different HTTP methods (verbs)
• Describe and explain HTTP status codes
HTTP and Flask
LESSON TWO • Request information from a server using cURL and HTTP
Basics
requests
• Install the Python Flask micro application framework
• Set up and Configure a Flask application
• Create a Flask endpoint (route)
Full Stack Web Developer | 5
• Structure and Organize API Endpoints
• Describe and explain Cross-Origin Resource Sharing (CORS)
• Manage CORS requests using HTTP headers
Endpoints and • Manage CORS controls using Flask-CORS
LESSON THREE
Payloads • Parse request path and body from an HTTP request
• Implement HTTP POST, PATCH and DELETE methods using
Flask
• Handle application errors using Flask
• Describe and explain the purpose and benefits of API testing
• Test a REST API using Flask and unittest
LESSON FOUR API Testing
• Develop an application iteratively and safely using Test Driven
Development (TDD)
• Read and explore API documentation from a number of API
LESSON FIVE API Documentation developers
• Write effective documentation for your own API
Full Stack Web Developer | 6
Course 3: Identity Access Management
Implement authentication and authorization in Flask and understand how to design against key security
principle. You will also gain experience with role-based control design patterns, securing a REST API, and
applying software system risk and compliance principles.
In the third project of the program, you will build the backend for a
coffee shop application. You’ll add user accounts and authentication
to your application and use role-based access management
strategies to control different types of user behavior in the app. The
application must:
• Display graphics representing the ratio of ingredients in each
drink.
• Allow public users to view drink names and graphics.
Course Project • Allow the shop baristas to see the recipe information.
Identity Access • Allow the shop managers to create new drinks and edit existing
drinks.
Management
This project will give you a hands-on chance to practice and
demonstrate your new skills, such as:
• Implementing authentication and authorization in Flask
• Designing against key security principles
• Implementing role-based control design patterns
• Securing a REST API
• Applying software system risk and compliance principles
LEARNING OUTCOMES
• Describe and explain the use cases and differences between
authorization and authentication
• Describe the problem of security and the risks of unsecured
LESSON ONE Foundations or improperly secured application systems
• Describe different types of security attack
• Inspect requests and responses for an application using
Postman
• Describe common methods for application authentication
• Explain why passwords are not the ideal method for
LESSON TWO Authentication authentication
• Implement an application authentication layer with Auth0
• Secure API communications using JSON Web Tokens (JWT)
Full Stack Web Developer | 7
LEARNING OUTCOMES
• Describe the risks associated with password controlled
systems
• Mitigate access risks associated with SQL injection by
validating and sanitizing database inputs
• Secure database data in a database using standard encryption
practices
LESSON ONE Passwords
• Describe how an attacker can use rainbow tables to gain
access to a system
• Improve security of hashed passwords and encrypted data
using the ‘salt’ method
• Increase application security by using best practices to avoid
logging and serializing sensitive data
• Describe the concept of authorization and access control
• Define ‘permissions’ in the context of an application
• Constrain permissions in an application by using role-based
LESSON TWO Authorization access control (RBAC)
• Define permission roles using Auth0
• Identify user permissions and roles from JWTs (JavaScript Web
Tokens)
• Prevent accidental access to privileged information in Git
repositories by using environment variables
• Mitigate risks to Git master branch changes by developing in
Thinking feature branches
LESSON THREE
Adversarially • Employ code review as a practice to mitigate security risks
• Test API and authentication practices with integration testing
• Describe common types of adversarial attacks on network
systems.
Full Stack Web Developer | 8
Course 4: Server Deployment and
Containerization
Develop an understanding of containerized environments, use Docker to share and store containers, and
deploy a Docker container to AWS Elastic Kubernetes Service using the CI/CD pipeline.
In this project, you will create a container for your Flask web app
using Docker and deploy the container to a Kubernetes cluster
Course Project using Amazon EKS. By the end of the project, you will have deployed
Deploy a Flask App to your application live to the world, where it should be accessible by
IP address. You’ll use automated testing to prevent bad code from
Kubernetes Using EKS
being deployed and monitor your app’s performance using AWS
tools.
In this final capstone project, you will combine all of the new
Course Project skills you’ve learned and developed in this course to construct a
Full Stack Web Developer database-backed web API with user access control. You will choose
what app to build and then you’ll design and build out all of the API
Nanodegree Program
endpoints needed for the application and properly secure
Capstone them for use in any front end application (web or mobile).
LEARNING OUTCOMES
• Describe and explain the benefits and use cases for
containerized environments
• Install Docker on a local machine
LESSON ONE Containers
• Define a container environment using a Dockerfile
• Download and launch a Docker container
• Store and share a docker container
Full Stack Web Developer | 9
• Introduce AWS and commonly used services, S3, EC2, and
IAM.
• Create AWS resources using both AWS console and AWS
and AWS command-line interface (CLI).
• Describe and explain container orchestration, how it
LESSON TWO AWS and Kubernetes
works, and the general use case.
• Describe and explain how Kubernetes manages container
clusters.
• Creating an EKS Cluster using AWS console and Eksctl (CLI).
• Manage Kubernetes clusters using the Kubectl (CLI).
• Deploy an application to the EKS cluster
• Use Cloudformation to create AWS resources using a YAML
Deployment using script.
LESSON THREE
CI/CD • Implement an end-to-end Continuous Integration (CI) and
Continuous Delivery (CD) pipeline using AWS CodePipeline
and AWS CodeBuild services.
Full Stack Web Developer | 10
Our Classroom Experience
REAL-WORLD PROJECTS
Build your skills through industry-relevant projects. Get
personalized feedback from our network of 900+ project
reviewers. Our simple interface makes it easy to submit
your projects as often as you need and receive unlimited
feedback on your work.
KNOWLEDGE
Find answers to your questions with Knowledge, our
proprietary wiki. Search questions asked by other students,
connect with technical mentors, and discover in real-time
how to solve the challenges that you encounter.
WORKSPACES
See your code in action. Check the output and quality of
your code by running them on workspaces that are a part
of our classroom.
QUIZZES
Check your understanding of concepts learned in the
program by answering simple and auto-graded quizzes.
Easily go back to the lessons to brush up on concepts
anytime you get an answer wrong.
CUSTOM STUDY PLANS
Create a custom study plan to suit your personal needs
and use this plan to keep track of your progress toward
your goal.
PROGRESS TRACKER
Stay on track to complete your Nanodegree program with
useful milestone reminders.
Full Stack Web Developer | 11
Learn with the Best
Amy Hua Caryn McCarthy
I N S T R U C TO R I N S T R U C TO R
Amy has 6+ years of experience as a Caryn has worked as a software developer
software professional, building everything and as Coach and Experience Manager at
from data visualizations to self-driving Code Next at Google. She is passionate
cars. She’s been a bootcamp instructor, about diversity and equity in tech, is
StartupBus mentor, and Girls Who Code always working to create positive impact
instructor. in the tech industry and the world.
Gabriel Ruttner Kennedy Behrman
I N S T R U C TO R I N S T R U C TO R
Gabe is the CTO at Ursa & Tech Advisor Kennedy is a veteran consultant and
for Start-Ups. He has expertise in building author, specializing in architecting and
cloud-based machine learning and natural implementing cloud solutions for early-
language processing services at early stage startups. He is experienced in data
stage tech companies. He holds technical engineering, data science, AWS solutions,
degrees from Cornell University and Stony and engineering management.
Brook University.
Full Stack Web Developer | 12
All Our Nanodegree Programs Include:
EXPERIENCED PROJECT REVIEWERS
REVIEWER SERVICES
• Personalized feedback & line by line code reviews
• 1600+ Reviewers with a 4.85/5 average rating
• 3 hour average project review turnaround time
• Unlimited submissions and feedback loops
• Practical tips and industry best practices
• Additional suggested resources to improve
TECHNICAL MENTOR SUPPORT
MENTORSHIP SERVICES
• Questions answered quickly by our team of
technical mentors
• 1000+ Mentors with a 4.7/5 average rating
• Support for all your technical questions
PERSONAL CAREER SERVICES
C AREER SUPPORT
• Github portfolio review
• LinkedIn profile optimization
Full Stack Web Developer | 13
Frequently Asked Questions
PROGR AM OVERVIE W
WHY SHOULD I ENROLL?
Becoming a software engineer is one of the best career moves you can
make. Udacity built this Nanodegree program with input from leaders in
the software industry to provide world-class Full Stack Web Development
instruction that features code reviews and mentorship support throughout
the program.
In the Full Stack Web Developer Nanodegree program, you will:
• Design and implement relational database systems to store and manage
application data.
• Build dynamic software application backend systems using the Python
programming language and the popular Flask application framework.
• Configure and deploy your applications to the cloud (Amazon Web
Services)
WHAT JOBS WILL THIS PROGRAM PREPARE ME FOR?
Completion of the Full Stack Web Developer Nanodegree program will give
you the tools needed to perform well in a variety of developer roles.
Some examples of job titles that align with your new skills are:
Software Engineer, Full Stack Python Application Developer, Back End
Developer, Web Application Developer
HOW DO I KNOW IF THIS PROGRAM IS RIGHT FOR ME?
As a Full Stack Web Developer, you are the go-to person that companies rely
on to build, support and maintain their web applications. Regardless of the
platform, full stack web developers are in demand by nearly every company.If
you are interested in building out the infrastructure that powers and supports
the many web, desktop, mobile and integrated applications in the world, this
program is the best way to get started.
WHAT IS THE DIFFERENCE BETWEEN THE FRONT END WEB DEVELOPER
PROGRAM AND FULL STACK WEB DEVELOPER PROGRAM?
Web development generally fits into distinct concentrations, such as front end
web development and full stack web development.
As a front end web developer, you’ll build responsive, dynamic user interfaces
on the web. You’ll leverage your HTML, CSS, and JavaScript skills to manage all
client-side scripting.
As a full stack web developer, you’ll have an active hand in implementing
relationship databases, configure and deploy your applications to the cloud,
and build dynamic software application backend systems using the Python
Full Stack Web Developer | 14
FAQs Continued
programming language.
Whichever path you choose, you’ll be building involved, engaging experiences
on the web for your users!
ENROLLMENT AND ADMISSION
DO I NEED TO APPLY? WHAT ARE THE ADMISSION CRITERIA?
No. This Nanodegree program accepts all applicants regardless of experience
and specific background.
WHAT ARE THE PREREQUISITES FOR ENROLLMENT?
Minimum Requirements:
• Beginner-level experience in Python. If you do not have this experience,
check out our Intro to Programming Nanodegree program or Intro to
Computer Science course.
• Experience building front-end web sites with HTML, CSS, and Javascript.
• Experience using Git for version control. If you do not have this
experience, check out our How to Use Git and GitHub course.
• You are self-driven and motivated to learn. Participation in this program
requires consistently meeting the deadlines, and devoting at least 10
hours per week to your work.
• You can communicate fluently and professionally in written and spoken
English.
• You have access to a computer with a broadband connection, on which
you’ll install a professional code/text editor (ie. VSCode or Atom) as well
as virtual machines (using VirtualBox and Vagrant).
• You are willing to contribute to the success of the program, including
collaborating with fellow students, and giving us feedback on how we can
improve.
Desirable Prior Experience::
• You’ve completed an object-oriented Python programming course.
• You’ve tried to build server-side applications in the past and want to
learn how to do it at a professional level.
IF I DO NOT MEET THE REQUIREMENTS TO ENROLL, WHAT SHOULD I DO?
We have a number of Nanodegree programs and free courses that can help
you prepare, including:
• Intro to Programming Nanodegree Program
• Data Structures and Algorithms Nanodegree Program
• Front End Web Developer Nanodegree Program
Full Stack Web Developer | 15
FAQs Continued
TUITION AND TERM OF PROGR AM
HOW IS THIS NANODEGREE PROGRAM STRUCTURED?
The Full Stack Web Developer Nanodegree program includes content and
curriculum to support 5 (five) projects. We estimate that most students can
complete the program in four (4) months working 5-10 hours per week.
Each project will be reviewed by the Udacity reviewer network. Feedback will
be provided and if you do not pass the project, you will be asked to resubmit
the project until it passes.
HOW LONG IS THIS NANODEGREE PROGRAM?
Access to this Nanodegree program runs for the length of time specified in
the payment card above. If you do not graduate within that time period, you
will continue learning with month to month payments. See the Terms of Use
and FAQs for other policies regarding the terms of access to our Nanodegree
programs.
SOF T WARE AND HARDWARE
WHAT SOFTWARE AND VERSIONS WILL I NEED IN THIS PROGRAM?
For this program, you will need a computer with a broadband internet
connection, capable of hardware. Note: Most consumer computers on the
market today meet these requirements. You will need administrative access
to be able to install software on your computer. This program uses Python 3.7,
PostgreSQL 11, SQLAlchemy, Flask 1.0, Docker and various Python packages.
Students will need to be able to communicate fluently and professionally in
written and spoken English.
Full Stack Web Developer | 16