Advanced Programming & Performance Optimization
Different programming paradigms — object-oriented, functional, logic — bring different idioms: immutability, higher-order functions, pattern matching, message passing, abstraction through interfaces or types. Those idioms connect directly to a language's memory model (garbage collection, manual memory management, ownership/borrowing) and its concurrency model (threads, async/await, actors, message passing), and together they decide how safe, expressive, and fast the resulting code actually is.
Starting Points
- Kalin, M (2015). Concurrent and Parallel Programming Concepts. O'Reilly
- Harper, R. (2016). Practical Foundations for Programming Languages. Cambridge University Press.
- Marlow, S. (ed.) (2013). Parallel and Concurrent Programming in Haskell. O'Reilly.
- Klabnik, S., & Nichols, C. The Rust Programming Language (2nd ed.).
- Official documentation for at least two languages representing different paradigms (e.g. Java/C# for OOP, Haskell/Scala/F# for FP, Prolog for logic programming).
Key Points
- You explain the key concepts and idioms of at least two or three major paradigms (e.g. OOP vs. FP vs. logic programming).
- You describe trade-offs, e.g. why immutable data structures help with concurrency, or why logic programming suits search/constraint problems.
- You compare language features in terms of safety (type systems, ownership models), expressiveness (higher-order functions, pattern matching), and performance implications (garbage collection vs. manual memory management).