About This Unit
This curriculum module was built to be Unit 2 of LaunchCode's LC101 course, though it may be learned independently assuming you have the prerequisite knowledge (see below).
How does a web application work?
The goal of this unit is to give you a high-level overview of what is going on behind the scenes when you interact with a web application like Facebook or launchcode.org. Making the magic happen requires a large "stack" of technologies and programming languages working in tandem and communicating with each other. Some of these operations occur on separate physical computers - potentially in different parts of the world. We will touch briefly on many of the most fundamental pieces of this dance, including:
- The back-end vs the front-end
- Templating systems
- Databases and languages for querying them
- The Model-View-Controller design pattern
- A lot more!
We will use Python 3 and the Flask web application framework to explore these concepts. Our goal is that by the end of the unit you will be able to build an entire web app yourself.
You will also learn how to use a version control system (VCS)--essentially a sophisticated way of saving your work and collaborating with other developers--which pretty much every professional programmer uses. You will submit all your assignments using a VCS called Git.
The curriculum for this unit uses a mixture of resources. Each activity or resource (prep work, cheatsheets, studios, assignments) has been prepared to fulfill a specific role in your learning process. Understanding the what and why of these different tools will help you get the most out of them.
In-class lessons and activities will assume that you have completed all of the prep work. If you skim or skip the prep work, you will find it difficult to participate in the in-class activities and the assignments will seem more difficult than they are intended to be.
LaunchCode video lessons from the LaunchCode YouTube channel will make up a large amount of prep work. When watching these lessons, code along with the videos to reproduce the applications that the instructor builds. Not only is this essential to fully learning these new concepts, but some assignments will rely on code that you have written while completing these lessons.
Articles and tutorials supplement the video content. Each article or tutorial covers material of varying importance and difficulty. Read the associated notes on the prep work pages to understand what you should take away from each resource.
Many classes will feature studios. Studios are intended to reinforce new concepts and give you hands-on practice with them in the supportive, collaborative classroom environment. Studios begin with a walkthrough led by an instructor or teaching assistant that will introduce and give context to new concepts.
As LC101 progresses, concepts will become increasingly more difficult, and learning them to the extent necessary for you to complete the assignments will require repeated exposure and practice. Studios are an important component of this solidification process.
Cheatsheets attempt to consolidate large amounts of information into accessible references. They often serve as "glue" between the different resources of the course. If you have a suggestion for how these can be improved, or for new cheatsheets that might be added, let us know!
Assignments are the summit of your learning path for a given set of concepts. They are where you demonstrate that you understand and can independently utilize the concepts you've learned. The end-goal of LC101 is for you to be able to build your own projects from scratch, understanding each of the elements necessary to do so. To that end, assignments increase gradually in difficulty, and in the level of independence and problem solving required to complete them.
The learning objectives for each class are listed on the Objectives sheet. These will help you check your progress and make sure you are developing the skills and learning the concepts the class aims to impart.
This curriculum assumes you have a solid foundation of procedural programming in Python, including a thorough understanding of:
- Variables, data types, and values
- Control structures: loops and conditionals
- Data structures, including lists and dictionaries
- Classes and objects, including inheritance