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

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 as opponents.

Suggested outline of the presentation

This is just a suggestion for topics to include in your presentation and you may choose to exclude or rearrange parts of the list and/or include other topics you find relevant in the context of your case study.

Language

The suggested outline below is in Swedish but the presentation should be in English.

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.