This course provides theoretical knowledge about, and practical skills in advanced programming paradigms. It builds on the background acquired in introductory programming courses (including OOP) and other computer science courses (OS, Computer Communication, Database Systems), to tackle programming models used in professional, enterprise-grade software development. Covered topics are organized in five parts, where each builds on previous ones:
- P1. Programming for communication: Client/server model and programming
- P2. Programming for integration: Service-oriented model and programming
- P3. Programming for performance: Multithreaded and asynchronous programming
- P4. Programming for extensibility: Functional and reactive programming
- P5. Programming for scalability: Distributed and parallelized programming
This course adopts the 3 most popular programming languages: JavaScript, Python and Java. It uses each time the most suitable language(s) to support and illustrate the concepts covered in each part.
This course enables learners to achieve the ability to:
- Master the client/server model and programming
- Master the service oriented model and programming
- Master multithreaded and asynchronous programming
- Master functional and reactive programming
- Master distributed and parallelized programming
Part | Main Concepts | Language(s) | APIs / Libraries / Frameworks / Runtimes |
---|---|---|---|
P1 | Protocols, clients, servers, sockets, blocking I/O | Java | Socket API |
P2 | RPC, Service Definition Language, Web Services, XML/SOAP, REST | Java, Python | JAX-WS, Python Zeep, JavaScript Soap, Spring Boot, OpenAPI, curl |
P3 | Threads, non-blocking I/O, event loop, job queue, callbacks, promises, async/await | Java, JavaScript | Thread/Runnable, Fetch API, Node.js |
P4 | Observables, observable piping and Rx operators, asynchronous streams | JavaScript | RxJS, Node.js |
P5 | Distributed parallelized datasets, distributed map/reduce (family of) operations, clusters, drivers, workers, distributed streaming, brokers, producers, consumers, topics, partitions | Java, Python | Spark, Kafka |
Develop | Build | Run | Collaborate |
---|---|---|---|
VS Code | Gradle | Docker | Git |