# Foundations

- [Introduction](/topics/foundations/introduction.md): This section intentionally covers a very broad range of topics. It's silly to go diving straight into programming without having a context for what it is and why it's useful.
- [Becoming a web developer](/topics/foundations/introduction/becoming-a-web-developer.md): Web development could be a good profession for you if you like solving logical problems, building useful things, and experimenting with new technologies.
- [Motivation and mindset](/topics/foundations/introduction/motivation-and-mindset.md): In this course, "Foundations" you'll take a journey through the entire spectrum of topics that you will eventually need to know.
- [Join a supportive community](/topics/foundations/introduction/join-a-supportive-community.md): Learning web development will be a long and arduous journey, but you can make the marathon a lot more fun by pairing up with others.
- [How does the web work?](/topics/foundations/introduction/how-does-the-web-work.md): Before you can understand how to program the web, you need a more rigorous understanding of the web itself than you likely have now.
- [Requirements](/topics/foundations/requirements.md): Having the experience of setting up a development environment to run the code you'll write is an invaluable, real-world skill you'll carry with you for the rest of your career.
- [Prerequisites](/topics/foundations/requirements/prerequisites.md): This curriculum only supports using a laptop, desktop or supported Chromebook. We cannot help you set up a developer environment on a RaspberryPi or any other device.
- [Text editors](/topics/foundations/requirements/text-editors.md): You can think of code editors as specialized web development tools. They are highly customizable and offer many features that will make your life easier.
- [Command line basics](/topics/foundations/requirements/command-line-basics.md): The command line is like our base of operations, from which we can launch other programs and interact with them.
- [Setting up Git](/topics/foundations/requirements/setting-up-git.md): Git is like an epic save button that can keep track of all of the things you and others are working on.
- [Setting up Node](/topics/foundations/requirements/setting-up-node.md): Node allows you to run JavaScript outside of your web browser, enabling you to build all kinds of applications.
- [Git](/topics/foundations/git.md): Git is a very popular version control system. You'll become very familiar with this piece of software throughout the curriculum.
- [Git basics](/topics/foundations/git/git-basics.md): This is a reference list of the most commonly used Git commands. Try to familiarize yourself with the commands so that you can eventually remember them all.
- [Project: Practicing Git](/topics/foundations/git/project-practicing-git.md): Walk through the basic Git workflow that you will use in all your projects.
- [Frontend](/topics/foundations/frontend.md): A frontend developer works between a designer on one end and a backend developer on the other, translating the design into code and plugging the data from the back-end into the right spots.
- [HTML and CSS](/topics/foundations/frontend/html-and-css.md): HTML codifies the structure and format of a page. CSS codifies the style to determine what it will look like.
- [Developer Tools](/topics/foundations/frontend/developer-tools.md): Developer tools provide you with an incredibly powerful assortment of useful tools that will save you a lot of frustration and time as you develop your own websites.
- [Project: Create a web page](/topics/foundations/frontend/project-create-a-web-page.md): Build a basic web page to learn how elements get placed on the page, and how they get styled and aligned.
- [JavaScript](/topics/foundations/javascript.md): Learn the basics about variables and frequently used operators in JavaScript.
- [Strings and Conditionals](/topics/foundations/javascript/strings-and-conditionals.md): Learn the basics about strings, booleans and conditionals in JavaScript.
- [Using Developer Tools](/topics/foundations/javascript/using-developer-tools.md): Developer tools save you lots of time by helping you debug and analyze the effects of code in relation to web pages.
- [Functions](/topics/foundations/javascript/functions.md): Functions bundle code into reusable chunks that can be utilized throughout an application.
- [Problem solving](/topics/foundations/javascript/problem-solving.md): The best way to improve your problem solving ability is by building experience by making lots of programs. The more practice you have the better you'll be prepared to solve real world problems.
- [Project: Rock paper scissors](/topics/foundations/javascript/project-rock-paper-scissors.md): Make a basic version of the classic game, "Rock, Paper, Scissors"  with JavaScript.
- [Writing clean code](/topics/foundations/javascript/writing-clean-code.md): There are many different opinions on what constitutes great JavaScript code, but there are several things you can do to ensure that yours is hopefully easy for others to read.
- [Arrays and Loops](/topics/foundations/javascript/arrays-and-loops.md): Learn the basics about arrays and loops in JavaScript.
- [The DOM](/topics/foundations/javascript/the-dom.md): The Document Object Model is a tree-like representation of the contents on a webpage or document.
- [Project: Etch-A-Sketch](/topics/foundations/javascript/project-etch-a-sketch.md): Make a basic version of the classic "Etch-A-Sketch" toy with JavaScript.
- [Objects and More Arrays](/topics/foundations/javascript/objects-and-more-arrays.md): Learn the basics about objects and more detailed ways to leverage arrays in JavaScript.
- [Project: Calculator](/topics/foundations/javascript/project-calculator.md): Make a calculator with JavaScript.
- [Backend](/topics/foundations/backend.md): The backend is the server side of a web application.
- [Frameworks](/topics/foundations/backend/frameworks.md): Frameworks help prevent repetition and provide great organization. They tend to force you to organize your files and code in a way that keeps it highly modular and really clean.
- [Next steps](/topics/foundations/next-steps.md): With what you now know you could start putting together some basic websites, but we're here to help you get a lot further than that!
