What's a JavaScript Closure? Ever wonder about some of JavaScript's more advanced and esoteric features? Nathan Whitehead's interactive tutorial explains and walks through each of these concepts one step at a time. At the end of each lesson, you are encouraged to write short snippets of code demonstrating the concepts that you just learned, which are then automatically checked for errors and verified.
Perhaps you're new to JavaScript, or programming in general;
CodeAcademy offers similar interactive tutorials that will teach you the basics, and hold your hand along the way. Perhaps you'd rather learn at a more even pace; CodeAcademy's
CodeYear will introduce you to one new concept every week throughout 2012.
Want some more detail? Don't love the tutorial style? Marijn Haverbeke's online book,
Eloquent JavaScript provides an introduction to the language that is both readable and thorough. Although readers are not quizzed at the end of each chapter, each code sample quoted in the book can be examined, edited, and run directly within your browser. The Mozilla Developer Network also provides its own
JavaScript Guide, along with a more concise
"Re"introduction to JavaScript. Mozilla's
Javascript Reference also provides an encyclopedic reference of the language (
previously).
Once you're moving along, and building websites with JavaScript, you'll probably want to
learn JQuery. If you were paying attention to the JavaScript lessons, the
official documentation should be all you need. If not, though,
JQuery Fundamentals will walk you through the basics of both JavaScript and JQuery, one step at a time.
Once you've tackled JavaScript, learned closures, and mastered JQuery, it's time to move on to the really heavy stuff. JQuery author and JavaScript savant John Resig has
15 more tutorials that teach some of the language's most difficult and advanced concepts in the same interactive style as CodeAcademy and the Nathan's closure tutorial. Many of these advanced/quirky/confusing features of the language are also documented and explained in-depth at the
JavaScript Garden. John also recently posted some thoughts tutorial-style learning, and the notion of teaching
JavaScript as a first language.
Now that you know how to write code, you probably want to learn how to code
well. Start by reading
The Essentials of Writing High Quality JavaScript.
Essential JavaScript Design Patterns For Beginners explains various styles and patterns often employed by JavaScript/JQuery developers, and the various advantages and/or drawbacks to each.
The JavaScript Pattern Collections provides an even more thorough reference, albeit with less corresponding analysis [
More here and here].
Idiomatic Javascript is a short (and mildly controversial) document that slaps you on the face, and explains how and why you should write readable code, while
Captain Obvious on JavaScript explains some mistakes that you're probably making. Opera's Developers also have a nice roundup of methods that you can use to
improve the performance of your JavaScript code (which you can test out yourself with
JSPerf).
Once you've gotten comfortable with JavaScript and/or HTML5, your knowledge is already becoming outdated. Congratulations! Keep on top of the current developments by subscribing to (MeFi's Own™)
JavaScript and
HTML5 Weekly.
Would you rather start off at a lower level? Did you accidentally sleep through Comp Sci 101? Carl Herold's
Higher Computing For Everyone introduces novices to C, and various low-level programming and Computer Science concepts such as binary numbers, pointers, and memory allocation.
Did you like Carl's book, but are you more of a visual learner? AcademicEarth has a
compilation of recorded CS 101 lectures and syllabi from some of the top professors and universities in the US.
Want to go deeper? Full Computer Science curricula are available online from
MIT,
The University of Washington,
Stanford,
Harvard, and
Berkeley
If C and Java aren't really your thing, but you still want a low-level primer, the
Kahn Academy provides a fantastic introduction to CS and algorithms using Python.
Want to combine your newfound CS prowess with your ninja-like JavaScript abilities? Harvard Professor David J. Malan's online course,
Building Dynamic Websites provides an excellent overview of the processes and technologies needed to build a modern, dynamic website.
Starting sometime this spring, through its
MITx initiative, (
previously) MIT will be offering several CS courses online, in a format and structure that more closely resembles a traditional university course. Starting next month, Berkeley will also be offering a series of free follow-along courses including
CS 101,
Machine Learning,
Software as a Service, and
others.
Are all of these languages too "Normal" and "Conventional?" How about Ruby? Though still incomplete,
Bloc and
TryRuby provide interactive Ruby lessons in the style of CodeAcademy. Ruby still a bit too normal for you? Learn
Clojure with
TryClojure.
Are you a DBA? Did you like those interactive JavaScript tutorials? Have you ever secretly wondered if SQL might not be the answer to all your problems?
Mongoly provides an interactive tutorial-based intruduction to the alternative NoSQL database,
MongoDB. Standing in the other corner of the NoSQL arena, CouchDB has
fantastic documentation, and a
free sandbox where you can experiment and learn.
Itching for more?
TheNewBoston provides a vast number of video tutorials across a wide range of programming disciplines, as does the
Google Code University,
Did I forget something? The nerds over at Reddit
have compiled an enormous list of the best online learning resources out there. [Also,
previously,
previousier,
previousliest]
posted by gauche at 9:57 AM on January 20 [2 favorites]