Skip to content

Latest commit

 

History

History
795 lines (620 loc) · 16.1 KB

curriculum.md

File metadata and controls

795 lines (620 loc) · 16.1 KB

AttainU Course Modules (30 Weeks)

On-boarding

Command Line and Version Control System

Lecture 1

  1. Commonly used Shell commands (File Management)
    • ls
    • mkdir
    • touch
    • cp
    • mv
    • rm
  2. Git fundamentals
    • Initializing Git repository
    • Adding and removing files
    • Committing changes

Lecture 2

  1. Introduction to Github
  2. Github work-flow
    • Cloning a repository
    • Making changes and committing
    • Pushing changes back to Github
  3. Assignment
    • Create attainu-pheonix repo, clone, make changes, commit and issue a pull request

The shallow dive track (7 Weeks)

HTML & CSS

Lecture 1

  1. HTML Tags
  2. HTML Attributes
  3. Assignment
    • Programming Language Museum page using HTML

Lecture 2

  1. Block Elements
  2. Inline Elements
  3. Weekly Test
    • HTML tags test

Lecture 3

  1. CSS properties & values
  2. CSS selectors
  3. Assignment
    • About Me page using HTML and CSS

Lecture 4

  1. Display and position of elements
  2. CSS box model
  3. Assignments
    • Web email page using CSS Floats

Lecture 5

  1. CSS frameworks
    • Twitter Bootstrap
      • Including Bootstrap in a web page
      • Bootstrap grid layout
      • Bootstrap components
  2. Assignment
    • Company website using Bootstrap
  3. Challenge
    • Login page using Bootstrap

Javascript

Lecture 1

  1. Introduction
  2. JS datatypes
  3. JS operators

Lecture 2

  1. JS statements (if, switch, for, while)

Lecture 3

  1. Arrays
  2. Objects
  3. Live Coding - Arrays code samples
  4. Live Coding - Objects code samples
  5. Assignment
    • Multiplication table of 5 upto 10 using arrays

Lecture 4

  1. Functions
  2. Assignment
    • Function to search an element in an array

Lecture 5

  1. DOM manipulation - Selectors
  2. Assignment
    • Simple event handler

Lecture 6

  1. DOM manipulation - Element create, append and destroy.
  2. CSS scripting
  3. Live Coding - Simple spell checker
  4. Assignments
    • Simple Calculator
    • Login page - Client side validation
    • Stack Emulator

Lecture 7

  1. Introduction to jQuery
  2. jQuery selectors
  3. DOM manipulation using jQuery

Lecture 8

  1. jQuery event handling
  2. AJAX using jQuery
  3. Animation using jQuery
  4. Assignment
    • Quiz app using jQuery

Lecture 9

  1. HTTP requests
  2. AJAX
  3. Live Coding 1 - Currency exchange app using public API
  4. Live Coding 2 - Random dog image
  5. Assignment
    • Quiz Application

Lecture 10

  1. Live Coding - AJAX & DOM manipulation - Search engine using Duck Duck Go API

Lecture 11

  1. HTML5 APIs

Lecture 12

  1. ES5 Class

UI/UX Design

Lecture 1

  1. Introduction to design
    • The design process.
    • UI & UX design.
    • Design research

Lecture 2

  1. Fundamentals of design
    • Typography.
    • Color
    • Layout

Lecture 3

  1. Building better UIs in web applications - Part 1
    • Navigation
    • Signup and login
    • The empty state of a web application
    • Dashboard views
    • Buttons and actions
    • Designing forms
    • Filtering contents
    • Selecting Types
    • Selecting Colors
    • Dialogs
    • Popovers
    • Tabs
    • Tooltips
    • Pagination
    • Backgrounds and Textures
    • Spacing and Layouts
    • Using charts and graphs
    • Using Icons
    • Testing your designs

Web architecture

Lecture 1

  1. Client server model

Node.js / Express

Lecture 1

  1. Introduction to Node.js
  2. NPM and node modules
  3. Common modules and package.json
  4. Live Coding - NodeJS file reader
  5. Introduction to Express (express module in node)
    • Comparison to Hello World example in Node.js

Lecture 2

  1. Routing
  2. Live Coding - Square and Cube of a number using routes
  3. Static files
  4. Request & response objects
  5. Assignment
    • Calculator using Express routes and params

Lecture 3

  1. Express middlewares, express.static
  2. Writing custom middlewares
  3. JSON and status codes in reponses
  4. Postman, req.params
  5. Assignment
    • ExpressJS CRUD

Lecture 4

  1. Introduction to "Template Engines"
  2. Introduction to Handlebars templating
  3. Live Coding 1 - Tennis player management CRUD
  4. Commonly used Handlebars helpers
    • if
    • each
    • unless
  5. Live Coding 2 - Tennis player management CRUD

Lecture 5

  1. Live Coding - Library - Book search

Lecture 6

  1. Introduction to REST APIs
  2. Building REST APIs using Express
  3. body-parser module and request.query object
  4. Live Coding 1 - Express body parser demo
  5. Live Coding 2 - Simple Express login with in memory DB
  6. Assignment
    • REST API calculator
    • Github users API

Lecture 7

  1. Handling file uploads in ExpressJS
  2. Assignment
    • Add POST data handling features in Tennis player management app
  3. Live Coding 1 - Gallery Uploads
  4. Live Coding 2 - Multiple file uploads through a single route

Lecture 8

  1. Introduction to Cookies and Sessions
  2. Installing and using express-session package in ExpressJS
  3. Authentication & authorization in ExpressJS
  4. Assignment
    • Login and Signup for a Blog application
  5. Challenge
    • Search - Server Side

Databases

Lecture 1

  1. Introduction to NoSQL databases
  2. NoSQL vs RDBMS
  3. MongoDB history
  4. Setting up MongoDB on Windows and Linux

Lecture 2

  1. MongoDB extended JSON
  2. Databases & collections
  3. Data model & documents
  4. Challenge
    • Read JSON data and store it in MongoDB

Lecture 3

  1. Using MongoDB with Express
  2. Live Coding 1 - Inserting and removing data
  3. Live Coding 2 - AttainU instructor database
  4. Live Coding 3 - Express + Mongo + Session = Authentication

Lecture 4

  1. Live Coding 1 - Full Blog application with authentication
  2. Live Coding 2 - Multi collection demo - Movie Bookings
  3. Assignment
    • Express + MongoDB CRUD app

Shallow dive project (4 weeks)

Lecture 1

  1. Git branches
  2. Git master/development bracnh development workflow

Lecture 2

  1. Introduction to PAAS
  2. Introduction Heroku
  3. Setting up Heroku toolbet on Windows and Linux

Lecture 3

  1. Create, updating and destroying a NodeJS application instance in Heroku
  2. Setting environment variables during application deployment

Lecture 4

  1. Introduction to MongoDB Atlas
  2. Signing up and setting a free Mongo database in MongoDB Atlas
  3. Connecting Heroku NodeJS application with MongoDB Atlas

Lecture 5

  1. Installing cloudinary for handling file uploads in ExpressJS
  2. Setting up cloudinary for Heorku

Lecture 6

  1. Github page introduction
  2. Assignment
    • Setting up a personal portfolio page using Github pages

Deep Dive Javascript (2 Weeks)

Lecture 1

  1. Introduction to ES6
  2. History of ES6
  3. Using ES6 today - Setting up Babel

Lecture 2

  1. Let & Const
  2. Destructuring
  3. Template literals
  4. Arrow functions
  5. New String methods

Lecture 3

  1. Javascript Closures

Lecture 4

  1. Prototypal inheritance in ES5 classes
  2. ES6 Classes
  3. ES6 Getters and Setters

Lecture 5

  1. Iterators
  2. Generators & Modules

Lecture 6

  1. Introduction to Functional Programming style
  2. Functional Programming features in Javascript
  3. forEach, map, filter and reduce operations on Arrays.

Lecture 7

  1. Package managers
  2. Introduction to Yarn
  3. NPM Scripts

Lecture 8

  1. Bundlers and Tasks runners
  2. Introduction to Gulp
  3. Introduction to Webpack

Lecture 9

  1. Introduction to Linters
  2. Introduction to ESlint
  3. Setting up VS Code for linting Javascript code
  4. Introduction to Lodash
  5. Lodash methods walkthrough

Core Software Engineering - Part 1 (3 Weeks)

Lectures

Lecture 1

  1. Introduction to Algorithms
  2. Introduction to Data Structures
  3. Time and Space Complexities
  4. Big O Notation

Lecture 2

  1. Linear Search
  2. Binary Search
  3. Assignment
    1. Implement Binary Search

Lecture 3

  1. Introduction to Sorting
  2. Bubble Sort
  3. Selection Sort
  4. Assignment
    1. Implement Bubble Sort.
    2. Implement Selection Sort.

Lecture 4

  1. Merge Sort
  2. Quick Sort
  3. Assignment
    1. Implement Merge Sort.
    2. Implement Quick Sort.

Lecture 5

  1. Linked List Implementation - Part 1 a. Append b. Prepend c. Search d. Print e. Delete

  2. Assignment

    1. Implement Linked List
    2. Implement Linked List Delete

Lecture 6

  1. Stack using Linked List
  2. Queue using Linked List
  3. Introduction to Hashing
  4. Collision resolution techniques a. Open Hashing i) Chaining b. Closed Hashing i) Open Addressing A) Linear Probing B) Qudratic Probing C) Double Hashing
  5. Assignment
    1. Implement Stack and Queue using Linked List

Lecture 7

  1. Hash Table Algorithm (Pick anyone)
  2. Implement below functions a. set item b. get item c. delete item
  3. Assignment
    1. Implement Hash Table

Lecture 8

  1. Min Heaps and Max Heaps
  2. Heap Implementation - Part 1 a. add item b. remove item c. find item d. print heap

Lecture 9

  1. Heap Implementation - Part 1 a. heapify up b. heapify down
  2. Assignment
    1. Implement MinHeap and MaxHeap

Lecture 10

  1. Priority Queue using Heap
  2. Assignment
    1. Implement Priority Queue

Lecture 11

  1. Introduction to Trees
  2. Binary Trees
  3. Binary Search Tree - Part 1
    1. Insertion
    2. Inorder Traversing
  4. Assignment
    1. Implement Binary Search Tree insertion and Inorder traversing

Lecture 12

  1. Binary Search Tree - Part 2
    1. Setting left child and right child of a node.
    2. Replacing a child node.
    3. Copying tree nodes.
    4. Searching for a node.
    5. Removing a node from a BST.
    6. Finding the minimum value node from a BST.
  2. Assignment
    1. Implement deleting a node from a BST

Lecture 13

  1. Introduction to Graph Theory
  2. Graph fundamentals
    1. Node/Vertex
    2. Edges
    3. Directed and Undirected graphs
    4. Concept of Edge Weight
  3. Implemention - Part 1
    1. Implement GraphEdge class
    2. Implement GraphVertex class
  4. Assignment
    1. Implement a Graph using Linked List

Lecture 14

  1. Graph traversing techniques - Breadth First and Depth First
  2. Implementation - Part 1
    1. Implement BFS
    2. Implement DFS

Lecture 15

  1. Dijkstra's Algorithm
  2. Prim's Algorithm
  3. Krushkal's Algorithm

Core Software Engineering - Part 2 (2 Weeks)

Part 2, Computer Fundamentals

Lecture 1

  1. Number Representation
  2. The CPU, Part 1

Lecture 2

  1. The CPU, Part 2
  2. Operating System, Part 1

Lecture 3

  1. Operating System, Part 2

Lecture 4

  1. The Process

Lecture 5

  1. The Toolchain(Compilers, Assemblers and Linkers)

Lecture 6

  1. Introduction to Networking
  2. Refernce Models
  3. OSI Referenve Model

Lecture 7

1.Networks Layers in Detail - The Physical Layer

Lecture 8

  1. The Application Layer and Protocols

SRS to remember key concepts

  1. Using Anki

The deep dive track (2 Weeks of ES6 covered aboved in deep dive javascript + 10 Weeks)

Frontend Deep Dive (6 Weeks)

Advanced HTML & CSS

Lecture 1

  1. More HTML tags
    • audio and video
    • iframe
    • dl and dd
  2. Semantic HTML

Lecture 2

  1. CSS flex box
  2. Assignment
    • Flexbox

Lecture 3

  1. Introduction to CSS preprocessors
  2. Introduction to SASS and LESS

Lecture 4

Revision of ES6

Lecture 5

Revision of ES6

Lecture 6

Revision of ES6

React & Redux

Lecture 1

  1. Introduction to React
  2. Introduction to JSX
  3. Setting up React using npx create-react-app
  4. Creating and rendering simple React components
  5. Assignment
    • React Hello World

Lecture 2

  1. Component composition
  2. Assignment
    • React login form without events

Lecture 3

  1. Component events
  2. React Synthetic events
  3. Assignment
    • Simple Calculator

Lecture 4

  1. Component props
  2. Component state
  3. "Lifting the State" concept in React

Lecture 5

  1. Introduction to React Router
  2. The Router, Route and Link components
  3. Assignment
    • React company website using Bootstrap

Lecture 6

  1. Introduction to Virtual DOM
  2. React Lifecycle methods

Lecture 7

  1. Introduction to Flux architecture
  2. Introduction to Redux
  3. Setting up Redux for React applications
  4. Introduction to Redux store

Lecture 8

  1. Redux Reducers
  2. Redux Actions
  3. Redux Subscribers
  4. Assignment
    • Redux Store - Score updates

Lecture 9

  1. Redux data flow

Lecture 10

  1. Using Redux with React components
  2. Redux state mappers
  3. Accessing redux store state using props
The following four lectures are live coding sessions where the instructor builds a Youtube player application using React and Redux

Lecture 11

  1. Project planning
  2. Google APIs Introduction
  3. oAuth
  4. Youtube API signup

Lecture 12

  1. Implementing the Redux store

Lecture 13

  1. Implementing the React components - Part 1

Lecture 14

  1. Implementing the React components - Part 2

Lecture 15

  1. Implementing the Routing - Part 1

Lecture 16

  1. Introduction to localStorage API
  2. Authentication and protected Routes in Express

Lecture 17

  1. Forms - Creating Playlists

Lecture 18

  1. DOM and ref

Lecture 19

  1. Clean architecture in React

Lecture 20

  1. Javascript testing
    • Introduction to testing
    • Unit testing and Integration testing
    • React testing
    • Jest
    • Chai
    • Enzyme

Lecture 21

  1. Introduction to "Progressive web apps"
  2. React and Progressive web apps

Lecture 22

  1. Introduction to visualization
  2. Introduction to D3

Lecture 23

  1. React app deployment

Frontend deep dive project (2 weeks)

Backend Deep Dive (2 Weeks)

Databases

Lecture 1

  1. Relation databases vs NoSQL databases - Revisit
  2. Introduction SQL, History and ANSI SQL standard
  3. Creating and using a Postgresql database
  4. SQL Data types
  5. Creating Tables using CREATE TABLE

Lecture 2

  1. Inserting data into Tables using INSERT
  2. Updating data using UPDATE
  3. Deleting data using DELETE
  4. Assignment
    • Build schema for banking application
    • The schema should contain the following entities -
      • Branch
      • Account
      • Customer
      • Financial Transaction
      • Loan
      • Deposit
    • Write SQL queries for inserting data in all of the above tables.
    • Write SQL queries for returning data from all of the above tables.
    • Write an SQL query for returning all the customers who has an account in the Bangalore branch.
    • Write an SQL query that returns customers who have both savings and loan accounts.

Lecture 3

  1. Querying data using SELECT
  2. Advanced Queries and Filters using WHERE clause.
  3. Grouping data using GROUP BY clause.
  4. Sorting data using ORDER BY

Lecture 4

  1. Introduction to Foreign Keys
  2. Introduction to JOIN
  3. Inner JOIN
  4. LEFT and RIGHT OUTER JOIN

Lecture 5

Node
  1. Node Core Modules
    • Buffers, Timers & Streams
    • Filesystem, TCP & HTTP
    • Debugging
  2. Nodemon

Lecture 6

Node Part 2
  1. Node Asynchronous Programming
    • Callbacks revisit
    • Streams and Events
    • Async and Await
    • Promises

Lecture 7

Express

  1. Express generator
  2. Advanced middlewares
    • Caching
    • Dependency Injection
  3. Express app deployment
    • forever daemon
  4. Advanced Handlebars
    • Template Inheritance
    • Writing custom filters

Lecture 8

Devops
  1. Introduction to AWS
  2. Remote login using SSH
  3. Setting up web server, DB server and HTTPS in Linux
  4. Basic server security

Core Software Engineering - Part 2 (2 Weeks)

Part 2, Computer Fundamentals

Lecture 1

  1. Number Representation
  2. The CPU, Part 1

Lecture 2

  1. The CPU, Part 2
  2. Operating System, Part 1

Lecture 3

  1. Operating System, Part 2

Lecture 4

  1. The Process

Lecture 5

  1. The Toolchain(Compilers, Assemblers and Linkers)

Lecture 6

  1. Introduction to Networking
  2. Refernce Models
  3. OSI Referenve Model

Lecture 7

1.Networks Layers in Detail - The Physical Layer

Lecture 8

  1. The Application Layer and Protocols

Career services (2 Weeks)

  1. Writing & speaking essentials
  2. Writing effective emails
  3. Resume building
  4. Portfolio building
  5. Mock interviews by the teaching assistant