SkillAgentSearch skills...

Syllabus

syllabus for the Advanced JavaScript class at NYU

Install / Use

/learn @advanced-js/Syllabus
About this skill

Quality Score

0/100

Supported Platforms

Universal

README


layout: default permalink: /

<img src="assets/logo.svg" alt="class logo" class="logo"/> Advanced JavaScript syllabus

If you are a teacher or interested in the design of the course, see the meta document.

  • Course: INFO1-CE9766, NYU SCPS
  • Instructor: Aidan Feldman, alf9@nyu.edu
  • Need help?
    • Gitter
      • It sends message digests to people who aren't active in the room, so feel free to ask a question even if no one's around.
    • Look through and create issues
    • Office Hours during Hacker Hours (see schedule)
    • Email for 1-on-1 help, or to set up a time to meet

Course Description

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.

Prerequisites

  • INFO1-CE9755 - JavaScript (syllabus) or equivalent
  • Understanding of variables, data types, control flow, and basic function usage in JavaScript
  • Strong intermediate knowledge of HTML, and at least basics of CSS
  • Basic jQuery knowledge (DOM interaction like adding/removing elements/classes, etc.)

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.

Course Overview

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:

  • Encapsulation, closures and scope
  • Classical vs. prototypal inheritance
  • The event loop
  • AJAX and JSONP
    • local
    • remote (e.g. Foursquare)
  • Creating MVC-style models (a'la Backbone.js) from scratch
  • Test- and Pseudocode-Driven Development

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.

Homework/Projects

All assignments are listed within the Course Outline.

Workflow

If you're using GitHub Desktop, these general instructions will help:

Enabling Edit->Automatically Sync after Committing is recommended. Here are the steps:

  1. Fork the repository for the exercise/project (found under github.com/advanced-js).
  2. Clone the repository to your computer.
  3. Open the index.html file in a browser and open the Developer Tools.
  4. Modify the files to complete your solution.
  5. Refresh the index.html page to see the results, and repeat.
  6. Make sure all of your code is committed.
  7. Push/sync up to GitHub.
  8. Create a pull request on the original repository. All assignments are due at the start of the following class, unless otherwise specified.
  9. You can continue to push fixes and improvements until the close date (listed in Classes) – just add a comment in the pull request to let me know it's been updated.

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.

Versions

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.

Requirements

These apply to real life, as well.

Extra Credit

Bonus points for:

  • Automated tests
  • Creativity (as long as requirements are fulfilled)
  • Anything listed under BONUS in the README of the exercise.

Course Outline

Class 1

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Are you new to front-end web development? Here&#39;s a secret: no one else really knows what they&#39;re doing either.</p>&mdash; Nicolas (@necolas) <a href="https://twitter.com/necolas/status/291978260433219584">January 17, 2013</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
  1. Introduction
    • Put name on sticky note on back of monitor
    • Discuss what the class is going to cover
    • Everyone introduce themselves
      • Name
      • What you "do"
      • What are your goals for the class?
      • What's something in JS (or technology) you worry that your peers understand but you don't?
  2. Setup
    • How many people are comfortable with Git/GitHub?
    • Install GitHub Desktop
      • If you are comfortable with Git already, you can skip this.
    • Sign up for GitHub
  3. GitHub workflow
  4. Explain how slides work
  5. Get through countdown_exercise slide
  6. Talk through requirements

Homework

Class 2

  1. Look at various approaches for countdown()
    • Show recursive solution
  2. Developer Tools walkthrough
    • Elements (HTML)
    • Console (JS)
    • Scripts (JS)
  3. Pair program to build Memory v1 (see pairing tips)
  4. Cover OOP, though "oop_inheritance" slide

Homework

Class 3

  1. Code review Memory
  2. Get through oop_inheritance slide
  3. Cover automated testing
  4. Cover AJAX/CORS/JSONP (files)
    • Network tab in Developer Tools

Homework

View on GitHub
GitHub Stars446
CategoryDevelopment
Updated18d ago
Forks247

Languages

HTML

Security Score

80/100

Audited on Mar 11, 2026

No findings