Class Details
- Location: BE 3156
- Time: M,W 5:00 - 7:05 pm
- Dates: April 3 - June 16, 2017
- Instructor: Brenden West
- Email: [email protected]
- Credits: 5
- Summary
Modern JavaScript has rapidly become a major force for full-stack web development, with Node.js allowing development in the same language on the server & browser. Client-side frameworks like Angular and D3 are enabling new and exciting applications in the browser.
This course will cover JavaScript technologies that power a modern full-stack development workflow, including server-side scripting, single-page web applications with MVC structure, package management, and JSON data storage. Students will finish the quarter having built a fully-functional client-server application they can reference for job applications or future projects.
Requirements
Students entering this class should understand HTML, CSS, and the core concepts of JavaScript programming either via WEB 150 or comparable experience. They should be comfortable with:
- variables and operators
- conditional logic
- arrays and loops
- functions, objects, and JSON
- jQuery selectors, methods, and AJAX
Students will perform extensive hands-on development throughout the course and will require;
- A computer onto which they can install software,
- A working internet connection
- A syntax-highlighting editor like Brackets or Sublime Text,
- A github.com account
Note - Cloud9 provides free online development tools you can access from any computer via web browser.
This course will use Web Development with Node & Express as a textbook and also supplementary online materials as needed.
- Class Structure and Topics
- Each week, we'll cover a new topic, building on the previous week's work. In general we will cover new material in Monday lectures and exercise what we learned in Wednesday lab. We will cover the following topics, although the order and precise list is subject to revision:
- Introduction to Node.js - Overview & installation, NPM, modules
- Node.js programming - Callbacks, events, asynchronous operations
- Unit testing with Mocha & Chai
- Intro to Express and http request/response objects
- Express application structures - routes, views, and static files
- Templating with Handlebars
- REST APIs & JSON
- Data storage with MongoDB
- MVC design & single-page-applications with Angular (or React)
Each Wednesday, you'll be given an assignment to test what you've picked up on that week's topic. Assignments are due by the start of class on the following Monday. These assignments allow me to evaluate your progress and to provide feedback. As such, most of your grade each week will come from turning the assignment in on time and showing that you tried to solve it using your own original work. Your homework should be completely your own: plagiarism will incur a grade penalty.
90% of your grade will come from homework and an in-class presentation, and 10% from class participation. Homework assignments will build toward a completed final project at the end of the quarter. For the in-class presentation, you will choose a piece of open-source JavaScript that you find interesting and share with the class. The presentation include a written summary of the source code with your comments.
Reference
- https://docs.npmjs.com/
- https://www.tutorialspoint.com/javascript/
- http://www.tutorialspoint.com/nodejs/
- http://www.nodebeginner.org/
- http://expressjs.com/
- http://nodeschool.io/#workshoppers
- https://angular.io/docs/ts/latest/
- http://www.w3schools.com/js
- https://developer.mozilla.org/en-US/docs/Web/JavaScript
Reading (optional)
- JavaScript: The Good Parts (Douglass Crockford)
- http://eloquentjavascript.net/
Note - Seattle Public Library card-holders have free access to the following technical reference:
- Lynda.com tutorial videos
- Safara Tech Library - https://ezproxy.spl.org/login?url=http://proquestcombo.safaribooksonline.com/?uicode=spl
Development Tools