Advanced Programming
General
Code: BSC_IT17
Language: English
Delivery: In person
Prerequisites:
- Introduction to Computing
- Introduction to OO Programming
Workload
- Lectures: 39.0 hours
- Lab: 13.0 hours
- Study: 78.0 hours
- Project: 70.0 hours
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.
Skills
Search for, analysis and synthesis of data and information, with the use of the necessary technology
Adapting to new situations
Working independently
Team work
Working in an international environment
Project planning and management
Criticism and self-criticism
Production of free, creative and inductive thinking
