Harokopio University
School: School of Digital Technology
Department: Informatics and Telematics
Program: Information Technology

Advanced Programming

Semester: 4 ECTS: 8.0 Compulsory Erasmus

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