OSPP (1DT096)

Background

During the second half of the course you will do a large group project. An important part of working in a project is the ability to do research and present important findings to the rest of the project group. In this case study you will practice this skill by researching a programming language with focus on concurrent programming.

Cases

Each group will study one of programming languages in the below table where H = link to homepage and W = link to Wikipedia.

CaseProgrammeringsspråkBesrkivningIntressanta konceptHW
1Clojure Clojure is a dialect of the Lisp programming language. Clojure is a general-purpose programming language with an emphasis on functional programming. It runs on the Java virtual machine and the Common Language Runtime. Homoiconicity. STM (Software Transactional Memory). Persistent data structures. Agents, dynamic vars and refs. H W
2 Erlang Erlang is a general-purpose, concurrent, functional programming language, as well as a garbage-collected runtime system. The actor modell. Hot code swapping. H W
3 Haskell Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. Haskell features a type system with type inference and lazy evaluation. Threads and MVars. Software Transactional Memory (STM). H W
4 Go Go is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing, memory safety features and CSP-style concurrent programming features added. The compiler and other language tools originally developed by Google are all free and open source. Go-routines, channels, send, receive, select. H W
5 Kotlin Kotlin is a statically typed object oriented multiplatform programming language running on the JVM, Android or in the web browser. Kotlin Coroutines. Channels. H W

Schedule

In the below schedule you can see which case your group have been assigned. Note that you should be present no only during your groups presentation but for all presentations in the same block as your presentation. In the table you can also see for which group you will act ass opponents.

Förslag till struktur på presentationen

Titel, grupp och medlemmar
På första bilden (slide) skall förutom titel på presentationen framgå namn på kurs med kurskod, årtal samt för- och efternamn på gruppens medlemmar i bokstavsordning.
En kort bakgrund och historik
Varför skapades detta språk? Vilka språk är släkt med detta språk? Påminner det på andra sätt om andra språk ni känner till? Är språket kompilerat eller tolkat? Andra utmärkande egenskaper hos språket?
Concurrency
Vilken/vilka modeller för concurrency finns inbyggt eller stöds på annat sätt? Förklara och sätt i relation till de modeller vi studerat tidigare under kursen.
Synkronisering
Behövs synkronisering? Förklara och ge exempel på olika metoder för synkronisering.
Ett kort exempel
Diskussion av minst ett kortare exempel på ett program skrivet i språket med fokus på concurrency. Ni behöver alltså inte skriva egna program, det fungerar utmärkt att använda färdiga exempel så länge ni anger källan. Verktyg: Vilka verktyg för kompilering, testning, pakethantering mm finns?
För- och nackdelar
Diskutera för- och nackdelar med språket, dvs vad andra tycker och varför de tycker så.
Riktiga tillämpningar
Exempel på "riktiga" projekt där språket används och varför de valt att använda språket, gärna med fokus på concurrency.
Personliga reflektioner
Vad i språket tycker ni är särskilt intressant? Vad i språket tycker ni känns konstigt eller irriterande? Vad i språket skulle ni vilja veta mer om? Kan ni tänka er fortsätta lära er med om språket under det avslutande projektet?
Referenser
Sist i presentationen skall det finnas en lista med alla referenser som använts, till exempel artiklar och websidor.