If you are a teacher or interested in the design of the course, see the meta document.
Learn best practices in JavaScript in this intensive, five-session course. Topics include data encapsulation, closures, binding, inheritance, and name spacing. Discover some of the lesser-known, yet useful, features of the language, such as how to debug JavaScript problems on different browsers and improve performance. Create interactive webpages using third-party JavaScript libraries.
Computers are provided in the lab, though you are encouraged to bring a laptop for in-class exercises.
These won’t be enforced by the instructor, but you will be pretty lost without understanding those concepts. If you need a refresher, take a look at the Beginner Materials.
We will dive into the nuances of JavaScript, how prototypal inheritance compares to classical inheritance, and how this can be used to build dynamic and complex web applications. Modern tools like jQuery and BackboneJS will be discussed, but students will learn the building blocks of these frameworks and after this course be able to understand what is happening under the hood. The focus will be on development for browsers, though most applies to other systems like Node.js, Phonegap, etc. Topics covered include:
Topics will be demonstrated through live-code examples/slides, available at advanced-js.github.io/deck. Additional exercises will completed in-class.
See this interview for more background.
All assignments are listed within the Course Outline.
If you’re using GitHub Desktop, these general instructions will help:
Enabling Edit
->Automatically Sync after Committing
is recommended. Here are the steps:
index.html
file in a browser and open the Developer Tools.index.html
page to see the results, and repeat.When the pull request is created, you should see a message saying that “the Travis CI build is in progress” – this means that your solution is being automatically checked for syntax errors. If this “build” ends up failing (which will show a red “X”), click through the “details” link and scroll to the bottom to see what the errors were. Per the requirements below, please fix the issues and push up the changes.
Feedback will be given in the pull request, so please respond with your thoughts and questions! You are welcome to open the pull request early as a work-in-progress if you are stuck and want to ask a question. Note that your solution will also be live at http://USERNAME.github.io/EXERCISE
.
For exercises with multiple Versions (V1
, V2
, etc.) listed in the README: these are intended as guidelines for how to complete the assignments in the smallest/simplest possible increments. You are expected to reach the highest Version for each assignment by the due date. See also: extra credit.
These apply to real life, as well.
Bonus points for:
BONUS
in the README of the exercise.Are you new to front-end web development? Here's a secret: no one else really knows what they're doing either.
— Nicolas (@necolas) January 17, 2013
countdown_exercise
slidecountdown()
oop_inheritance
slideThis class assumes you are confident with this material, but in case you need a brush-up…
New York University takes plagiarism very seriously and regards it as a form of fraud. The definition of plagiarism that has been adopted by the School of Continuing and Professional Studies is as follows: “Plagiarism is presenting someone else’s work as though it were one’s own. More specifically, plagiarism is to present as one’s own words quoted without quotation marks from another writer; a paraphrased passage from another writer’s work; or facts or ideas gathered, organized, and reported by someone else, orally and/or in writing. Since plagiarism is a matter of fact, not of the student’s intention, it is crucial that acknowledgement of the sources be accurate and complete. Even where there is not a conscious intention to deceive, the failure to make appropriate acknowledgement constitutes plagiarism. Penalties for plagiarism range from failure for a paper or course to dismissal from the University.
Reuse and building upon ideas or code are major parts of modern software development. As a professional programmer you will never write anything from scratch. This class is structured such that all solutions are public. You are encouraged to learn from the work of your peers. I won’t hunt down people who are simply copying-and-pasting solutions, because without challenging themselves, they are simply wasting their time and money taking this class.
Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.