As part of this course, you will be asked to give a presentation on a programming language outside those that you have seen previously during your degree.
In groups of 4 (or at most 5), please choose a topic from the list below. You can claim any topic by opening a pull request on the repository hosting this website, where you add the name of all the team members to the topic. I’ll try to merge these promptly, but you may want to check any open pull requests to be sure no other team has chosen this subject.
The aim of the presentations is to provide students with a broad overview of modern programming languages. In your presentation, you should try to give an overview of the language and try to position it relative to other languages you may know. This includes addressing questions such as:
But more generally, it’s not so important to describe the exact syntax of for-loops – try to focus on what makes this language interesting and different. I’ve tried to include some key questions for each topic, but there may be many issues that I’ve overlooked.
You should aim to talk approximately 30-40 minutes, leaving time for questions.
To keep things uniform, it would be nice if you could use the following slide template:
Note that this requires pandoc to create .pdf slides using LaTeX beamer from Markdown. There are instructions in the slides.md file about building your slides. This should hopefully be fairly straightforward to set up.
If this is problematic, please let me know and I can try to help you out. If you really want to use other software to generate slides, that is OK too.
Team: Joris ten Tusscher, Joris Burgers, Ivo-Gabe de Wolff, Cas van der Rest, Orestis Melkonian.
What are dependent types? How can these be used to prove properties of your programs?
Team: Xander van der Goot, Kevin Namink, Stefan Koppier, Luca Scannapieco, Žan Palčič
What kind of language is Rust? What is the problem with aliasing? How does Rust’s borrowing mechanism address this?
Team: Tobias van Driessel, Floris Schild, Mats Veldhuizen, Tom Freijsen, Ruben Schenkhuizen
What kind of language is Swift? How does it compare to object oriented languages such as Java or C#? Is it garbage collected? What are protocols and how are they related to Haskell’s type classes? What are optional types and how are they related to ‘null’ values in other object oriented languages?
Team: Bart van der Lugt, Lars van den Haak, Roald Neutenboom, Anvar Arashov, Lukas Arts
How does Scala combine functional and object-oriented programming? What are traits? What are case classes and pattern matching? How can you interface with Java?
Team: Niels Hendrikx, Pavlos Panteliadis, Chris Aronis, Hristo Hristov
How does F# differ from other .NET languages such as C#? How can F# interoperate with existing C# code? What features from Haskell that you may have seen in Functional Programming does F# support? What features, such as type providers, are unique to F#?
Team: Martijn Boom, Zino Onomiwo, Tim Zoet & Rik van Toor
What is Lightweight Modular Staging? How is it implemented in Scala? How is it used for embedding compilers in Scala? What DSLs are implemented in this style? How does it compare to other approaches to implementing DSLs that we have seen?
Team: Alexey Rodriguez Blanter, Ferenc Balla, Matthijs Steen, Ruben Meerkerk, Ratih Ngestrini
Team: Laurens Post, Nina Schoeber, Norico Groeneveld, Pantea Haghighatkhah, Jelle Mulyadi
What is OCaml’s module system? How is it different from Haskell’s? What are signatures and functors? What is the difference between generative and applicative functors?
What are C++ templates? What are they good for? What are their limitations? How are they different from some of the other metaprogramming frameworks we have seen in this course?
What is logic programming? How does the Prolog engine find solutions? What is cut? And when should it be used?
What is a language designers workbench? How is this approach to domain specific languages different from embedded or stand-alone languages? What are the relative merits of all these approaches?
Feel free to suggest other topics, provided these languages are suitably distinct from those listed above.