Seminar Modern Programming Languages (Winter 2024/25)
Type: | Seminar |
---|---|
Programs: | BSc CS, ITS, AI |
Organizer: | Michael Walter |
Teaching Assistant: | Anurudh Peduri |
Time and Place: |
see below |
First meeting: | Oct 8, 17:00 (MC 1.84) |
Credits: | 3 CP |
Contact time: | 2 SWS |
Language: | English |
Course number: | 212115 |
Links: | VVZ |
Course Description
Computing is ubiquitous in our daily life; it pervades everything from mobile phones and embedded devices to supercomputers and cloud computing infrastructure. Given these vastly different platforms and use cases, there is a wide variety of programming languages - they differ in the target domains they are designed for, the paradigms they follow and the concepts they are built on, and the features and abstractions that they offer programmers to express computations clearly and robustly. In this seminar you will have the opportunity to explore a variety of modern programming languages and their key features.
How to sign up?
The seminar has a limited number of participants. If you are interested, please send an email to Anurudh Peduri before September 15 with subject “Seminar Modern Programming Languages”. In your email, please include your study program and student ID. Signups are closed now.
How does it work?
You will each study one programming language, with an emphasis on certain key features (see the list below for possible choices). You will present the results of your investigations to your peers and also provide a written report. When preparing your report and presentation, please think carefully about the underlying motivations, fundamental concepts, instructive examples, and possible application scenarios. Work out similarities between the language that you are presenting and other languages that you know from your studies.
In addition, you will be asked to peer-review two of your fellow students’ contributions. This will allow you to learn from each other and get acquainted with good scientific practice.
This semester we will experiment with a new format. After the kick-off meeting, where topics will be distributed, you will work on your report and presentation. We will then have a final session in the spirit of a block seminar, where everyone presents their results.
Language choices
- Ahmed: Go (error handling,
defer
, channels and goroutines, garbage collection,go generate
) - Alexander: Jai (metaprogramming and compile-time execution, context handling incl. allocators)
- Daniel: GLSL (graphics pipeline, vertex/fragment/geometry/compute shaders, samplers, uniform, …)
- Dominik: WebAssembly (virtual machine, instruction set, execution environment)
- Fahmi: Haskell (type classes, lazy evaluation, purity,
IO
and other monads,do
notation) - Glenn: Julia (multiple dispatch, metaprogramming and macros, arrays, vectorization and broadcasting)
- Henry: Dart (null safety, type system, Flutter integration, concurrency)
- Sidra: OCaml (type inference, algebraic data types and pattern matching, modules and functors)
- Simon: Zig (memory management, error handling, generics,
comptime
, reflection) - Souren: Kotlin (null safety, extension functions, data classes and sealed classes, coroutines and asynchronous programming, higher-order functions and lambdas, reflection)
-
Yassine: TypeScript (type inference and narrowing, generics,
keyof
, conditional types, mapped types, template literal types) Coq (concepts covered in the first three chapters in this book)Idris 2 (dependent types, multiplicities, theorem proving)Racket (tail recursion, pattern-based macros, continuations, contracts)Rust (ownership and borrowing, error handling and?
operator, traits, smart pointers)CUDA (a platform, not a language; programming model, kernels, C++ language extensions, tooling)JAX (a DSL; autograd,vmap
andpmap
, XLA andjit
, how it works under the hood)
Recommended prior knowledge
Good familiarity with at least one programming language (such as Python or Java) and programming paradigm (such as object-oriented or functional programming).
Learning outcomes
In this seminar, you will obtain insight into a variety of modern programming languages and some of their key features and concepts. This will help you prepare for a BSc project in the theory of programming languages, but also teach you practical skills that are useful in adjacent fields such as software engineering. In addition, you get to practice some fundamental skills: independent literature search and comprehension; distilling the essence of a research topic into a report; time management; giving feedback; the scientific peer-review process.
Schedule
Date | Agenda |
---|---|
Oct-Dec 2024 | Meetings with supervisors (please contact Anurudh) |
Jan 2, 2025 | Submit preliminary final report |
Jan 14, 2025 | Submit peer reviews on two other reports |
Jan 28, 2025 | Submit final report |
Jan 31, 2025 | Final presentation day |
All submissions to be done via moodle.
Assessment
To get credit for this course, you need to the following by the deadlines listed above:
- submit a preliminary and final version of your final report (max. 10 pages excl. references; you must use LaTeX with the “ACM Journals Primary Article Template” template, see this overleaf link template, and use the following document class:
\documentclass[acmsmall,screen,nonacm,review]{acmart}
). - prepare two peer reviews on draft reports submitted by other participants (max. 1 page each)
- give a 20 minute presentation (followed by around 10 minutes of discussion and feedback) and attend the presentations of your peers
Your grade will be computed as follows: 50% * report + 40% * presentation + 10% peer review.
← Back