Giter VIP home page Giter VIP logo

advanced_js's Introduction

Advanced JavaScript Build Status

See this README prettier here.

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.

Prerequisites

  • INFO1-CE9755 - JavaScript (syllabus) or equivalent
  • Understanding of variables, data types, control flow, and basic function usage in JavaScript - see Beginner Materials
  • Strong intermediate knowledge of HTML, and at least basics of CSS
  • Basic jQuery knowledge (DOM interaction) is a plus

These won't be enforced by the instructor, but you will be pretty lost without understanding those concepts.

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 afeld.github.io/advanced_js. Additional exercises will completed in-class.

See this interview for more background.

Homework/Projects

All assignments are listed within the Course Outline.

Submission

Submit homework and projects via NYU Classes by the start of the following class. Sumbissions can be in one of the following formats:

  • A link to the project hosted live
    • On your own site
    • An online sandbox (see tools)
  • A self-contained, runnable ZIP

Requirements

  • All HTML files should pass W3C Markup Validation
  • All written JS should pass JSHint
  • Must apply "good programming style" learned in class
  • Bonus points for:
    • Automated tests
    • Creativity (as long as requirements are fulfilled)

Course Outline

Class 1

  • Introduction
  • Student checklist:
  • Explain how slides work
  • Get through "self_executing_functions" slide
  • Homework:

Class 2

Class 3

  • Finish slides
  • Cover AJAX/JSONP (files)
  • Homework:

Class 4

  • Mashup demos
  • Add tests to namespace
    • Build up a test framework from scratch
    • Show QUnit
  • Getting Serious example
    • Quick intro to Backbone.js
  • Multiple async
  • Homework:

Class 5

Projects

Possible projects are listed here.

Pairing Tips

  • Three people is possible, but two works best
  • Agree on an editor and environment that you're both comfortable with
  • The person who's less experienced/comfortable should have more keyboard time
  • Switch who's "driving" regularly
  • Make sure to save the code and send it to both people
  • JS Bin supports live collaborating

Resources

Required Reading

Recommended Reading

Beginner Materials

This class assumes you are confident with this material, but in case you need a brush-up...

Other Lists

Tools

HTML/CSS/JS sandbox

Test Frameworks

Recommended:

Reference

Grading

  • Class Participation – 30%
  • Homework – 40%
  • Quiz – 30%

Statements on Plagarism

SCPS

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.

Instructor

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. Please respect the terms of use and/or license, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.


Using this repo

Node.js is required (tested w/ Node v0.10.2). To run the examples/:

$ node run_tests.js

To run an individual exercise:

$ node run_tests.js examples/FILENAME.js

To build the examples as HTML:

$ node build.js

To build this README as a PDF:

$ gem install gimli
$ gimli
# outputs README.pdf

advanced_js's People

Contributors

afeld avatar will-sommers avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.