Programming Languages & Paradigms

There are many programming languages out there, with different features for solving different problems. Most of them can be roughly categorized in what paradigms, i.e., approaches to programming, they support. Three well-known paradigms are:

Note, however, that many programming languages support more than one paradigm, or are somewhere in between. For example, Python also supports functional programming, and C++ and Java have evolved from purely imperative languages to also support functional features, like lambda abstractions. An overview of many paradigms and languages can be found in this video, which is based on Peter van Roy's overview.

In this topic, we cover questions about programming languages, including their design, features, and implementations. Typical projects in this topic


Related Modules

Available Project Proposals

If you are interested in the general topic of Programming Languages and Paradigms, or if have your own project idea related to the topic, please contact us directly. Alternatively, you can also work on one of the following concrete project proposals:

  • Design your own PL (Peter Lammich)

    Design your own programming language, trying to combine fancy features from recent modern programming languages in a reasonable way. Use LLVM as back-end, to get all standard optimizations and code-generation (almost) for free.

  • DSLs for Networking Paradigms (Georgiana Caltais)

    Are you a graduate student eager to tackle real-world problems in networking and data processing? Join us for an exciting Master's thesis project focusing on Domain-Specific Languages (DSLs) for Software Defined Networking (SDN) and big data applications!

    SDN-based technologies, embraced by industry leaders like Google and Intel IT, can play an important role in solving issues concerning data processing in cloud data centers, optimisations and data delivery. SDN is an emerging approach to network programming, in a setting where the network control is decoupled from the forwarding functions. This makes the network control directly programmable and more flexible to change.

    In this project, you'll have the chance to advance DSLs for SDN-based technologies, helping to solve critical issues concerning SDNs’ reliability. Whether you're into theory or hands-on work, there's a project suited for you:

    • If you prefer hands-on experimentation, roll up your sleeves and delve into devising algorithms for extracting and analysing SDNs based on real datasets, while gaining valuable real-world experience along the way.
    • For the theory enthusiasts, explore how mathematical frameworks can drive safety and robustness in SDNs. Furthermore, work on liability frameworks for SDNs, to answer questions such as: “What caused my network to fail?” or “Who is responsible for that packet loss?”.
    • Bring your ideas and expertise to the table as we tackle some of the most pressing challenges in networking and data processing.

    Your Master's thesis could be the key to unlocking groundbreaking advancements in SDN and big data technologies!