En presentation för D2 (torsdag 2015-11-19: 9.15–9.30 av Patrik Jansson) av den "halvobligatoriska" kursen "Matematikens domänspecifika språk".
Jag heter Patrik Jansson och jag är forskare och lärare i funktionell programmering gruppen på avdelningen för programvaruteknik. Jag är här som examinator för DSLsofMath men kursansvarig lärare är Cezar Ionescu, docent i "Data Science" i Oxford. Jag har tidigare varit programansvarig för D-programmet (2011–13) och varit med och ordnat den här typen av informationsmöten.
LP3 i D2 erbjuder ett första smakprov på den valfrihet som är ett kännetecken för resten av datateknikutbildningen. Vi lärare inom dataområdet tror på våra studenters förmåga att själv kombinera kurser till en bra helhet – kanske i kombinationer vi inte ens kunde hitta på själva. Men examenskraven gör att vi inte kan släppa er helt fria. I denna första valfria lucka är det just DSLsofMath och ConcProg som finns att välja på, men mitt viktigaste budskap idag är att ni bör välja båda!
Jag menar inte att ni ska ta båda kurserna samtidigt – det vore lite väl tungt – men jag är övertygad om att båda dessa kurser är mycket bra för er utbildning och ni därför egentligen bara behöver välja vilken av dem ni tar först. En av kurserna väljer ni att ta D2LP3 och den andra lite senare. Men jag bör också säga något om kursinnehållet i DSLsofMath – särskilt eftersom den här kursen är helt ny.
Kursens grundidé är att presentera klassiska matematiska ämnen från ett datavetenskapligt perspektiv:
- att tydligt beskriva de begrepp som introduceras,
- vara uppmärksam på syntax och typer,
- att bygga domänspecifika språk for vissa matematiska områden: linjär algebra, lite kategoriteori, polynom och potensserier, komplexa tal
Under hela läsperioden alternerar kursen mellan föreläsningar och övningar + grupparbete. Vi trycker på att matematik (och antagligen i princip alla ämnen) kräver aktiva studier – det räcker inte att bara "läsa (eller lyssna) och hålla med" utan varje student måste aktivt arbeta med materialet för att tränga in i det ordentligt. Vi vill betona att ni som D-studenter faktiskt är mycket väl utrustade med de verktyg som behövs för aktiva studier: grundläggande principer i programmering och datateknik kan (med lite övning) även användas för att lära sig matematik. Problemlösning med dator innebär alltid ett behov av att "plocka isär" och verkligen reda ut vad olika begrepp egentligen betyder och när man gör det i form av källkod kan datorn ge direkt återkoppling när något inte stämmer. Ni som studenter kommer att lära er att ta itu med en ny matematisk domän på samma sätt som ni skulle ta itu med vilken annan domän som ni fått i uppgift att modellera som källkod.
FP bygger på att modellera med hjälp av typer och rena funktioner och det passar mycket bra när det handlar om matematik som kretsar kring funktioner och där variabler inte ändras. Dessutom har FP redan från början varit kopplat till matematiska bevis och språket ML utvecklades egentligen på 70-talet som ett språk för att beskriva bevis och algoritmer för att hitta bevis.
Undervisningsspråket är engelska och implementationsspråket är Haskell.
Exempel:
- datum: "2015-11-18", "tredje onsdagen i oktober", "nästa lördag"
- excel-formler: "SUM(A1:A9)", "RIGHT(LEFT(C7,4),2)", "3652460*60"
- integraler: [Behöver ritas!]
Mycket av forskningen och utvecklingen inom datavetenskap i Göteborg kan beskrivas i termer av domänspecifika språk:
- Lava för att beskriva hårdvarukretsar
- QuickCheck för automatisk testning
- Feldspar för digital signalbehandling
- GF för grammatiker och språkteknologi
- ...
Det finns också många företag som använder sig av, eller utvecklar egna, domänspecifika språk.
Det har under många år funnits en del problem med resultaten på kurserna "Transformer" samt "Regler" i D3. Ett av målen med den här nya kursen är att se till att förbereda er i D2 så att ni kan ta er an hösten i trean med ett gott självförtroende på mattesidan.
Ett annat återkommande önskemål från D-studenter är en "mellan-avancerad FP-kurs". DSLsofMath kan ses som ett naturligt steg på vägen från grundkursen i FP till den avancerade FP-kursen (AFP).
Jag rekommenderar er att välja både DSLsofMath och ConcProg under er utbildning, men att börja med DSLsofMath eftersom den ger er bättre chanser att segla igenom D3 utan att gå på grund.
Välkomna i januari önskar lärarlaget Patrik, Cezar, Irene, Victor och Adam