Till KTH:s startsida Till KTH:s startsida

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. 30 Augusti
    Intro (Per Austrin)
    Slides 

  2. 31 Augusti
    Funktionell Programmering 1 (Marcus Dicander) Komma igång med Haskell: Funktioner, rekursion, listor, oändliga listor och listomfattningar (list comprehensions).
    Slides och kod.
  3. 1 September
    Funktionell Programmering 2 (Marcus Dicander) Typer och typklasser.
    Slides.
  4. 5 September
    Funktionell programmering 3 (Marcus Dicander) Högre ordningens funktioner.
    Slides.
  5. 8 September
    Funktionell programmering 4 (Marcus Dicander) Monader.
    Monads are not...
    Bra grund att stå på.
    Bra wikibok om Haskell och monader
  6. Slides
  7. 14 September
    Funktionell programmering 5 (Marcus Dicander) Sammanfattning och fördjupning, tentor och kontrollskrivningar.

  8. 22 September
    Logikprogrammering 1 (Dilian Gurov)
    Slides, Lådmodellen, Prolog
  9. 28 September
    Logikprogrammering 2 (Dilian Gurov)
    Slides, Strukturell induktion, Prolog
  10. 28 September
    Logikprogrammering 3 (Dilian Gurov)
    Slides, Prolog
  11. 5 Oktober
    Logikprogrammering 4 (Dilian Gurov)
    Slides, Generera och testa, Prolog
  12. 11 Oktober
    Logikprogrammering 5: Villkorsprogrammering (gästföreläsning med Mikael Zayens Lagerkvist från Tomologic)
    Slides

  13. 31 Oktober
    Syntax 1: Reguljära uttryck och ändliga automater (Per Austrin)
    Slides
  14. 3 November
    Syntax 2: Begränsningar hos reguljära uttryck/automater, grammatiker (Per Austrin)
    Slides
  15. 10 November
    Syntax 3: Lexikal analys, syntaxträd, rekursiv medåkning, omskrivning (Per Austrin)
    Slides. Kod-exempel: BinTreeParserCalculator
  16. 16 November
    Syntax 4: Stackautomater, språk-klasser, parser-generatorer, sammanfattning (Per Austrin)
    Slides

  17. 28 November
    Internetprogrammering 1
    Anteckningar
  18. 1 December
    Internetprogrammering 2

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. 7.2.3 (versionen som körs på Kattis och CSCs Ubuntu-datorer)
    2. senaste (lite nyare än den version vi kör, men skillnaderna borde i praktiken vara små och är i en behändig html-version till skillnad från PDF-filen för version 7.2.3)

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

Per Austrin skapade sidan 20 juni 2016

Lärare Per Austrin ändrade rättigheterna 20 juni 2016

Kan därmed läsas av lärare och ändras av lärare.

Lärare Per Austrin ändrade rättigheterna 23 augusti 2016

Kan därmed läsas av alla och ändras av lärare.
kommenterade 5 september 2016

Jag kommer inte åt presentationerna. . .
Det kommer upp en ny sida när länken slides klickas och så ser man att den laddar PDF:n. Man ser att den laddat drygt en femtedel sen stannar den utan att göra något vidare.

Lärare kommenterade 5 september 2016

Hej Leif!  Gäller det alla eller bara några specifika?  Jag har för mig att det kan vara lite trassel med detta beroende på vilken webb-läsare man använder.  Prova att spara ned PDF:en på disk och öppna med en PDF-läsare, det ska alltid fungera.

kommenterade 5 september 2016

Tusen tack!
(Jag bytte från Chrome till safari, så gick det.)

kommenterade 31 oktober 2016

När kommer föreläsningsanteckningar för syntaxanalysen? Vore bra om de lades upp samma dag som föreläsningen hölls.

Lärare kommenterade 31 oktober 2016

Axel: upplagda nu!

kommenterade 31 oktober 2016

Strålande!

kommenterade 3 november 2016

Kan sliderna läggas upp någon dag eller någon timma innan föreläsningen? Ibland vill man gå tillbaka i sliderna under föreläsningen om man har missat något.

Lärare kommenterade 3 november 2016

Adel: ska försöka fixa ordna det till de kommande föreläsningarna.  Slides för dagens föreläsning är i alla fall upplagda nu.

kommenterade 10 november 2016

I slides för syntax 3 andra exemplet om rekursiv medåkning skriver du

char next = peekChar();
   if (c == ’p’)

Det borde vara

char next = peekChar();
   if (next == ’p’)

Om jag förstår det rätt.

Lärare kommenterade 14 november 2016

Axel: fixat nu, tack!

kommenterade 2 december 2016

Hej,

Får vi slider eller anteckningar från Inet föreläsning den 1 December?

Lärare kommenterade 8 december 2016

Adel: nej, såvitt jag förstod på Alexander gick han bara igenom frågor om labben på den föreläsningen, och det finns inga slides eller anteckningar.