- Version Control System - Benefits & types
- Git - Introduction
- Configuration - Git config
- Repository
- Commit
- Stages of a file - Untracked, Staged, Tracked & Modified/Dirty
- .gitignore
- Diffing
- Branching
- Log command
- Reset and Revert
- Cherry Pick
- Merge conflicts
- Stashing
- Remote
- Pull & Push
- GitHub & GitLab
- Merge Request
- Pull Request
- Forking
Task:
- Set your user name (user.name) and email address (user.email) using terminal
- Create a GitHub repository for the js assignments with the main branch as default branch.
- Create a new branch, update ReadMe with description, Add LICENSE file (Apache 2.0) and create a Pull request assigning it to me (https://github.com/adityasharma7/hc-js-assignment)
Reference:
- https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
- https://dev.to/smitterhane/git-pull-vs-git-fetch-66m
- https://learngitbranching.js.org/
- https://git-scm.com/docs/git-config
- https://git-scm.com/docs/git-add
- https://github.com/git-guides/git-init
- https://www.atlassian.com/git/tutorials/inspecting-a-repository
- https://www.atlassian.com/git/tutorials/using-branches
- https://www.atlassian.com/git/tutorials/saving-changes/git-stash
- https://git-scm.com/docs/git-pull
- https://www.atlassian.com/git/tutorials/using-branches/merge-conflicts
- https://docs.github.com/en/get-started/quickstart/hello-world
- https://docs.github.com/en/get-started/quickstart/fork-a-repo
- https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
- https://www.simplilearn.com/tutorials/devops-tutorial/version-control
- https://www.javatpoint.com/git-log
- https://github.com/git-tips/tips
- Introduction to HTML
- Elements and Attributes
- Classes and identifiers
- Forms & Inputs
- Semantic HTML
Task:
- Create a Registration and Login page for an eCommerce website
Reference:
- Introduction to CSS
- CSS Selectors
- Inline, Internal, and External CSS
- CSS Properties
- Viewport
Reference:
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Properties_Reference
- https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
- https://uxplanet.org/figma-all-you-need-to-know-156b52b88e54
- https://www.seobility.net/en/wiki/Viewport https://flukeout.github.io/
- Javascript Essentials by Lawrence Turton (Udemy Free)
- Namaste JavaScript Season 1 and Season 2 by Akshay Saini (YouTube)
- Introduction to JavaScript
- Variables
- var, let, and const
- Data types
- Primitives
- Type Conversions
- Operators
- typeof operator
- Comparisons
- Interaction: alert, prompt, confirm
- Conditional operators: if, '?'
- Logical operators
- Loops & iteration
- The "switch" statement
- Functions
- Function expressions
- console object and its methods
Task:
- Find out about the most popular JavaScript frameworks. (At least 5)
- Find out about the most popular open-source JavaScript frameworks. (At least 5)
- Provided the following array: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Filter out odd, even, and prime numbers and print them
- Provided the following array:
[0, 2, 4, 6, 8, 10, 12, 14, 16], generate and print another list such that:
- Every element being twice of elements in the current list.
- Every element being half of the elements in the current list.
- Provided the following array:
[10, 1, 42, 36, 4, 75, 6, 97, 81, 19, 10]
- Find the sum, min, and max
- Print “List is full of prime no” if every element is prime
- Print “List has a prime no” if there is a prime no in it
- Remove duplicate values from the list () Note: Use loops for above problems
- What will be the output for below code:
- console.log(typeof undefined)
- console.log(typeof null)
Higly recomended:
- Objects and its methods (Object.keys(), values(), entries())
- Array
- Array - flat()
- Map and Set
- Garbage Collection
- Explore map(), filter(), reduce(), find(), some() and every() methods
- Strict keyword
- Cookies
- Arrow functions
Task:
-
Find the difference between Object and Map.
-
Identify the difference between regular functions and arrow functions
-
Provided the following array: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] , filter out odd, even, and prime numbers and print them
-
Provided the following array: [0, 2, 4, 6, 8, 10, 12, 14, 16], generate and print another list such that:
- Every element being twice of elements in the current list.
- Every element being half of the elements in the current list.
-
Provided the following array: [10, 1, 42, 36, 4, 75, 6, 97, 81, 19, 10]
-
Find the sum, min, and max
-
Print “List is full of prime no” if every element is prime
-
Print “List has a prime no” if there is a prime no in it
-
Remove duplicate values from the list. Note: Use map(), filter(), reduce(), some() and every() methods for above problems
-
Remove duplicate values from the list without using loop or any of the above methods (map(), filter(), reduce(), some() and every())
-
-
Provided an array of integers, find if there are any duplicates in the array.
Output: true - if any value appears at least twice in the array, false - if every element is distinct.
Example: Array -> [10, 1, 42, 36, 4, 75, 6, 97, 81, 19, 10] Output -> true
Array -> [10, 1, 42, 36, 4, 75, 6, 97, 81, 19] Output -> false
-
Provided array: [10, [1, 42], 36, [4, 75, [6, 97], 81], 19, 10]
- Flatten array to [10, 1, 42, 36, 4, 75, [6, 97], 81, 19, 10]
- Flatten array to [10, 1, 42, 36, 4, 75, [6, 97], 81, 19, 10]
- Implement logic to flatten such arrays for any level. All the arrays of any depth should be flattened to single depth
Reference:
- “this” keyword
- Constructor functions and the "new" operator.
- Numbers
- Strings
- Array and its methods
- Hoisting
- Scoping
- Super keyword
- Error Handling, “try...catch”
- throw keyword
- Modules
- export/import
- Dynamic import
- Nested functions
- Classes
- Class basic syntax
- Class Inheritance
- Extending built-in classes
Task:
-
Provided following array:
[ {“id”: 1, “name”: “Amit Kumar”, “age”: 25}, {“id”: 2, “name”: “Rahul Dixit”, “age”: 20}, {“id”: 3, “name”: “Ravi Joshi”, “age”: 55}, {“id”: 4, “name”: “Rohit Verma”, “age”: 35}, {“id”: 5, “name”: “Ajay Jain”, “age”: 17}, ]
- Print id and name of the youngest and oldest person
- Create another list having id and name of all the person above 18 years
- Find the average age
- Create 2 list with names starting with only ‘A’ and ‘R’ respectively
Note: Use map(), filter(), reduce, some() and every() methods for above problems
-
Try the below code and identify which of the below programs are a valid case of hoisting?
- Program 1:
a = 10; console.log(a); var a;
- Program 2:
a = 5; console.log(a); let a;
- JSON and its methods(toJSON)
- Rest Parameters
- arguments keyword
- Spread Syntax
- Recursion and Stack
- Variable Scope
- Regular Expressions Task:
- Implement code to deep clone an object using JSON methods
- Implement regular expression for name with letters
- Implement code for sum using recursion
- DOM
- Searching: getElement*, querySelector*
- Introduction to Events
- Introduction to browser events
- Bubbling and capturing
- Event delegation
- Browser default actions
- Dispatching custom events
Task: -
- Implement 2 event listener on click event of which one executes on bubbling and while other on capture
Reference:
- UI Events
- Mouse events basics
- Scrolling
- Forms, controls
- Form properties and methods
- Focusing: focus/blur
- Forms: event and method submit
- Page: DOMContentLoaded, load, beforeunload, unload
- Scripts: async, defer
Task: -
- To change the background color of the second column of a table having “n ” rows on click by using querySelector.
- Resource loading: onload and onerror
- Popups and window methods
- Binary data, files
- LocalStorage, sessionStorage
- Static properties and methods
- Private and protected properties and methods
- Class checking: "instanceof"
Task: -
- To create a textarea and if a user makes changes to it without saving then show an alert that data is not saved. (Similar to https://stackoverflow.com/questions/ask)
- Change the color of the cell to red when the user clicks on a cell and revert when the user again clicks.
- Blob
- File and FileReader
- REST API
- GraphQL
- XMLHttpRequest and AJAX
- Fetch API
- Fetch methods
- Preflight Request
- FormData
- URL objects
Task: -
- Change image on runtime when it is not available on the specified path while loading the page.
- Date and time
- Object to primitive conversion
- Scheduling: setTimeout and setInterval
- Callbacks
- Promise
- Promises chaining
- Error handling with promises
- Promise API
- Promisification
- Async/await
- The "new Function" syntax Task: -
- Implement a simple code to use a Promise
- Implement code to handle multiple promises. You have to fetch information of 5 different products from API
- Function binding
- Custom errors, extending Error
- Async iterators and generators
- Destructuring assignment
- ECMAScript 5(EC5)
- ECMAScript 6(EC6)
Module 11: Expected: 8 hours
- WebSocket
- SPA (Single Page Applications)
- SEO (Search Engine Optimization) and how it works with SPA?
- SSR (Server Side Rendering)
- CORS (Cross-Origin Resource Sharing)
- JavaScript & Typescript Best Practices
Task:
- Verify your code comply with the best practices and fix them if required.
Reference:
- https://www.w3.org/wiki/JavaScript_best_practices
- https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
- https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin
- Object fit property
- Media Queries
- Box Model
- Specificity
- CSS Grid
- Flexbox
- Comments
- Responsive design
- Material Design
- Figma
- NPM and Yarn
Task:
-
You are writing a responsive layout for a website that has dramatically different layouts for mobile and desktop. Which of the following media queries would you use and why?
@media (max-width: … @media (min-width: …
Cite 3 sources that back up your position. You cannot cite Stackoverflow. Provide links for all sources and time codes for videos.
- Vue.js : Introduction
- The Vue Instance
- Data and Methods
- Instance Lifecycle Hooks
- Life cycle diagram
- Template Syntax
- Computed Property and Watchers
Task:
- Create a basic “Hello World!” Vue application.
- Declarative Rendering
- Conditionals and Loops
- Class and Style Bindings
- List Rendering
- Event Handling
- Form Input Bindings
- Component Basics Task:
- Create a new branch from last task and Implement a Login and Registration page
- Transitions
- Props
- Filters
- Directives
- Custom Directives
- Mixins
- Slots
- Routing
- Routing Guards
- Working with API
- Axios
Task: -
- Create a ecommerce-clone branch and push files & folders generated for new fresh app using Vue CLI
- Create a new branch from the last task branch and Implement e-commerce web application (Clone any popular website like Amazon, Flipkart etc or any template of your choice) with a home page and top navigation with dead links.
- Create a new branch from the last task branch and add a category page which lists all products belonging to the category. Create a new PR with the last task branch as the target branch.
- You could use Fakestoreapi or any other public APIs
- Event Bus
- State Management
- Vuex
- Composition API
Task: -
- Create a new branch from the last task branch. Add features to sort and filter out products based upon price, color or any other field on the category page. Create a new PR with the last task branch as the target branch.
- Create a new branch from the last task branch. Implement product details page. Create a new PR with the last task branch as the target branch.
- Debugging
- Interceptor and its use with Axios
- Internationalisation/Localisation in applications
- Using Vue I18n
Task: -
- Implement Registration and Login page.
- Store the token in local storage
- Implement a interceptor which adds token to headers
- Use Axios cache plugin to cache product API
- Update application labels to use internationalization
- PWA(Progressive Web App)
- Service Worker
- Precaching
Reference:
- SSR in Vue and prerendering
- Dynamic content rendering in Vue
- Vue best practices
- Modes and Environment Variables
- Dev Tools ()
- Postman Task:
- Verify your code comply with the best practices and fix them if required.
Reference:
- https://vuejs.org/v2/style-guide/
- https://v3.vuejs.org/style-guide
- https://cli.vuejs.org/guide/mode-and-env.html#modes
- Ionic Framework - Introduction
- Hybrid, cross platform and native apps
- Cordova and Capacitor
- Webview
- Components
- Slots
- Debugging
Task:
- Build Netflix/Twitter UI using Ionic components.
Reference:
- https://www.youtube.com/playlist?list=PLgsLdFrhfGLTYUUf5dwD6YiT9a1O9QHoE
- https://www.youtube.com/watch?v=_X0FzNBKEZg&list=PLgsLdFrhfGLQ9tz-akOEucCch8HjHgOlc
- https://www.youtube.com/watch?v=qoH3-JISa4w&list=PLgsLdFrhfGLRNhU4DL8a0ONEAUhcAfdXR
- https://youtu.be/3_XPLojd83I
- https://youtu.be/xCZmlkKc36Y
- https://youtu.be/zyBY4xTga8M
- https://youtu.be/lhY79cBaH_o
- https://youtu.be/WKwfP_6e044
- https://youtu.be/P4ok5td5_gY
- https://youtu.be/ySVNifnuq3Q
- https://youtu.be/n0q8E615eOI
- https://youtu.be/xSy73Fx0qlE
- https://youtu.be/-rkHVDLSSrU
- https://youtu.be/PY5xqeWYpTw
- https://youtu.be/Xk_Jc7BwJqw
- https://youtu.be/OobddatK434
- https://ionicframework.com/docs/core-concepts/fundamentals
- https://ionicframework.com/getting-started
- https://ionicframework.com/docs/vue/quickstart
- https://ionicframework.com/docs/core-concepts/cross-platform
- https://ionicframework.com/docs/core-concepts/webview
- https://www.youtube.com/channel/UC1zRV-9GAScMjydTPRf-tSw
- https://capacitorjs.com/
- https://capacitorjs.com/docs
- https://www.youtube.com/watch?v=d70jQxQuSeY
- https://stackoverflow.com/questions/63084828/gitignore-for-an-ionic-project-with-android-target
- https://developer.apple.com/design/human-interface-guidelines/ios/views/popovers/
- https://www.youtube.com/watch?v=0ZiSjFj8tMI&list=RDCMUCZZPgUIorPao48a1tBYSDgg&start_radio=1
- https://ionicframework.com/docs/troubleshooting/debugging