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.
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
- Fundamentals
- Structure of a program
- Installing MinGW
- Compiling
- why include header files
- Performing I/O
- if/else
- switch/case
- for/while/do-while loop
- Array
- Array algorithms
- Sorting algorithms
- Creating functions other than main
- Pointers
- Call by value / reference
- Passing array as arguments
- Using Pointers as an array
- Global variable
- Dynamic memory allocation
- malloc & free
- Character data type
- Strings
- scanf / format specifiers / stdin buffer
- Clearing stdin buffer
- String algorithms & functions
- Structures
- Pointer to structure
- Structure padding & packing
- Pointer to function
- Passing command line arguments
- Creating macros
- typedef
- Linked list and tree algorithms
- File handling
- Reading/writing char to file
- Reading/writing string to file
- Reading/Writing structures to file
- Creating header files
- Include guards
- Creating library
- Application development
C++ Programming Language
- Polymorphism
- Call by reference (Creating alias)
- Encapsulation
- Static method
- Static property
- this pointer
- Procedural v/s Object oriented programming
- namespaces
- Overloading insertion operator
- Overloading extraction operator
- Creating Monitor / Keyboard classes
- cout / cin
- Dynamic memory allocation
- new and delete operators
- Function parameter with default argument
- Empty Constructor
- Default Constructor
- Parameterized Constructor
- Default argument constructor
- Copy constructor
- Move constructor
- Copy assignment operator
- Move assignment operator
- Overloading data type
- Friend function
- Friend class
- Return Value Optimization (RVO)
- Creating TMString class
- Overloading arithmetic operators
- Overloading relational operators
- Overloading dereferencing operator
- Functors (callable objects)
- Class templates
- Function templates
- Creating TMVector class
- Overloading [] subscript operator
- Creating TMList class
- Overloading increment/decrement operators
- Creating Iterators
- Standard Template Library
- STL Types: List,Stack,Queue,Map & Set
- STL - When to use what, in online assesment coding rounds
- Inheritance
- Virtual Inheritance
- Constructor execution sequence in case of inheritance
- Destructor execution sequence in case of inheritance
- Method Overriding
- Virtual functions
- Virtual destructor
- Virtual polymorphism
- Pure virtual functions
- Abstract class
- File Handling
- Smart Pointers (Unique/Shared/Weak)
- Exception handling
- cache hit/cache miss
- Code Optimization to avoid cache miss
- lambdas
- Multithreading
- Synchronizing threads
- Communication between threads
Data Structures & Algorithms
- Linear sort
- Bubble sort
- Selection sort
- Insertion sort
- Shell sort
- Creating Max/Min Heap
- Heap sort
- Priority Queue using heap
- Stack
- Queue
- Quick Sort using recursion
- Quick Sort without recursion
- Merge Sort using recursion
- Merge Sort without recursion
-
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
-
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
-
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
-
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
-
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
- Creating Map class by wrapping up Red Black Tree
- Creating HashTable
- Converting infix expression to prefix/postfix
- Evaluating prefix/postfix expressions
- Graph (Shortest Path Algorithms)
- Dijkstra's (Breadth first search algorithm)
- Dijkstra's (Depth first search algorithm)
Online live class (Zoom Platform)
HPC Course Contents
HPC v/s HFT and the HFC overlap
- What is HPC ?
- What is HFT ?
- How HFC is intersection of both ?
- Can it be learned on one machine or a cluster is required ?
Minimizing Latency
- Understanding latency
- Measuring latency
- Is it always related to network programming ?
- Cache hit/miss
- Cache friendly data access to maximize cache hit
- Aligning Data
- Alternative to virtual polymorphism
- Optimizing DS, loops, function calls
- Exception handling will slow down
- Compiler optimization flags
- Dynamic memory allocation will slow down
- Avoiding dynamic memory allocations
- Creating memory pools
- Creating lock free data structures to avoid wait times
- Low latency logging
- Network programming
Multi-threading
- Matrix multiplication
- Measuring processing time
- Understanding cache hit/cache miss
- Revised matrix multiplication
- Concurrency
- Creating threads
- Threaded matrix multiplication
- lambdas
- Locks
- Lock guards
- Preventing deadlocks
- Condition variables
- Atomics
- Tasks and futures
- Synchronizing threads
- Communication between threads
- Creating lock based data structures
- Creating thread pools
- Creating lock free data structures
- Parallel Standard Template Library
- execution policies
- vectors in parallel
- for_each in parallel
- load balancing
- exception handling in parallel execution
- for_each_n and ranges
- custom iterators in parallelism
- synchronization
- parallel data transformation using transform
- reduce and accumulate in parallel
- sorting in parallel
- searching in parallel
Open Multi-Processing (OpenMP)
- Open MP Directives
- Parallelize loops
- Implementing reduction
- Environment variables
- Parallel Regions
- Work sharing
- Decomposing data structures for parallelism
- Controlling / Removing data dependencies
- Synchronization
- Mutual exclusion
- Synchronizing events
- Communication between threads
- Thread affinity
- SIMD Vectorization
- GPU Offloading
Compute Unified Device Architecture (CUDA)
- CPU v/s GPU
- Which GPU for learning CUDA ?
- Data v/s Task parallelism
- GPU Architecture
- Setting up development environment for CUDA Programming
- Parallel programming begins with SIMD
- Compilation
- Writing kernel function
- Measuring GPU processing time
- Thread / Block / Grid
- Organizing parallel threads
- Query GPU Information
- Error handling
- CUDA Memory model
- Asynchronous execution with streams/events
- Setting up launch configurations
- Designing parallel algorithms
- Reduction algorithm
- Sorting in parallel
- Profiling and optimizing code
- Unrolling loops
- Debugging techniques
- CUDA Streams
- Creating library for integration with other programming languages
What next ?
- HPC using distributed computing frameworks - An introduction
- How to get into High Frequency Trading domain as a programmer ?
- What is FPGA, Verilog & VHDL ? - An introduction