The learning curve for web programming is steep due to the sheer number of technologies and methods involved, but the number of free, comprehensive resources available today to help lessen this curve is surprisingly small. This Site is our way of tackling this problem head on -- our goal is to make web development more approachable for everyone, because the more talented, creative, and skilled developers building for the Web, the better it is for everyone.
All original, non-trademarked content on this site, including graphics as well as text, is licensed
under a Creative Commons license, which permits you to freely copy the
slide sets, exercises, and code labs presented on this site for your
own use. You can tailor them to your liking and even redistribute them
free of charge in line with the terms and conditions
of the license. And because slide sets are attached to every lessen, sharing couldn't be easier.
All of the content on this Site falls into one of three categories:
- Lessons: Lessons are self-contained pages, each providing an in-depth description of a specific web development topic. Every lesson includes a slide set and most have exercises, short projects which test the reader's understanding of the major concepts covered in the lesson. Lesson pages have several sections:
- Syllabus: summarizes pre-requisites, both for the lesson and its exercises -- lesson prerequisites include other lessons that the current lesson builds from while exercise prerequisites detail the plug-ins, extensions, and other software necessary to effectively complete the exercises.
lesson in the course and work your way forward. Of course, you can
certainly skip lessons for topics that you're already experienced with. Every course also includes one or more labs.
- Labs: Labs are larger code labs/tutorials associated with a given course. They are designed to provide useful exposure to the concepts covered in the course by having you interact with real-world APIs such as those from Google, Amazon, and Flickr. Labs are comprehensive in that they test your understanding of all concepts presented in the various lessons of the course and should be started only after reviewing all lessons. The only way to learn is by doing, so labs are instrumental in reinforcing the knowledge gained by completing a given course.
To aid navigation and better show all of the topics covered, this site has been organized to let you browse all lessons and labs independently of the courses that they're attached to. This way, you can see everything that's covered by this site at a glance, and easily discover when new content is added. If you stumble upon an individual lesson that interests you, by all means, find the course (or courses) that it's attached to and learn away!
This site is really intended for anyone who wants to learn how to program for the Web. We have tried to keep the list of prerequisites for each course as light as possible, although having a cursory knowledge of general programming concepts such as variables and data structures is beneficial (but not required). Since these courses are meant to introduce web development, courses target beginner to intermediate users with later lessons building from earlier lessons and covering more advanced topics.
Individual lessons, even entire courses, are designed for self-instruction, meaning you should be able to guide yourself through the material and included exercises at your own pace. But since lessons are packaged as slide sets (which, incidentally, you can copy and edit
to your liking), they are perfect for group presentations as well.
An issue tracker
has been set up to log any bugs with the site's content along with requests for new material. If you have a great idea for a new lesson or course, don't be shy -- just file an issue and tell us what you'd like to see! If you want your own material to be featured (perhaps you have a code lab or tutorial that ties in perfectly with an existing course or a new set of slides for a lesson), email firstname.lastname@example.org