DSA with Python
Data Structures & Algorithms Training for Software Careers
The DSA with Python Program strengthens programming fundamentals, logical thinking, and algorithmic problem-solving skills required for software engineering roles. Data Structures and Algorithms are essential for coding interviews and efficient software development. The course covers arrays, linked lists, stacks, queues, trees, recursion, searching algorithms, sorting techniques, and complexity analysis concepts. Learners practice solving coding challenges that improve efficiency and analytical reasoning. Structured exercises help students develop optimized coding approaches while understanding performance trade-offs in software design. Continuous practice enhances coding speed and confidence required for technical interviews. The program is ideal for students preparing for product-based company interviews, competitive programming, or advanced development careers. Career opportunities include Software Developer, Backend Developer, Programming Engineer, Competitive Programmer, Application Developer, and Technical Software Engineer roles across product companies and technology startups.6 comprehensive modules
Duration: 2 Weeks | 16 Hours
Week 1: Data Structures Fundamentals
Day 1-2: Introduction to Data Structures
Topics:
- What are data structures?
- Why do data structures matter?
- Abstract Data Types (ADT) vs Data Structures
- Common data structures overview
- Real-world applications
Subtopics:
- Classification of data structures (linear vs non-linear)
- Static vs dynamic data structures
- In-memory representation
- Choice factors for data structures
Learning Activities:
- Interactive presentation: Why data structures matter
- Video: Real companies using data structures
- Discussion: Which structure for which problem?
- Worksheet: Matching problems to structures
Hands-On Lab:
- Set up Python development environment
- Write first Python program analyzing data
- Experiment with built-in lists and dictionaries
- Profile memory usage of different structures
Day 3-4: Algorithm Analysis & Big O Notation
Topics:
- Time complexity and space complexity
- Big O notation
- Asymptotic analysis
- Best, average, worst cases
- Practical complexity analysis
Subtopics:
- O(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ), O(n!)
- Constant factors and lower-order terms
- Finding complexity of code snippets
- Amortized analysis basics
- Space complexity calculation
Learning Activities:
- Analyze code to find Big O
- Compare algorithm performance
- Visualize Big O growth (graphs)
- Interactive Big O complexity chart
Hands-On Lab:
Practical Exercises:
1. Write functions with different complexities
2. Time different algorithms
3. Compare lists vs other structures
4. Measure memory usage
5. Plot complexity curves
Mini-Project 1: Algorithm Analyzer
Create program that:
- Analyzes given code for time complexity
- Measures actual execution time
- Predicts vs actual comparison
- Creates complexity graphs
- Ranks algorithms by efficiency
Day 5: Python Fundamentals for DS
Topics:
- Object-oriented Python
- Classes and objects
- Methods and attributes
- Inheritance and polymorphism
- Exception handling
Learning Activities:
- Design classes for data structures
- Implement basic OOP patterns
- Handle errors gracefully
- Create reusable code
Hands-On Lab:
Practice:
1. Create Employee class
2. Implement custom exceptions
3. Use inheritance hierarchy
4. Practice polymorphism
5. Handle edge cases
Week 2: Core Concepts Review & First Data Structure
Day 6-7: Python List vs Arrays
Topics:
- Python list internals
- Dynamic arrays
- Array vs list comparison
- Memory layout
- Performance characteristics
Subtopics:
- Dynamic resizing mechanism
- Amortized O(1) append
- Index access efficiency
- List methods and their complexities
Learning Activities:
- Understand list memory management
- Trace append operations
- Compare with static arrays
- Measure resize operations
Hands-On Lab:
Experiments:
1. Create custom dynamic array
2. Implement amortized append
3. Compare performance with list
4. Measure memory usage
5. Implement list methods
Mini-Project 2: Custom Array Implementation
Build from scratch:
- Dynamic array class
- Automatic resizing
- All list methods
- Performance benchmarks
- Comparison with built-in list
Day 8-9: Introduction to Strings & Text Processing
Topics:
- String data structure
- Character encoding
- String operations
- String matching basics
- Text processing patterns
Subtopics:
- String immutability
- String methods
- Regular expressions intro
- Pattern matching
- String algorithms (KMP, naive search)
Learning Activities:
- Work with different string operations
- Pattern matching exercises
- Performance of string operations
- Regular expressions practice
Hands-On Lab:
Practice:
1. Implement string operations
2. Naive pattern search
3. Regular expressions
4. Text processing
5. Performance comparison
Day 10: Module 1 Review & Assessment
Review Topics:
- Data structure importance
- Big O analysis
- Python fundamentals
- Array and string basics
Learning Activities:
- Comprehensive review session
- Q&A discussion
- Problem-solving practice
- Peer teaching
Module 1 Assessment:
- Written test: 30 questions (1 hour)
- Practical: 3 coding problems (1.5 hours)
- Mini-project presentation
- Code quality evaluation
Module 1 Projects Submission:
- Algorithm Analyzer
- Custom Array Implementation
- String Processing Tools
Duration: 3 Weeks | 24 Hours
Week 3: Linked Lists & Stack
Day 11-13: Singly Linked Lists
Topics:
- Linked list concept and structure
- Node representation
- Operations: creation, insertion, deletion, traversal
- Memory layout vs arrays
- Advantages and disadvantages
Subtopics:
- Node class design
- Head and tail pointers
- Insertion at different positions
- Deletion and memory cleanup
- Traversal techniques
- Circular linked lists
- Doubly linked lists
Learning Activities:
- Visual representation of linked lists
- Step-by-step operation tracing
- Compare with arrays
- Memory usage analysis
Hands-On Lab:
Implement from scratch:
- Node class
- LinkedList class
- Insert at beginning
- Insert at end
- Insert at position
- Delete node
- Traversal (forward, backward)
- Search
- Display
- Size calculation
Mini-Project 3: Linked List Implementation
Complete LinkedList with:
- Singly linked list
- Doubly linked list
- Circular linked list
- All operations
- Performance analysis
- Comparison with Python list
Day 14-15: Stack Data Structure
Topics:
- Stack concept (LIFO - Last In First Out)
- Stack operations: push, pop, peek, isEmpty
- Applications of stacks
- Implementation methods (array vs linked list)
Subtopics:
- Stack overflow and underflow
- Performance characteristics
- Stack frames in function calls
- Expression evaluation
- Backtracking problems
Learning Activities:
- Understand LIFO principle
- Trace stack operations
- Real-world applications
- Algorithm visualization
Hands-On Lab:
Implement Stack:
- Using list (array-based)
- Using linked list
- Push operation
- Pop operation
- Peek operation
- isEmpty check
- Performance comparison
Week 4: Queue & Advanced Linear Structures
Day 16-17: Queue Data Structure
Topics:
- Queue concept (FIFO - First In First Out)
- Queue operations: enqueue, dequeue, peek
- Types: Simple queue, circular queue, deque
- Applications and use cases
- Implementation (array vs linked list)
Subtopics:
- Circular queue advantages
- Double-ended queue (deque)
- Queue overflow and underflow
- Performance analysis
- Priority queues
Learning Activities:
- Understand FIFO principle
- Visualize queue operations
- Compare with stack
- Real-world applications
Hands-On Lab:
Implement Queue:
- .Simple queue (linked list)
- Circular queue (array)
- Deque (double-ended)
- Priority queue basics
- Performance comparison
Day 18-19: Advanced Linear Structures
Topics:
- Skip lists
- Self-organizing lists
- Hash tables (introduction)
- Sparse vectors
Subtopics:
- Skip list levels and probability
- Move-to-front heuristic
- Hashing basics
- Collision handling preview
Learning Activities:
- Understand skip list operations
- Analyze performance
- Compare with balanced trees
Hands-On Lab:
Explore:
- Skip list implementation
- Skip list search
- Self-organizing list
- Performance comparison
Day 20: Module 2 Review & Assessment
Module 2 Assessment:
- Written test: 35 questions (1.5 hours)
- Practical: 4 coding problems (2 hours)
- Project presentations
- Code quality review
Module 2 Projects Submission:
- Complete Linked List System
- Stack Applications
- Queue System
- Real-world Linear DS problem
Duration: 4 Weeks | 32 Hours
Week 5: Binary Trees & Tree Basics
Day 21-23: Binary Trees Fundamentals
Topics:
- Tree terminology (root, leaf, height, depth)
- Binary tree concept
- Tree representations
- Binary tree properties
- Tree traversal methods
Subtopics:
- Tree node structure
- Complete and perfect trees
- Tree height and level
- In-order, Pre-order, Post-order, Level-order traversals
- Recursive vs iterative traversals
Learning Activities:
- Visual tree representation
- Trace traversals step-by-step
- Understand recursion in trees
- Practice drawing trees
Hands-On Lab:
Implement Binary Tree:
- Node class
- Tree construction
- In-order traversal (recursive)
- Pre-order traversal (recursive)
- Post-order traversal (recursive)
- Level-order traversal (BFS with queue)
- Height calculation
- Size calculation
- Display tree structure
Mini-Project 4: Binary Tree Implementation
Complete BinaryTree with:
- All traversal methods
- Tree properties
- Tree manipulation
- Performance analysis
- Visualization
Day 24-25: Binary Search Trees (BST)
Topics:
- BST properties and definition
- BST operations: search, insert, delete
- BST performance
- Advantages and disadvantages
- Applications
Subtopics:
- In-order traversal for sorted order
- Finding minimum and maximum
- Finding successor and predecessor
- Balanced vs unbalanced BSTs
- Time complexity analysis
Learning Activities:
- Understand BST property
- Trace insertions and deletions
- Visualize unbalanced trees
- Compare search performance
Hands-On Lab:
Implement Binary Search Tree:
- Search operation
- Insert operation
- Delete operation (3 cases)
- Find minimum/maximum
- Find successor/predecessor
- Validate BST
- Tree balancing visualization
Week 6: Advanced Trees & Balancing
Day 26-27: AVL Trees & Balancing
Topics:
- Balanced tree concept
- AVL tree properties
- Balance factor
- Rotations (single and double)
- AVL insertion and deletion
Subtopics:
- Left-left, left-right cases
- Right-right, right-left cases
- AVL rebalancing
- Height-balanced property
- Complexity analysis
Learning Activities:
- Understand rotations visually
- Trace rebalancing
- Compare with unbalanced BST
- Performance analysis
Hands-On Lab:
Implement AVL Tree:
1. Balance factor calculation
2. Single rotation (LL, RR)
3. Double rotation (LR, RL)
4. Insert with rebalancing
5. Delete with rebalancing
6. Validate AVL property
Day 28: Red-Black Trees (Introduction)
Topics:
- Red-Black tree properties
- Color rules
- Insertion and deletion basics
- Complexity guarantees
- Comparison with AVL
Subtopics:
- RB-tree color constraints
- Black height
- Fixing violations
- Use cases (Java TreeMap, C++ std::map)
Learning Activities:
- nderstand RB-tree rules
- Trace color fixing
- Compare with AVL
Hands-On Lab:
Study Red-Black Trees:
1. Understand properties
2. Trace insertions
3. Trace deletions
4. Study implementations
5. Compare performance
Day 29: Heaps & Priority Queues
Topics:
- Heap concept (min-heap, max-heap)
- Complete binary tree
- Heap property
- Heap operations: insert, delete, extract
- Heap sort
- Priority queues
Subtopics:
- Array representation of heap
- Heapify operation
- Up-bubble and down-bubble
- Heap construction
- Complexity analysis
Learning Activities:
- Visualize heap operations
- Trace bubble-up/down
- Understand array indexing
- Performance analysis
Hands-On Lab:
Implement Max Heap:
- Array-based representation
- Insert (bubble-up)
- Delete (bubble-down)
- Extract max
- Heapify operation
- Heap sort algorithm
Day 30: Module 3 Review & Assessment
Module 3 Assessment:
- Written test: 40 questions (1.5 hours)
- Practical: 5 coding problems (2.5 hours)
- Project presentations
- Comparison analysis (BST vs AVL vs RB)
Module 3 Projects Submission:
- Binary Tree System
- BST with Analysis
- AVL Tree Implementation
- Heap & Priority Queue
- Tree-based Application (Real-world)
Duration: 3 Weeks | 24 Hours
Week 7: Graph Fundamentals & Representations
Day 31-32: Graph Basics
Topics:
- Graph terminology (vertices, edges, paths)
- Directed vs undirected graphs
- Weighted vs unweighted graphs
- Graph representations (adjacency matrix, list)
- Graph density and sparsity
Subtopics:
- Degree of vertex
- Connected components
- Strongly connected graphs
- DAG (Directed Acyclic Graph)
- Multigraph and simple graph
Learning Activities:
- Draw various graphs
- Compare representations
- Analyze space complexity
- Understand use cases
Hands-On Lab:
Graph Implementation:
- Vertex and Edge classes
- Adjacency matrix representation
- Adjacency list representation
- Add/remove vertex and edge
- Get neighbors
- Display graph
- Performance comparison
Day 33-34: Graph Traversal Algorithms
Topics:
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
- Traversal applications
- Time and space complexity
- Connected components
Subtopics:
- BFS with queue
- DFS with stack/recursion
- Visited tracking
- Path reconstruction
- Cycle detection (undirected and directed)
Learning Activities:
- Trace BFS step-by-step
- Trace DFS step-by-step
- Visualize exploration order
- Compare approaches
Hands-On Lab:
Implement Traversals:
- BFS (iterative with queue)
- DFS (recursive)
- DFS (iterative with stack)
- Detect cycle (undirected)
- Detect cycle (directed)
- Find connected components
- Topological sort (DFS-based)
- Path finding
Day 35: Shortest Path Algorithms
Topics:
- Dijkstra's algorithm (weighted, non-negative)
- Bellman-Ford algorithm
- Floyd-Warshall algorithm
- A* algorithm basics
Subtopics:
- Priority queue optimization in Dijkstra
- Negative edge handling
- All-pairs shortest path
- Heuristics in A*
Learning Activities:
- Trace Dijkstra step-by-step
- Compare algorithms
- Analyze complexity
- Understand trade-offs
Hands-On Lab:
Implement Algorithms:
- Dijkstra's algorithm
- Bellman-Ford algorithm
- Floyd-Warshall algorithm
- Distance matrix generation
Week 8: Minimum Spanning Trees & Hashing
Day 36-37: Minimum Spanning Trees
Topics:
- MST concept and properties
- Kruskal's algorithm
- Prim's algorithm
- Applications and use cases
- Comparison of algorithms
Subtopics:
- Union-Find (Disjoint Set Union)
- Cut property of MST
- Cycle property
- Dense vs sparse graphs
Learning Activities:
- Understand MST property
- Trace Kruskal's algorithm
- Trace Prim's algorithm
- Visualize MST construction
Hands-On Lab:
Implement MST Algorithms:
- Union-Find data structure
- Kruskal's algorithm (sort + union-find)
- Prim's algorithm
- MST cost calculation
- Performance comparison
Day 38: Hash Tables & Hashing
Topics:
- Hash function design
- Hash table concept
- Collision handling methods
- Load factor and rehashing
- Applications and use cases
Subtopics:
- Separate chaining
- Open addressing (linear, quadratic, double hashing)
- Hash function properties
- Universal hashing
- Perfect hashing
Learning Activities:
- Design hash functions
- Trace collision resolution
- Analyze performance
- Compare approaches
Hands-On Lab:
Implement Hash Table:
- Custom hash function
- Separate chaining collision handling
- Open addressing (linear probing)
- Rehashing when load factor > 0.75
- Insert, delete, search operations
- Performance analysis
Day 39: Hash Map & Applications
Topics:
- Hash map vs hash table
- Dictionary implementation
- Applications of hashing
- Counting and grouping problems
- Substring problems
Subtopics:
- Hash map in different languages
- Iteration and ordering
- Two-sum and extension problems
- Frequency problems
Hands-On Lab:
Hash Map Applications:
- Word frequency counter
- Anagram grouping
- Two-sum problem
- Duplicate detection
- Intersection of arrays
- Longest substring without repeating
Day 40: Module 4 Review & Assessment
Module 4 Assessment:
- Written test: 40 questions (1.5 hours)
- Practical: 5 coding problems (2.5 hours)
- Project presentations
- Algorithm comparison analysis
Module 4 Projects Submission:
- Graph Implementation & Traversals
- Shortest Path Solver
- MST Implementation
- Hash Table System
- Graph-based Application (Real-world)
Duration: 2 Weeks | 16 Hours
Week 9: Advanced Data Structures
Day 41-42: Trie (Prefix Tree)
Topics:
- Trie structure and nodes
- Prefix matching
- Applications (autocomplete, spell checker)
- Time and space complexity
- Optimization techniques
Subtopics:
- Trie construction
- Insertion and search
- Auto-complete implementation
- Space optimization (compressed trie)
Learning Activities:
- Understand trie structure
- Trace insertion and search
- Visualize prefix matching
- Compare with hash table
Hands-On Lab:
Implement Trie:
- TrieNode class
- Insert word
- Search word
- Starts with prefix
- Auto-complete suggestions
- Spell checker
- Longest common prefix
Practical Trie Applications:
- Auto-complete in search engines
- Spell checking
- IP routing (longest prefix match)
- Dictionary implementation
Practical Problems:
- Implement autocomplete
- Word search (in grid)
- Longest word in dictionary
- Design search autocomplete
Day 43: Segment Trees & Fenwick Trees
Topics:
- Segment tree concept
- Range queries and updates
- Fenwick tree (Binary Indexed Tree)
- Applications
- Time complexity
Subtopics:
- Segment tree construction
- Lazy propagation
- BIT operations
- Sum query in range
- Update in range
Learning Activities:
- Understand segment tree structure
- Trace queries and updates
- Compare with naive approach
- Analyze complexity
Hands-On Lab:
Implement:
- Segment tree (recursive)
- Range sum query
- Point update
- Range update (with lazy propagation)
- Fenwick tree
- BIT range sum
- BIT update
Practical Problems:
- Range sum query
- Update and query
- Count elements in range
Day 44: Union-Find & DSU
Topics:
- Disjoint Set Union (DSU)
- Union and find operations
- Path compression
- Union by rank
- Applications
Subtopics:
- Path compression optimization
- Union by rank/size
- Connected components
- Cycle detection in graphs
- Kruskal's algorithm application
Learning Activities:
- Understand union-find operations
- Trace path compression
- Analyze amortized complexity
- Compare optimization techniques
Hands-On Lab:
implement Union-Find:
- Basic union and find
- Path compression
- Union by rank
- Find connected components
- Detect cycle
- Kruskal's algorithm
Practical Problems:
- Connected components count
- Detecting cycle in graph
- Number of provinces
- Redundant connections
- Accounts merge
Day 45: Suffix Array & Pattern Matching
Topics:
- Suffix array concept
- Pattern matching in strings
- Applications (compression, bioinformatics)
- Time complexity
- Comparison with suffix trees
Subtopics:
- Suffix array construction
- Binary search on suffix array
- LCP (Longest Common Prefix) array
- Pattern matching
Learning Activities:
- Understand suffix array
- Trace construction
- Pattern matching practice
- Performance analysis
Hands-On Lab:
Implement:
1. Suffix array construction
2. LCP array
3. Pattern matching
4. Multiple pattern search
Week 10: Problem Solving & Complex Applications
Day 46-47: Complex Problem Solving
Topics:
- Combining multiple data structures
- Algorithm design techniques
- Trade-off analysis
- Optimization strategies
- Real-world problem modeling
Learning Activities:
- Solve complex problems from scratch
- Design solutions from requirements
- Optimize for different constraints
- Present design decisions
- Implement cache with O(1) operations
Complex Problems:
- LRU Cache (HashMap + Doubly Linked List)
- Evict least recently used
- Skyline Problem (Priority Queue + Tree)
- Merging city skylines
- Event-based approach
- Median Finder (Two Heaps)
- Dynamic median finding
- Stream processing
- Design Search Autocomplete (Trie + Heap)
- Fast prefix search
- Top k suggestions
- Stock Span Problem (Monotonic Stack)
- Daily spans calculation
- Optimization
- Closest Binary Search Tree Value (BST + Priority Queue)
- Find k closest elements
Mini-Project 5: System Design - In-Memory Database
Build database with:
- Hash table for data storage
- B-tree for range queries
- Indexing structures
- Query optimization
- Performance benchmarks
Day 48: Competitive Programming & Interview Prep
Topics:
- Interview preparation
- Common interview patterns
- Problem-solving strategies
- Time management
- Communication skills
Subtopics:
- Two-pointer technique
- Sliding window
- Divide and conquer
- Dynamic programming intro
- Backtracking
Learning Activities:
- Solve interview-style problems
- Practice communication
- Mock interview sessions
- Optimize solutions
Interview Problem Categories:
- Array/String Problems (30%)
- Tree Problems (20%)
- Graph Problems (15%)
- Linked List Problems (10%)
- Hash Table Problems (10%)
- Advanced Problems (15%)
Day 49-50: Module 5 Review & Final Projects
Module 5 Assessment:
- Written test: 30 questions (1 hour)
- Practical: 3 complex problems (1.5 hours)
- System design interview
- Code quality review
Module 5 Projects Submission:
- Advanced Data Structures (Trie, Segment Tree, etc.)
- Complex Problem Solutions
- System Design Project
- Performance Optimization Report
Duration: 2 Weeks | 16 Hours
Week 11: Real-World Applications
Day 51-52: Database Indexing & Query Optimization
Practical Application 1: Custom Database
Build simple database with:
- B-tree for indexed search
- Hash table for direct access
- Query optimization
- Explain plans
- Benchmark analysis
Components:
- File I/O for persistence
- Indexing strategies
- Query parser
- Optimizer
- Executor
Day 53: Social Network Analysis
Practical Application 2: Social Network
Model social network with:
- Graph for relationships
- Graph algorithms for recommendations
- Community detection
- Influence analysis
Features:
- User connections (graph)
- Recommendation algorithm
- Friend suggestions
- Feed ranking
- Viral spread simulation
Day 54-55: Capstone Project
Capstone Project Options:
Option 1: Search Engine
- Trie for auto-complete
- Graph for web crawling
- Hash tables for indexing
- Ranking algorithm
Option 2: File System
- Tree for directory structure
- Hash table for file lookup
- Allocation strategies
- Performance optimization
Option 3: Compiler/Interpreter
- Trie for symbol table
- Stack for expression evaluation
- Tree for AST
- Hash table for identifiers
Option 4: Game Development
- Spatial data structures for collision
- Priority queue for event handling
- Graph for pathfinding
- Optimization for performance
Option5: Machine Learning Pipeline
- Efficient data structures for model
- Feature indexing
- Caching strategies
- Performance optimization
Capstone Requirements:
- Design document
- Complete implementation
- Performance analysis
- Optimization report
- Presentation (20 minutes)
Week 12: Advanced Topics & Final Assessment
Day 56-57: Performance Optimization & Scalability
Topics:
- Memory optimization
- CPU cache awareness
- Parallelization opportunities
- Space-time tradeoffs
- Profiling and benchmarking
Learning Activities:
- Profile data structure operations
- Identify bottlenecks
- Implement optimizations
- Measure improvements
- Reduce allocations
Optimization Techniques:
- Memory Optimization
- Pool management
- Compression
- Access Pattern Optimization
- Cache locality
- Prefetching
- Memory alignment
- Algorithmic Optimization
- Reduce complexity
- Early termination
- Approximation
Day 58: Emerging Data Structures
Topics:
- Bloom filters
- Skip lists
- Cuckoo hashing
- Radix trees
- Persistent data structures
Learning Activities:
- Study advanced structures
- Understand trade-offs
- Real-world usage
- Implementation studies
Day 59: Final Project Presentations
Capstone Project Presentations:
- 20-minute presentation per student
- Live demo
- Q&A and feedback
- Code walkthrough
- Performance analysis
Presentation Criteria:
- Design and architecture (20%)
- Implementation quality (20%)
- Performance optimization (20%)
- Presentation skills (20%)
- Q&A and technical depth (20%)
Day 60: Final Assessment & Course Wrap-up
Final Comprehensive Assessment:
Written Exam (2 hours):
- 50 questions covering all modules
- Mix of theory and practical
- Design and analysis problems
- Code review exercises
Practical Exam (2.5 hours):
- Implement data structure from scratch
- Optimize given algorithm
- Design solution to new problem
Debug and fix issues
Career certifications validate expertise in a specific field, enhancing credibility and job prospects.
Yes, this course starts from the basics, provided you have minimal Python knowledge (variables, loops, functions, conditionals) and a problem-solving mindse
Absolutely; the course focuses on interview-style problems, includes dedicated preparation weeks, and addresses data structures questions commonly asked by companies
Students should dedicate approximately 2–3 hours daily outside of class for assignments and practice
Yes, the course offers online formats, and all lectures are live on zoom and recorded
If you struggle with a topic, the course provides additional mentoring, resources, and practice problems through extra Doubt classes