Giter VIP home page Giter VIP logo

itc298-materials's Introduction

ITC 298 - Advanced JavaScript

Goals and outcomes

Although once solely a language used by front-end web developers and granted a corresponding amount of consideration (read: very little) by the wider programming community, modern JavaScript has rapidly become a major force for general-purpose and full-stack development. Client-side frameworks like Angular and Ember are enabling new and exciting applications in the browser. NodeJS means that developers can code in the same language on the server, or share tooling across platforms. And hybrid applications, like Cordova, NWjs, and React Native, make it possible for web apps to run on all platforms right alongside C++ and Java applications.

In this course, we'll cover the full range of full-stack JavaScript development. This includes tooling, client-side MVC, and server-side scripting. We'll talk about how these three parts form a powerful trio of JavaScript-based technologies in a modern development workflow. And we'll look at how techniques from all three can be combined with other languages and technologies effectively. Students will finish the quarter having built a fully-functional prototype application that can be used as an interview resource or as a reference during future JS-based projects.

Requirements

Students entering this class should have a basic understanding of JavaScript, presumably via WEB 150. That means they should be able to:

  • Understand the fundamental variable types in JavaScript, including undefined
  • Write a function, and understand how function scope operates
  • Write a loop over both an object and an array
  • Understand the special variables this and arguments.

Students must own a computer on which they can install software, and have a working Internet connection. This course will use Node.js extensively, and a syntax-highlighting editor like Atom or Sublime Text is highly recommended. A GitHub account is required for the class, and use of the GitHub client for Windows or Mac would be a good idea.

There is no required textbook for this course. Class materials will be posted to this repo, including links to documentation for the week's lecture and example source code.

Course outline

  1. Intro to Node - modules, NPM, and callbacks
  2. Managing Node complexity - async, events, and closures
  3. Intro to HapiJS - routes, responses, and configuration
  4. HapiJS page basics - templating and form handling
  5. HapiJS special topics - authentication and sessions
  6. Intro to Grunt - basic configuration, plugins, and file watchers
  7. Intro to Backbone - client-side MVC and templating
  8. Packaging resources with Browserify
  9. Realtime communication with WebSockets
  10. New ES6 features with Babel

Topics will be covered in this class at a rate of one per week. Tuesdays will be lecture, and Thursdays will be a directed lab, with students working independently or in small groups to solve a small problem based on that week's topic. Toward the end of the quarter, this may be instead spent on consulting time for the final project.

Final project

In addition to participation, all grades from this class will be determined via a final project, to be written in JavaScript and spanning both the client and server.

The goal of the final project is to provide a portfolio piece for students: something that can be taken into interviews and serve as an example of a real, working (if somewhat basic) application. It'll be written using HapiJS on the server, and Backbone on the client, with a Grunt build process running alongside for JS packaging and CSS preprocessing.

Students are welcome to choose a possible final project on their own, but it must be approved by the instructor. Project ideas will also be provided, for students who just want to get something built.

itc298-materials's People

Contributors

thomaswilburn avatar

Watchers

Chris Lockwood 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.