Kursmaterial

Kurslitteratur

Se Före kursstart.

Föreläsningsanteckningar

Materialet från föreläsningarna kommer att läggas upp här. Föreläsningsanteckningar från tidigare år kan hittas på förra årets sida.

  1. 31 Augusti
    Intro (Per Austrin)
    Slides
     
  2. 10 September
    Funktionell Programmering 1: Intro, funktioner, rekursion, typer (Carina Edlund)
    Slides
  3. 11 September
    Funktionell Programmering 2: Listor, tupler och listomfattning (Carina Edlund).
    Slides
  4. 15 September
    Funktionell programmering 3: Högre ordningens funktioner, anonyma funktioner och evaluering (Carina Edlund)
    Slides
  5. 16 September
    Funktionell programmering 4: Typer, klasser, algebraisk datatyp, polymorfi och överlagring (Marcus Dicander och gästföreläsare Johan Söderholm)
    Slides
  6. 21 September
    Funktionell programmering 5: I/O, monader (Marcus Dicander)
    Slides
     
  7. 1 Oktober
    Logikprogrammering 1 (Dilian Gurov)
    Slides, Lådmodellen, Prolog
  8. 7 Oktober
    Logikprogrammering 2 (Dilian Gurov)
    Slides, Prolog
  9. 9 Oktober
    Logikprogrammering 3 (Dilian Gurov)
    Slides, GenTest, Prolog1, Prolog2
  10. 13 Oktober
    Logikprogrammering 4: Logikprogrammering i näringslivet (gästföreläsning med Mika Cohen från FOI)
  11. 15 Oktober
    Logikprogrammering 5: Villkorsprogrammering (gästföreläsning med Mikael Zayenz Lagerkvist från Tomologic)
    Slides

  12. 3 November
    Formella språk och syntaxanalys 1 (Per Austrin)
    Slides
  13. 6 November
    Formella språk och syntaxanalys 2 (Per Austrin)
    Slides
  14. 13 November
    Formella språk och syntaxanalys 3 (Per Austrin)
    Slideskodexempel (lexer och rekursiv medåkningsparser för binära träd)
  15. 20 November
    Formella språk och syntaxanalys 4 (Per Austrin)
    Slides, kodexempel: 1. kalkylator med rekursiv medåkning, 2. binära träd med JFlex och Cup

  16. 1 December
    Internet-programmering 1 (Alexander Baltatzis)
  17. 3 December
    Internet-programmering 2 (Alexander Baltatzis)

Länkar till mer information

Haskell

  1. Learn You A Haskell, en bra introduktion!
  2. User's guide för GHC.
  3. Hoogle, mycket bra sökverktyg för att leta efter funktioner i Haskells standardbibliotek
  4. Real World Haskell är en omfattande och intressant bok om Haskell av Sullivan, Stewart och Goerzen. Den finns både som pappersversion och i digital form!

Prolog

  1. Manual för SWI-Prolog:
    1. 6.6.4 (versionen som körs på Kattis och CSCs Ubuntu-datorer)
    2. senaste (innehåller saker som inte finns i den version vi kör, men är en behändig html-version till skillnad från PDF-filen för version 6.6.4)

Syntaxanalys

  • Det finns mycket online-material från andra kurser om formella språk och syntaxanalys att hitta på Internet. De flesta av dessa är dock hela kurser snarare än en liten del av en annan kurs, och därför betydligt mer omfattande. Här är några tips på föreläsningsvideor som man kan titta på.
    • Kursen Automata från Coursera med Professor Jeffrey Ullman. Föreläsningarna finns på YouTube.

      De tre första kursavsnitten matchar ganska bra mot syntaxdelen i progp. Mer specifikt, så är de föreläsningar som är mest relevanta för det som ingår i syntaxavsnittet i kursen följande:

      • 1-1-1 lite motivation om varför ämnet är intressant
      • 1-2-2 och 1-3-3 (ändliga automater)
      • 2-1-5 första tredjedelen (att reguljära uttryck och automater är ekvivalenta ingår i kursen, men inte detaljerna om hur man visar det)
      • 2-2-6 (vissa delar av föreläsningen talar om icke-deterministiska automater, NFA, vilket inte ingår i vår kurs)
      • 2-3-7 och 2-4-8 har vi diskuterat men är inte lika viktiga som de andra föreläsningarna
      • 7-1
      • 3-1-9 Kontextfria grammatiker
      • 3-2-10 Parseträd, tvetydighet

      Det viktigaste som inte täcks in av dessa föreläsningar är stackautomater (föreläsningen 3-4-12 pratar om dessa, men ur ett lite annat perspektiv, man kan kolla på denna men den kan nog lätt upplevas som lite för teknisk) och rekursiv medåkning.

    • Kursen Compilers från Coursera med Professor Alex Aiken.

      Delar som är mest relevanta för syntaxdelen i progp är:

      • 3-01, 3-02, 3-05, 4-01 om lexikal analys
      • 5-01 om parsning

      Denna kurs har även föreläsningar om formella språk (3-04), reguljära uttryck, ändliga automater (4-02, första halvan), och kontextfria grammatiker (5-02, 5-03, 5-04). Dessa föreläsningar är också relevanta och täcker ungefär samma stoff som föreläsningarna från Automata-kursen ovan – man kan utnyttja båda för att få lite olika perspektiv, eller helt enkelt den man tycker är bäst.

  • Wikipedia-sidorna om formella språk, automater, etc, är överlag bra, t.ex.:
  • ANTLR - ANother Tool for Language Recognition, en syntaxanalysatorgenerator med många målspråk.
  • BNFC, en syntaxanalysatorgenerator som utvecklas på Chalmers.
  • DCG, en Prolognotation för kontextfria grammatiker.

Emacs-tips

Lärare Per Austrin skapade sidan 24 augusti 2015

Per Austrin flyttade sidan från Programmeringsparadigm (DD1361) 24 augusti 2015

Lärare Per Austrin ändrade rättigheterna 31 augusti 2015

Kan därmed läsas av alla och ändras av lärare.
kommenterade 17 september 2015

Länken till föreläsningsslides för föreläsningen 15 september pekar på samma PDF som länken för föreläsningen 11 september. Föreläsningen 15 september bör länka till F4.pdf istället för F3.pdf. Ändrar man URL:en i sin browser till F4.pdf så får man rätt fil.

Lärare kommenterade 17 september 2015

Mattias: fummel av mig, ber om ursäkt.  Fixat nu, stort tack för felrapporten!

kommenterade 4 november 2015

Hej Per,

Kommer föreläsningsanteckningarna från Syntaxanalysen också läggas upp?

Med vänlig hälsning,
Alex

kommenterade 4 november 2015

Det finns slides från förra året här om du skulle behöva de direkt http://www.csc.kth.se/utbildning/kth/kurser/DD1361/progp14/kursmaterial/

kommenterade 4 november 2015

Aah stort tack Davis!

Lärare kommenterade 5 november 2015

Alexander (och andra intresserade): har nu laddat upp ny version av bilderna, de är uppdaterade så att ett fel i konstruktionen av reguljärt uttryck för e-post från förra året uppmärksammas och fixas.

kommenterade 29 november 2015

Hej Per,

En fråga gällande exemplet på Determinstiska kontextfria språk, {a^nb^m|n>m}

Hur skulle du bygga upp din PDA för att matcha den?
Är det ok att ställa krav på att något ska vara kvar på stacken eller ger man a flera vägar där den inte behöver pusha något till stacken?

Tack på förhand
Alex

Lärare kommenterade 30 november 2015

Hej Alexander,

en mycket bra fråga! Jag har inte under föreläsningarna riktigt förklarat tillräckligt mycket om PDA för att besvara den.  Det som händer är att man i en PDA även tillåter övergångar där man inte läser något tecken från "indata", utan bara läser ett tecken från stacken.  Genom att använda sådana kan man implementera ett krav på att något ska vara kvar på stacken (som du föreslår), genom att ha en övergång till ett nytt tillstånd, som poppar ett a utan att läsa något.  I det nya tillståndet skulle man sedan stå och snurra och äta upp alla a:n från stacken tills den är tom, och då slutligen acceptera.

kommenterade 7 december 2015

Kommer föreläsningarna för inet läggas upp?

Feedback Nyheter