Description
The program's goal is to prepare students for roles in web development, server-side application development, and desktop development that require a more advanced set of JavaScript skills. This programme will also teach students how to use JavaScript frameworks such as React, Angular, and Vue.
Syllabus:
Course 1: Object Oriented JavaScript
Objects in Depth
- Create objects and add/remove properties to them
- Write methods to access and mutate an object’s properties
- Learn how variables are properties on window
Functions at Runtime
- Leverage functions as first-class functions
- Identify when a scope is created
- Utilize closures and IIFEs to build private state
Classes and Objects
- Write a constructor function to instantiate objects
- Identify and manually set the value
- Identify and manually set the value of this
Object-Oriented Design Patterns
- Use Mixins to copy properties from one object to another object
- Create objects with private properties using module pattern and revealing module pattern
Project: Create a User-generated Infographic
Students will be presented with a real-world scenario of working with object-oriented JavaScript in this project. Students will create and modify objects from provided data and user input data to create an infographic. Students will also retrieve data from a form and use it to populate an array of objects that will be appended to the DOM.
Course 2: Functional Programming
Introduction - Functional Programming
- Introduction to the course and concepts
- Requirements, pre-requisites, and resources
- Introduction to Functional Programming
- A brief history of Functional Programming
Introduction to Functional Programming
- Introduction to Programming Paradigms
- Benefits of understanding programming paradigms
- Comparing Paradigms
- Benefits of Functional Programming
Functional JS Syntax
- ES6 Array methods
- ES6 Variables
- Object Methods
Functional Programming in JS
- Writing Functional Programs in JavaScript
- Higher Order Functions
- Functional data manipulation
- Functional DOM manipulations
Going Further with Functional JS
- Persistent Data Structures
- Immutable.JS (vanilla JS)
- RxJs (primarily AngularJS)
- Redux (primarily ReactJS)
Project: Create a Mars Rover Dashboard
The functional JavaScript course project will be to create a dashboard for past and current NASA Mars rovers, complete with mission information and images from their excursions. You will be tasked with interacting with a real NASA API and building the front end logic to create the dashboard using all of the ES6 syntax and functional programming concepts learned in the course.
Course 3: Asynchronous Programming in JavaScript
Stack vs. Heap
- Introduction to the course and concepts
- Requirements, pre-requisites, and resources
- Introduction to asynchronous thinking
- Benefits of learning asynchronous programming
Pointers and References
- Threads and single threaded programming
- Blocking and Non-Blocking code
- Helpful terms for single and multi threaded programming
- Callbacks for asynchronous functionality
New, Delete, Memset and Mallo
- Basic syntax and Promise chaining
- How Promises relieved the pain points of callbacks
- Implementations of Promises with Fetch
- Error handling and best practices for Promises
- Advanced Promise methods
Smart Pointers
- Synchronous Try/catch syntax
- Basic syntax of Async/await
- Async/await with Promise chains
- Error handling with Async/await
- When and When not to use Async/await
Project: Build a UdaciRacer Simulation Game
You will complete a partially built single player racing game in this project. You will combine callbacks, Promises, and Async/await syntax to complete TODOs marked in the code, using the skills and concepts you learned in the course. TODOs will include everything from creating API requests to completing asynchronous logic flows. You can also choose a theme for your race, such as Nascar, horse racing, or spaceship racing! By the end, you will be able to play a racing game of your own design.