Skip to content

oiraqi/paradigms

Repository files navigation

Programming Paradigms

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:

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.

Intended Learning Outcomes

This course enables learners to achieve the ability to:

  1. Master the client/server model and programming
  2. Master the service oriented model and programming
  3. Master multithreaded and asynchronous programming
  4. Master functional and reactive programming
  5. Master distributed and parallelized programming

Content

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

Tools

Develop Build Run Collaborate
VS Code Gradle Docker Git

About

Programming Paradigms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published