Approx. 3 months
Try to picture yourself sitting down with your computer, ready to start developing a fully functional web application for the first time, available online for millions to use. “Where should I even begin? How long is this going to take me? Am I making any mistakes along the way?” The questions may leave you with an uneasy feeling that you will learn many lessons the hard way.
In this intermediate course, Steve Huffman will teach you everything he wished he knew when he started building Reddit and, more recently, Hipmunk, as a lead engineer. Starting from the basics of how the web works, this course will walk you through core web development concepts such as how internet and browsers fit together, form validations, databases, APIs, integrating with other websites, scaling issues, and more; all of which form part of the knowledge it takes to build a web application of your own.
By taking this course, you will embark on a digital adventure to build your very own application live on the web. Valuable lessons often come from experience, and it’s from this experience that Steve brings a fresh perspective to the classroom to show you how to approach building your web application in a way that assuages the potential challenges you may face. In this course, you will learn by doing. Once you dive into the course experience, you will work on awesome projects:
Have you ever thought about what it takes to build a blog from the ground up? Over the course of six lessons, you will build a blog together with Steve that will be fully functional, online, for anybody to read by the end of the course.
Have you ever wondered how a wiki works? As a final project for this course, you will be able to take all of your newly gained knowledge and apply it to build a complete wiki.
This course concentrates on back-end development, but regardless if you are interested in front-end development, back-end development, or anywhere in between the stack, this course will teach you the fundamental knowledge you need break into the web development world. Are you ready to dive in?
In order to take the full advantage of this course, we want you to be well prepared for it. This course assumes an intermediate proficiency programming with Python, as well as a solid knowledge on the following topics:
See the Technology Requirements for using Udacity.
Make a webpage that anyone can add to and edit.
In this first lesson, you will learn basic concepts regarding the internet, browsers, HTML, and how all those elements fit together. You’ll start using HTML (HyperText Markup Language) to format content for webpages. Then you’ll get to see the mechanics of how the web works: HyperText Transfer Protocol (HTTP) via GET and POST requests. In the first problem set, you will get a simple website up and running with the Google App Engine platform.
In this second lesson you will learn about forms, a very common way to obtain input from users. You will learn how to get and process user input from webpages using Google App Engine to get a live form up and running. By the end of this lesson, you will know how to validate user input and securely obtain data from users.
You learned about getting all sorts of information from users in the previous lesson, but what do you do with it once it’s in your hands? You store it! In this third lesson, Steve will dive in and teach you what you need to know about databases, the final piece you need to start setting your blog in motion! You will learn about various database technologies, SQL, and the Google App Engine Datastore.
Up until now, your programs have generated HTML that a browser can use to render a web page for the user. In the digital world, however, applications and websites communicate not only with people, but also with other applications and websites. By the end of this lesson, your blog will communicate with humans as well as with other computers. Your web application can generate data in formats such as XML and JSON that other computers can access through an API, or application programming interface. Those computers, in turn, can build websites or services that interact with your data. You’ll first learn how to use APIs, and then build web applications as services so that other computers can glean data from your application. We will look at both XML and JSON by investigating how to read them, how to interpret them, and how to manipulate them.
In this lesson, we will explore how to prepare your applications to run at a large scale. So far, we’ve written ‘toy’ applications for just one or two users. If we want to start writing apps for thousands or, perhaps, even millions of users, then obviously we’ll need to think about scaling. When we talk about scaling, this may mean running your application on multiple machines, storing huge amounts of data, or consuming large amounts of bandwidth. In particular, we will learn about caching, including the uses of caching, why you might want to cache, and specific caching implementations such as Memcached.
In this last lesson of the course, Steve has prepared a relaxing, story-time segment. You will hear web development anecdotes from people who have been through it all. You will enjoy interviews with engineer Neil Williams from Reddit, and engineer Chris Chew from Udacity. They will share their experiences on working with web applications, and you will see how all that you’ve learned in this course comes into the big picture.
For the final project, you will build a fully functional wiki - a website that allows any page to be edited. The wiki you will be able to build by the end of the course will feature the following:
Steve Huffman co-founded the social news site reddit.com in 2005 with his college roommate. reddit.com has since grown into one of the largest communities online. In 2010, he co-founded Hipmunk, a company to take the agony out of searching for plane and hotel tickets. Steve was named to Inc. Magazine’s 30 under 30 list in 2011. He studied Computer Science at the University of Virginia.
This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course.
This class will always be available!
Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. If you want to know more, just enroll in the course and start exploring.
Yes! The point is for you to learn what YOU need (or want) to learn. If you already know something, feel free to skip ahead. If you ever find that you’re confused, you can always go back and watch something that you skipped.
Collaboration is a great way to learn. You should do it! The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them.
Udacity classes are a little different from traditional courses. We intersperse our video segments with interactive questions. There are many reasons for including these questions: to get you thinking, to check your understanding, for fun, etc… But really, they are there to help you learn. They are NOT there to evaluate your intelligence, so try not to let them stress you out.
Learn actively! You will retain more of what you learn if you take notes, draw diagrams, make notecards, and actively try to make sense of the material.