A Smarter Way to Learn JavaScript

"Damn, this program is ridiculously good." —Matthew Highland

2. Then practice the chapter's coding lesson online. Work through 1,750 interactive exercises—all free.

The most enthusiastically reviewed programming book on Amazon

"Not only am I learning JavaScript incredibly fast, I'm enjoying it." —Justin A. Roether

"Damn, this program is ridiculously good. The author needs to sign up to run this country's education program." —Matthew Highland

 "This is the most incredible learning experience I have ever had. Amazing!!" —Jon W. Christophersen

 "If you're thinking of learning how to program in JavaScript, I promise, this is the ONLY way to go." —L. Phillips

 "Mark's exercises are worth more than the $300 class I took. Love this program." —Michelle Schackel

"A truly innovative way to learn JavaScript" —William Burbank

"A powerful new, interactive teaching machine." —W. Green

"...lays things out in a way that anyone can understand." —Dr. Robert Valli

"...the companion website gives you a chance to practice it so that it sticks in your head for good." —Alan Forbes, developer and coding guru

"Not only am I learning JavaScript incredibly fast, I am enjoying it." —Justin A. Roether

"Finally! —exactly what I need to learn effectively." —Samantha Lim

"I wanted to learn JavaScript, but other sources were too difficult. This is the best." —Chaz Hirales

"I've used it to complement what I learnt at Codeacademy." —Alexandre Bobeda

"We have now implemented this as one of the prerequisites before being accepted to the coding camp." —Douglas Paul Burns

"Great book for anyone wanting to start out programming." —Dane Cameron, software engineer

"Does a fantastic job of breaking down the process of learning a complicated subject." —Mitesh Dabhi, web designer and developer

"This is a fun book. It actually does makes learning JavaScript quite painless." —Amazon Customer

"If You're Too Dumb for a "For Dummies" book..." —C. Christopher Akin, IT professional

"A pretty cool way to learn a new language." —J. Oborn, web developer

"Best tool I've found." —Laine Gebhardt

"Clear, lively, and never dry." —Chandra K. Clarke

"My hand to God, this book never induced an afternoon nap, or even made me sleepy." —Jeremy Costa

"Simplifies the complicated." —Olu Odebunmi

"Strikes a perfect balance between learning, practicing and feedback." —Jeff Santos

"JavaScript made easy." —Clark Anderson

"Better than Codeacademy." —Callum Makkai

The Example-Rich Book

"The examples always seem to add something, and never make it more confusing." —K. Oborn

The Free Interactive Exercises

"By the time you finish the exercises, you will feel amazingly comfortable with your new skills." —W. Green

Practice beats reading 7-to-1

"Beginners need repetition and lots of hands-on practice, which is exactly what you get with this book." —Matthew Highland

Gradually, the training wheels come off.

"A new, fun and relatively easy way to move toward programming fluency." —W. Green

People learn in stages, little by little. The free interactive online exercises that accompany each chapter mirror the learning stages. They start off easy, then become more challenging. By the time you get to the last exercises for each chapter, you're coding live scripts.

Email Me

Questions? Comments? Corrections? Don't be shy. I want to hear from you.



Acknowledgments

If you like the book and the online exercises, give a tip of the hat to these readers, who took the time to tell me about some things that weren’t working in Version 1.0 and made other contributions as well. This program is now so much better because of their generosity.

Joel Kohlbusch for his help with the Chapter 7 exercises.

Dorian Maiga, who caught an error in Chapter 13 of the book.

Steven Noe, who spotted an egregious slip in Chapter 17.

Douglas Corin, who helped me with a problem in the exercises for Chapter 1, spotted errors in the exercises for Chapter 8, alerted me to an oversight in Chapter 10, corrected an error in an exercise for Chapter 13, and corrected errors in Exercise 14.

Brian Sheets, who spotted an error in the exercises for Chapter 1.

Simon Harms at http://www.simonharms.com, who told me about a psychological barrier that I need to deal with.

GJ Griffiths's friend, who spotted several errors and encouraged me to remove unhelpful remarks from the introduction.

Justin Sparks, who suggested a useability improvement.

Tom Boyles, who told me about a flaw in the timed exercises. And thanks to his son, who provided the test condition. Also an error in a Chapter 54 exercise.

Jeff Santos, who helped me eliminate an ambiguity in the timed exercises.

Rafael Oliveira, whose comments suggested an improvement in my book description.

Brad Mellema, for pointing out an error in the exercises for Chapter 13.

Callum Makkai, who alerted me to a typo in Chapters 38 and an error in Chapter 86, to ambiguous instructions in Chapter 6 and 9 exercises, found a bug in the Chapter 13 exercises, and spotted errors in the Chapter 22, 26, 28, 32, 37, 46, 68, 69, and 72 exercises. He also corrected errors in Chapters 45,  63, and 73 and in Chapter 49, 50, 52, 54, 59, and 62, 63, 64, 65, 79, 82, 85, and 89 exercises. He has been unusually generous and helpful in giving me encouragement and savvy book-marketing advice.

Ivan Nikolov, who runs the social site about food, foodolo. Ivan spotted typos in the Chapter 8 exercises, coding errors in Chapters 23, 25 , 33, 49, 54, and 61, and 81 of the book, and errors in Chapter 43 and 65 exercises. He also caught an error in Chapter 71 and one in a Chapter 72 exercise.

Allison Burns, who told me about an error in the Chapter 13 exercises.

Allie Etcoff, who spotted code mistakes in several locations.

Thomas Mechau, who corrected several flawed instructions in Chapter 24 exercises.

Kamil Baran, who made me aware of a shortcoming in my discussion of variables.

Vijay Luthra, who suggested I clarify a Chapter 5 exercise.

Laine Gebhardt, who corrected some bad code in a Chapter 13 exercise.

Alex Jones, who provided valuable guidance on future books in the series.

Gene Kraybill, who spotted a mistake in the table of contents.

Chaz Hirales, who pointed out unnecessary rigidities in Chapter 2 and 3 exercises.

Anne Messenger, who spotted errors in the Chapter 4, 13, and 14 exercises. She also made corrections in Chapters 5, 6, 11, 13, 17, and 22 of the book.

Matthew Highland, who provided superb guidance on future projects.

Alan Forbes, who gave me excellent book-marketing advice.

George Schweitzer, who corrected errors in Chapters 13, 19, and 40 exercises.

Peter Rihn, who suggested I post an errata section on this page for Version 1.0 of the book.

Jon W. Christopherson, who corrected problems in Chapter 12 and 39 exercises and typos in Chapter 13.

Clyde Eugene Makamure, who discovered a weakness that ran through the entire series of exercises. He also caught errors in Chapters 11 and 24, caught others in Chapter 8, 20, 25, and 28 exercises and suggested edits for clarity in the Chapter 9 exercises.

Nikov Sieber, who prompted an improvement in the timed exercises.

Lane Watson, who made me aware of an issue in the timed exercises and helped me clarify an instruction in a Chapter 11. He also caught errors in Chapter 12 exercises. And he made a very helpful suggestion for improving exercise instructions.

Quint Rahaman, who spotted a coding error in a Chapter 18 exercise.

Andrew Mayne
(that’s right, the magician at http://andrewmayne.com), who caught errors in Chapter 55 and in Chapter 12, 24, 43, 51, 54, and 61 exercises.

Nils-Gunnar Nilsson, who told me about a bug in Chapter 3 exercises.

Dave Murley. It would almost be easier to say what he didn't help me with. He spotted problems in Chapters 30, 44, 45, 65, 84, and 85 of the book, and in Chapter 2, 12, 13, 14, 16, 18, 23, 25, 28, 30, 32, 35, 36, 38, 40, 44, 46, 48, 50, 53, 54, 62, 69, 72, 76, 78, 79, 84, 85, 86, and 88 exercises. He helped me correct a general problem with some of the live coding exercises and a weakness that ran through the entire collection of exercises.

Sean Herrala, who caught errors in Chapters 11, 21, and 39.

John Veld, who told me about a flawed algorithm in the Chapter 1 exercises.

Glenn Cole, who corrected errors in Chapters 3, 4, and 17.

Dan Shafer, who corrected errors in Chapter 3 exercises.

Tris Nefzger, who suggested an improvement in a Chapter 8 exercise.

Brian Eggert, who told me about a bug in a Chapter 3 exercise.

Bashir Aziz, who corrected an errors in Chapter 23 and 37 exercises.

Syad Ali Raza, who found a problem in a Chapter 3 exercise.

Mukesh Kumar, who told me about problems in Chapter 9 and 15 exercises.

Lene Nytoft Laursen, who found a problem in Chapter 11 exercises.

Leno Lewis, who spotted problems in the Chapter 3 exercises.

Megan Stetz, who helped me with a problem in the Chapter 3 exercises.

Ivan Dimov, who found ambiguities in Chapter 39 exercises.

Derek, who helped me correct errors in Chapter 23 exercises.

Al Granberg, who found an error in Chapter 16, helped me clear up an ambiguity in a Chapter 12 exercise, spotted errors in Chapter 15 and 25 exercises, and tipped me off to something insane in Chapter 31 and 32 exercises.

Kevin Gigiano, who corrected errors in Chapter 47 and in Chapter 30 and 48 exercises and suggested a usability improvement in the exercises that learners are going to love.

Leon Robert Walpole, who helped me clear up a problem in a Chapter 21 exercise.

Carl, who helped me clear up an instruction in a Chapter 4 exercise.

Swati Kamtar, who suggested some improvements in Chapter 6 exercises.

Brian Miller, who spotted an inaccuracy in a Chapter 6 exercise.

Heron, who caught something in a Chapter 8 exercise.

Bettina Bergren, who helped me correct problems in the Chapter 6 and 8 exercises.

Silvia Angelov, who corrected an error in Chapter 33.

Lester Colegado, who caught errors in Chapter 6 exercises.

Santosh Walvekar, who caught a typo in a Chapter 25 exercise.

Martin Andrews, who told me about errors in Chapter 6, 53, and 72 exercises.

Casey McCann, who found an error in a Chapter 54 exercise.

Vinod Nair, who suggested an overall design improvement for the exercises.

David White, who spotted an error in Chapter 17.

Ross Updegraff, who found errors in Chapters 28, 48, and 55, and problems in Chapter 37, 42, 54, and 57 exercises.

Mike Armishaw, who told me about an error in a Chapter 18 exercise.

Paul Hume, who pointed out a mistake in Chapter 66.

Ryan Smith, who suggested an improvement to a Chapter 27 exercise.

Manzo, who spotted an error in a Chapter 43 exercise.

Mary Cooke, who found an error in Chapter 66.

Neil Chudgar, who found an inconsistency between the book and the exercises and a wrong word in Chapter 37.

Andy Schwartz, who found bugs in Chapter 3, 7, 10, and 11 exercises.

Morgan Atwood, who called my attention to a typo in a Chapter 71 exercise.

Jason Bray, who spotted a problem in a Chapter 7 exercise.

Osvaldo Dias dos Santos
, who told me about an error in Chapter 21 and 44 exercises.

Uriel Cota, who went to a good deal of trouble to document a recurring bug in the exercises.

Shang, who alerted me to a typo.

Eric Carraway, who told me about several errors in the book.

Francesco Badraun, who made a great suggestion that improves clarity in the autocorrect exercises.

Unnat Jain, who spotted several typos in the book and another in an exercise.

Dean Bunnell, who spotted a typo in the book.

Chris Heinze, who spotted a typo in the book.

Tomas Sandala, who spotted a coding error in the book.

Matt Jared, who told me about a typo in the Chapter 12 exercises.

Jonah Koch, who told me about an error in a Chapter 7 exercise.