- Javascript (ES5) & jQuery
- DOM manipulation
- Control flow & logic
- Data types & structures (Arrays, Objects)
- Functions & scope
- Constructors
- HTML5
- Semantic Tags
- Document design and structure
- CSS3
- Styling/positioning
- Pseudo-selectors
- Animations
- Canvas
- Responsive Design
- Media queries
- Mobile-first
- Grid Systems
- Container -> Row -> Columns
- Skeleton.css
- Sass (SCSS)
- Variables
- Imports
- Nesting
- Ajax
- Request/response
- JSON
- $.ajax
- Gulp
- Tasks
- Server starting
- Pre-processing
- SQL tasks
- Javascript
- Modules
- Async programming
- Express.js
- MVC Design
- Controllers & Routes
- HTTP Verbs
- Request params, headers, body
- Rendering views (Handlebars.js)
- Building response ViewModels (DTOs)
- Model schema design
- Session state
- Databases
- MySQL
- Primary/foreign keys & relations
- Migrations
- Knex (Adapter)
- Bookshelf.js (ORM)
- Security
- Hashing/Salting passwords
- BCrypt.js
- Material Design
- Materialize.css
- Deployment
- Heroku with Procfiles
- Free database hosts
- Ruby
- Data manipulation
- Gems
- Classes and OOP
- Sinatra
- API Design
- Object-oriented MVC structure
- REST API design and controllers
- OAuth token creation & consumption
- Databases
- MySQL
- ActiveRecord (ORM)
- Firebase (Real-time database)
- React.js
- Component design
- Design SPA using React.js
- React Router
- Consume API endpoints using components
- Testing
- BDD vs TDD
- Mocha.js
- Chai.js
- Testing Business Logic
- Advanced Data Structures
- LinkedList
- HashMap
- BinaryTree
- Algorithms (if not covered yet)
- BubbleSort
- MergeSort
- SelectionSort
- QuickSort
- Recursion
- How recursion works
- Divide & Conquer