What to study ?
Your future depends on what path you follow.
Offline classes (New batches starting in May 2026)
C, C++ & DSA
Time 6:30 to 6:30 PM (Evening)
Days : Mon, Wed & Fri.
Starts on 11-May-2026
Days : Mon, Wed & Fri.
Starts on 11-May-2026
Fee Rs.12000/-
Prerequisite : None
Prerequisite : None
Java
Time 6:30 to 7:30 PM (Evening)
Days : Tue, Thu & Sat.
Starts on 19-May-2026
Days : Tue, Thu & Sat.
Starts on 19-May-2026
Fee Rs.12000/-
Prerequisite : Knowledge of C/C++ required
Prerequisite : Knowledge of C/C++ required
Pay fee and book your seat now.
Fee cannot be paid in installments
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.
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)
Java Programming Language
- Platform dependent v/s independent programming languages
- JDK / JRE
- The Java Virtual Machine
- Setting up JDK
- Primitive data types
- Pointers in java
- Encapsulation
- Polymporphism
- Inheritance
- Why java doesn't support multiple inheritance ?
- Method overriding
- Constructors
- Automatic garbage collector
- Object / class and local variables
- static methods
- Rules of assignment in context to object / class and local variables
- final variables
- final methods
- final class
- Creating abstract class to impose guidelines
- Interface, an alternative to creating abstract class
- Creating packages
- Compiling and running with classpath
- Separating source code and compiled code while creating packages
- Creating jar files
- String
- Deep comparison
- Array in java as an object
- Exception handling
- Creating custom exceptions
- Throwing exceptions
- Checked v/s unchecked exceptions
- Autocloseable
- try with resources
- Reading from stdin
- Creating io tool for input
- File handling
- Performing CRUD Operation
- Creating data layer
- Using AI Tools to recreate data layer and understand the process
- Creating presentation layer for CLI
- Setting up MySql
- JDBC Programming
- Using VS Code and integrating AI tools
- Creating data layer for database
- Abstract Window Toolkit - Graphical user interface
- Event programming
- Creating presentation layer using AWT
- Swing - Better Graphical user interface
- GUI with tabular user interfaces
- Using Cursor with AI Integration
- Creating presentation layer using Swing
- Multi threading
- Thread management
- Race conditions
- Synchronization
- Synchronizing producer / consumer
- Thread pools and executor framework
- Network programming
- Creating multi threaded server
- Using build tools
- Reflection API
- Creating magic with reflection API
- Using Intellij IDEA with AI Integration
- Project with client / server programming
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