Leif Kusoffsky 2005 - dec - 07 Nada KTH Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006 Kursdata Momentindelning Kursen genomförd Kursledare Kurslitteratur Antal studenter Lab1 G/U (2p), tenta 3/4/5 (3p) Period 1 2005/2006. Delar även under läsperiod 2. Föreläsningar 28 h Leif Kusoffsky Funktionell programmering: Graham Hutton: Utdrag ur Programming in Haskell Logikprogrammering: Paul Brna : Prolog Allmänt, syntaxanalys : Kompletterande eget material. 112 stycken som redovisat åtminstone någon av labb av 8 "riktiga" labbar. Gjort moment LAB1 lab 1-9 2005-dec-07 83 74% Gjort moment TEN2 05-dec-07 74 % (klarat tentan 83, 83/112 = 82 %, av dem som tentat 83/94 = 88%) Prestationsgrad 05-dec-07 (83*3+83*2) / (112*5) = 0.74 Examinationsgrad 05-dec-07 74 / 112 = 0.66
Mål Kursens mål är att en systematisk genomgång av de viktigaste programmeringsparadigmen, en systematisk genomgångav grundläggande programmeringsbegrepp och centrala programspråkselement, för att studenterna ska få ett bredare perspektiv på programmering, kunna bedöma vilket paradigm och vilket programspråk som är lämpligt för att lösa en viss uppgift, kunna använda adekvat programmeringsstil i valt programmeringsparadigm. Sammanfattning Kursen gavs fjärde gången, men utökad från 4 p till 5p med ny beteckning 2D1361. Kursen har som förut till stor del (motsvarande ca 3p av 5p)behandlat två för teknologerna nya paradigm: Funktionell programmering med ett modernt hårt typat funktionellt programmeringsspråk : Haskell Logikprogrammering i Prolog Syntaxanlysavsnittet (~1p av 5p) behandlar syntaxanlys med semantiska åtgärder med hjälp av rekursiv medgång i tre paradigmer; samma ide programmerad med ett domäns-specifikt-språk byggt i Haskell, med DCG (Prolog) och imperativt både i Java och med IO-monaden i Haskell. Som läroböcker har vi använt (av mig med tillstånd kopierat) material från nätet, och teknologerna verkar i regel tycka att dessa här på KTH tryckta böcker varit något så när, men de skrivna kommentarerna är kritiska. Jag tycker förstås att häfterna har sin brister jämför med "riktiga" böcker, men för de ca 2-3 veckor vi studerat varje paradigm har de dugt. Böckerna har varit billiga. På kursens startsida har "riktiga" böcker rekomennderats för intresserade. I Haskell har utdrag ur en ny, med författarens tillmötesgående kopierad, bok används. Jag tror som förut att studenterna efter denna kurs kan det väsentliga i funktionell programmering, dvs funktioner som värden och högre ordningens funktioner och även kan finesser som mönsterpassning, typklasser och typsystem för funktionella språk och kan diskutera skillnader mellan strikt och lat evaluering. Min förhoppning är att teknologerna därför vet att programmering kan vara något annat än att instruera en datorn med "satser", men även att de blivit bättre konventionella programmerare.
Prologdelen av kursen har gett kunskaper om grunderna för logikprogrammering : Fakta, regler, frågor, logisk och procedurell läsning (Byrd box-modell) av prolog-skript, unifiering och logiska variabler, backtracking, snitt ("cut),!) mm. Mer avancerad Prologprogrammering (assert, set_of mm) har bara nämts i förbigående. Många teknologer blir ganska roade av logikprogrammering. Skillnaden logikprogrammering- imperativ programmering upplevs som större än skillnaden funktionell programmering - imperativ programmering. Många av teknologerna som fått betyg 5 kan dock rätt mycket, många av dem hade säkert klarat en större och svårare kurs. De skrivna kommentarerna i kursenkäten är ofta negativa. Jag får mer kritik för föreläsningarna än tidigare år och för det jag skrivit. Kursen har en betoning på funktionell programmering, som kursledaren tycker är en paradigm som borde få större betydelse i framtiden och som även kan inspirera programmerare i den imperativ programmeringen och i OO-paradigmen. Min utgångspunkt har varit att funktionell programmering är en generellt användbar paradigm som kan användas för många olika programmeringsuppgifter. Den stora laborationsuppgiften i funktionell programmering, ett grafiskt schackspel, är vald och konstruerad för att visa detta. Jag har delvis inspirerats av Paul Hudak bok "The Haskell School of Expression, Learning Funktional Programming through Multimedia." En del kommentarer delar inte denna syn, och tycker att kursen skall göras om till nästa år. Jag har alltså inte övertygat dem om den fuktionella paradigmens förtjänster i den delen av kursen som omfattar 1.8p. Det var lättare i Luleå där vi 6-8p av utbildning omfattade funktionell programmering. Även på Chalmers spelar funktionell programmering stor roll i kurserna. Om kursen görs om till nästa år är säkert någon annan än jag lämpligare att göra detta och att hålla kursen. Examination 9 laborationer och tentan (som ger betyget) är examinationen. Kursenkät ~ 67 personer har svarat på enkäten på nätet. Kommentarerna innehåller både mycket ris och en del ros. Resultat av kursutvärdering: 27 frågor om Programmeringsparadigmer lp1 väntar på svar och en eller annan kommentar. 1. Upplever du kursen som lätt eller svår? 1. 4% (3 st) Mycket lätt. 2. 10% (7 st) Lätt. 3. 54% (36 st) Medel. 4. 27% (18 st) Ganska svår. 5. 4% (3 st) Mycket svår.
2. Fick du i början av kursen klart för dig vad kursens mål var? 1. 55% (37 st) Ja. 2. 27% (18 st) Tveksam. 3. 18% (12st) Nej. 3. Tycker du att kursen är intressant och meningsfull? 1. 16% (11 st) Ja, mycket. 2. 49% (33 st) Ja. 3. 13% (9 st) Neutral. 4. 15% (10 st) Inte särskilt. 5. 6% (4 st) Nej. 4. Tycker du att dina förkunskaper var tillräckliga när kursen startade? 1. 79% (53 st) Ja. 2. 16% (11 st) Tveksam. 3. 4% (3 st) Nej. 5. Vad tycker du om ur kursboken Hutton: Programming in Haskell 1. 3% (2 st) Mycket bra. 2. 16% (11 st) Bra. 3. 36% (24 st) Hyfsad. 4. 12% (8 st) Mindre bra. 5. 10% (7 st) Dålig. 6. 22% (15 st) Har inte använt den. 6. Vad tycker du om utdraget, längst bak i Hutton-häftet, ur Hudak et al : A gentle Introduktion to Haskell 98 1. 1% (1 st) Mycket bra. 2. 12% (8 st) Bra. 3. 13% (9 st) Hyfsad. 4. 9% (6 st) Mindre bra. 5. 0% (0 st) Dålig. 6. 64% (43 st) Har inte använt det. 7. Vad tycker du om kursboken Brna: Prolog Programming 1. 0% (0 st) Mycket bra. 2. 21% (14 st) Bra. 3. 37% (25 st) Hyfsat. 4. 12% (8 st) Mindre bra. 5. 13% (9 st) Dåligt. 6. 16% (11 st) Har inte använt den.
8. Vad tycker du om kurshäftet Kusoffsky: Lite grann om syntax, semantik och syntaxanalys 1. 3% (2 st) Mycket bra. 2. 28% (19 st) Bra. 3. 34% (23 st) Hyfsat. 4. 10% (7 st) Mindre bra. 5. 9% (6 st) Dåligt. 6. 15% (10 st) Har inte använt den. 9. Vad tycker du om föreläsningsanteckningarna 1. 15% (10 st) Mycket bra. 2. 25% (17 st) Bra. 3. 31% (21 st) Hyfsad. 4. 12% (8 st) Mindre bra. 5. 4% (3 st) Dålig. 6. 12% (8 st) Har inte använt dem. 10. Hur stor del av föreläsningarna har du varit på? 1. 13% (9 st) Mindre än 20%. 2. 15% (10 st) 20-40%. 3. 12% (8 st) 40-60%. 4. 16% (11 st) 60-80%. 5. 43% (29 st) Mer än 80%. 11. Vad tycker du om föreläsningarna pedagogiskt sett? (Förklaras stoffet bra? Talar och skriver läraren tydligt? Används stordia i lagom omfattning?) 1. 3% (2 st) Mycket bra. 2. 28% (19 st) Bra. 3. 27% (18 st) Acceptabelt. 4. 16% (11 st) Mindre bra. 5. 15% (10 st) Dåligt. 6. 6% (4 st) Har inte deltagit. 12. Förbereder du dig till föreläsningarna (läser igenom relevanta avsnitt i boken/kompendiet etc)? 1. 1% (1 st) Ja, alltid. 2. 3% (2 st) Ofta. 3. 25% (17 st) Ibland. 4. 25% (17 st) Sällan. 5. 42% (28 st) Aldrig.
13. Får du den hjälp du behöver på datorövningarna (är handledarna kunniga, lättillgängliga, vänliga)? 1. 42% (28 st) Javisst. 2. 43% (29 st) Javars. 3. 15% (10 st) Acceptabelt. 4. 0% (0 st) Sällan. 5. 0% (0 st) Aldrig. 14. Hur mycket tid ägnade du åt laboration 1 Introduktion till Haskell? 1. 73% (49 st) Mindre än 2 tim. 2. 16% (11 st) 2-4 tim. 3. 6% (4 st) 4-6 tim. 4. 3% (2 st) Mer än 6 tim. 15. Hur mycket tid ägnade du åt laboration 2 Ett program för schack: 1. 7% (5 st) Mindre än 6 tim. 2. 13% (9 st) 6-8 tim. 3. 24% (16 st) 8-10 tim. 4. 55% (37 st) Mer än 10 tim. 16. Bedöm hur lång tid du lägger ner på laboration 3 Komma igång med Prolog, släktrelationer: 1. 76% (51 st) Mindre än 2 tim. 2. 13% (9 st) 2-4 tim. 3. 9% (6 st) 4-6 tim. 4. 0% (0 st) Mer än 6 tim. 17. Bedöm hur lång tid du lägger ner på laboration 4 Listprogram, pargenerering : 1. 36% (24 st) Mindre än 2 tim. 2. 42% (28 st) 2-4 tim. 3. 18% (12 st) 4-6 tim. 4. 3% (2 st) Mer än 6 tim. 18. Bedöm hur lång tid du lägger ner på laboration 5 Tidernas knepigaste problem 1. 24% (16 st) Mindre än 2 tim. 2. 45% (30 st) 2-4 tim. 3. 18% (12 st) 4-6 tim. 4. 12% (8 st) Mer än 6 tim.
19. Bedöm hur lång tid du lägger ner på laboration 6 Stabila äktenskap 1. 31% (21 st) Mindre än 2 tim. 2. 30% (20 st) 2-4 tim. 3. 22% (15 st) 4-6 tim. 4. 15% (10 st) Mer än 6 tim. 20. Bedöm hur lång tid du lägger ner på laboration 7 Danska räkneord 1. 45% (30 st) Mindre än 2 tim. 2. 33% (22 st) 2-4 tim. 3. 15% (10 st) 4-6 tim. 4. 4% (3 st) Mer än 6 tim. 21. Bedöm hur lång tid du lägger ner på laboration 8 C-programmering 1. 33% (22 st) Mindre än 2 tim. 2. 40% (27 st) 2-4 tim. 3. 19% (13 st) 4-6 tim. 4. 4% (3 st) Mer än 6 tim. 22. Var någon/några av laborationerna mer givande än de övriga? (Du kan kryssa för flera alte rnativ.) 1. 12% (8 st) Laboration 1 2. 40% (27 st) Laboration 2 3. 15% (10 st) Laboration 3 4. 24% (16 st) Laboration 4 5. 40% (27 st) Laboration 5 6. 39% (26 st) Laboration 6 7. 27% (18 st) Laboration 7 8. 33% (22 st) Laboration 8 23. Hur tycker du att tentan speglade kursinnehållet? 1. 22% (15 st) Mycket bra. 2. 43% (29 st) Bra. 3. 19% (13 st) Hyfsat. 4. 10% (7 st) Mindre bra. 5. 3% (2 st) Dåligt. 6. 1% (1 st) Tentade inte.
24. Hur många andra kurser har du läst parallellt med den här kursen (i period 1)? 1. 3% (2 st) En. 2. 57% (38 st) Två. 3. 36% (24 st) Tre. 4. 4% (3 st) Fyra eller fler. 25. Hur stor del av din totala studietid under period 1 har du ägnat åt den här kursen? 1. 7% (5 st) Mindre än 15%. 2. 48% (32 st) 15-30%. 3. 37% (25 st) 30-50%. 4. 7% (5 st) 50-70%. 5. 0% (0 st) Mer än 70%. Denna sammanställning har genererats med ACE.