Course Content
Collections and Essential Data Structures
- Linear structures: List, Queues, Stacks.
- Implementing data structures using generics.
Advanced OOP
- Tree (in-order, pre-order, post-order)
- Graphs: traversals (BFS, DFS).
- Design patterns: creational and behavioral.
- Testing objects with mocks.
Functional Programming
- First-class functions: functions as values, higher-order functions
- The operators map(), filter() and reduce()
- Lazy Evaluation: Iterators and Generators
- Property-based testing
Concurrent and Asynchronous Programming
- Event-driven programming: observers, event listeners, callbacks, publisher/subscriber.
- Futures and promises
- Async/await, Async IO.
Learning Outcomes
- Implement and manipulate data structures.
- Apply creational and behavioral design patterns to produce flexible, maintainable object-oriented code.
- Treat functions as first-class values and compose higher-order functions to build expressive, reusable logic.
- Write unit tests using mocks and apply property-based testing to isolate and validate program behavior.
- Design event-driven systems.
- Write non-blocking asynchronous code and asynchronous I/O to build responsive, efficient programs.