What to study ? Your future depends on what path you follow.

Classroom audio recording / code will be available for download through our website.
This helps students to revise, write down missed theory and document everything in neat and tidy fashion.
Offline class
C,   C++   &   DSA Course contents
C Programming Language
  1. Fundamentals
  2. Structure of a program
  3. Installing MinGW
  4. Compiling
  5. why include header files
  6. Performing I/O
  7. if/else
  8. switch/case
  9. for/while/do-while loop
  10. Array
  11. Array algorithms
  12. Sorting algorithms
  13. Creating functions other than main
  14. Pointers
  15. Call by value / reference
  16. Passing array as arguments
  17. Using Pointers as an array
  18. Global variable
  19. Dynamic memory allocation
  20. malloc & free
  21. Character data type
  22. Strings
  23. scanf / format specifiers / stdin buffer
  24. Clearing stdin buffer
  25. String algorithms & functions
  26. Structures
  27. Pointer to structure
  28. Structure padding & packing
  29. Pointer to function
  30. Passing command line arguments
  31. Creating macros
  32. typedef
  33. Linked list and tree algorithms
  34. File handling
  35. Reading/writing char to file
  36. Reading/writing string to file
  37. Reading/Writing structures to file
  38. Creating header files
  39. Include guards
  40. Creating library
  41. Application development
C++ Programming Language
  1. Polymorphism
  2. Call by reference (Creating alias)
  3. Encapsulation
  4. Static method
  5. Static property
  6. this pointer
  7. Procedural v/s Object oriented programming
  8. namespaces
  9. Overloading insertion operator
  10. Overloading extraction operator
  11. Creating Monitor / Keyboard classes
  12. cout / cin
  13. Dynamic memory allocation
  14. new and delete operators
  15. Function parameter with default argument
  16. Empty Constructor
  17. Default Constructor
  18. Parameterized Constructor
  19. Default argument constructor
  20. Copy constructor
  21. Move constructor
  22. Copy assignment operator
  23. Move assignment operator
  24. Overloading data type
  25. Friend function
  26. Friend class
  27. Return Value Optimization (RVO)
  28. Creating TMString class
  29. Overloading arithmetic operators
  30. Overloading relational operators
  31. Overloading dereferencing operator
  32. Functors (callable objects)
  33. Class templates
  34. Function templates
  35. Creating TMVector class
  36. Overloading [] subscript operator
  37. Creating TMList class
  38. Overloading increment/decrement operators
  39. Creating Iterators
  40. Standard Template Library
  41. STL Types: List,Stack,Queue,Map & Set
  42. STL - When to use what, in online assesment coding rounds
  43. Inheritance
  44. Virtual Inheritance
  45. Constructor execution sequence in case of inheritance
  46. Destructor execution sequence in case of inheritance
  47. Method Overriding
  48. Virtual functions
  49. Virtual destructor
  50. Virtual polymorphism
  51. Pure virtual functions
  52. Abstract class
  53. File Handling
  54. Smart Pointers (Unique/Shared/Weak)
  55. Exception handling
  56. cache hit/cache miss
  57. Code Optimization to avoid cache miss
  58. lambdas
  59. Multithreading
  60. Synchronizing threads
  61. Communication between threads
Data Structures & Algorithms
  1. Linear sort
  2. Bubble sort
  3. Selection sort
  4. Insertion sort
  5. Shell sort
  6. Creating Max/Min Heap
  7. Heap sort
  8. Priority Queue using heap
  9. Stack
  10. Queue
  11. Quick Sort using recursion
  12. Quick Sort without recursion
  13. Merge Sort using recursion
  14. Merge Sort without recursion
  15. Singly Linked List
    • add at end
    • insert at top
    • insert at position
    • traverse top to bottom
    • traverse bottom to top
    • remove from position
    • clear list
  16. Doubly Linked List
    • add at end
    • insert at top
    • insert at position
    • traverse top to bottom
    • traverse bottom to top
    • remove from position
    • clear list
  17. Binary Search Tree
    • insert
    • search
    • remove
    • inorder traversal with recursion
    • inorder traversal without recursion
    • preorder traversal with recursion
    • preorder traversal without recursion
    • postorder traversal with recursion
    • postorder traversal without recursion
    • level order traversal
    • getting the height of the tree
    • clear tree
  18. AVL Tree (Self balanced tree)
    • insert
    • search
    • remove
    • inorder traversal with recursion
    • inorder traversal without recursion
    • preorder traversal with recursion
    • preorder traversal without recursion
    • postorder traversal with recursion
    • postorder traversal without recursion
    • level order traversal
    • getting the height of the tree
    • clear tree
  19. Red Black Tree
    • insert
    • search
    • remove
    • inorder traversal with recursion
    • inorder traversal without recursion
    • preorder traversal with recursion
    • preorder traversal without recursion
    • postorder traversal with recursion
    • postorder traversal without recursion
    • level order traversal
    • getting the height of the tree
    • clear tree
  20. Creating Map class by wrapping up Red Black Tree
  21. Creating HashTable
  22. Converting infix expression to prefix/postfix
  23. Evaluating prefix/postfix expressions
  24. Graph (Shortest Path Algorithms)
  25. Dijkstra's (Breadth first search algorithm)
  26. Dijkstra's (Depth first search algorithm)
Online live class (Zoom Platform)
HPC Course Contents
 HPC v/s HFT and the HFC overlap
  1. What is HPC ?
  2. What is HFT ?
  3. How HFC is intersection of both ?
  4. Can it be learned on one machine or a cluster is required ?
 Minimizing Latency
  1. Understanding latency
  2. Measuring latency
  3. Is it always related to network programming ?
  4. Cache hit/miss
  5. Cache friendly data access to maximize cache hit
  6. Aligning Data
  7. Alternative to virtual polymorphism
  8. Optimizing DS, loops, function calls
  9. Exception handling will slow down
  10. Compiler optimization flags
  11. Dynamic memory allocation will slow down
  12. Avoiding dynamic memory allocations
  13. Creating memory pools
  14. Creating lock free data structures to avoid wait times
  15. Low latency logging
  16. Network programming
 Multi-threading
  1. Matrix multiplication
  2. Measuring processing time
  3. Understanding cache hit/cache miss
  4. Revised matrix multiplication
  5. Concurrency
  6. Creating threads
  7. Threaded matrix multiplication
  8. lambdas
  9. Locks
  10. Lock guards
  11. Preventing deadlocks
  12. Condition variables
  13. Atomics
  14. Tasks and futures
  15. Synchronizing threads
  16. Communication between threads
  17. Creating lock based data structures
  18. Creating thread pools
  19. Creating lock free data structures
  20. Parallel Standard Template Library
  21. execution policies
  22. vectors in parallel
  23. for_each in parallel
  24. load balancing
  25. exception handling in parallel execution
  26. for_each_n and ranges
  27. custom iterators in parallelism
  28. synchronization
  29. parallel data transformation using transform
  30. reduce and accumulate in parallel
  31. sorting in parallel
  32. searching in parallel
 Open Multi-Processing (OpenMP)
  1. Open MP Directives
  2. Parallelize loops
  3. Implementing reduction
  4. Environment variables
  5. Parallel Regions
  6. Work sharing
  7. Decomposing data structures for parallelism
  8. Controlling / Removing data dependencies
  9. Synchronization
  10. Mutual exclusion
  11. Synchronizing events
  12. Communication between threads
  13. Thread affinity
  14. SIMD Vectorization
  15. GPU Offloading
 Compute Unified Device Architecture (CUDA)
  1. CPU v/s GPU
  2. Which GPU for learning CUDA ?
  3. Data v/s Task parallelism
  4. GPU Architecture
  5. Setting up development environment for CUDA Programming
  6. Parallel programming begins with SIMD
  7. Compilation
  8. Writing kernel function
  9. Measuring GPU processing time
  10. Thread / Block / Grid
  11. Organizing parallel threads
  12. Query GPU Information
  13. Error handling
  14. CUDA Memory model
  15. Asynchronous execution with streams/events
  16. Setting up launch configurations
  17. Designing parallel algorithms
  18. Reduction algorithm
  19. Sorting in parallel
  20. Profiling and optimizing code
  21. Unrolling loops
  22. Debugging techniques
  23. CUDA Streams
  24. Creating library for integration with other programming languages
 What next ?
  1. HPC using distributed computing frameworks - An introduction
  2. How to get into High Frequency Trading domain as a programmer ?
  3. What is FPGA, Verilog & VHDL ? - An introduction