PKD 12/13: Allmänt om kursen
Har du läst kursen ett tidigare år, men är inte färdig? Läs denna sida!
Kursens syfte
Kursen syftar till att göra er bekanta med grundläggande principer, metodiker och begrepp inom programmering -- inklusive val och analys av algoritmer och datastrukturer -- så att ni själva kan skriva enklare program och få de teoretiska och praktiska kunskaper i programmering som behövs för fortsatta kurser på er utbildning. Som verktyg används det funktionella programmeringsspråket Standard ML. Genom laborationer och inlämningsuppgifter får ni praktisk kunskap om programmering.
Se även den formella kursplanen.
Kursstart
Första kurstillfället är en föreläsning måndagen den 29:e oktober klockan 10:15 i Polacksbackens aula. Hela kursschemat finns här. Observera att i början av kursen så är inte schemat för period 3 färdigt.
Arbetsinsats
Kursen omfattar 2/3 av heltid. Det innebär att man varje vecka skall vara beredd att lägga i genomsnitt 27 arbetstimmar på den. En typisk vecka är det 14 schemalagda timmar (mindre i slutet av kursen). Ni måste alltså vara beredda att lägga i genomsnitt 13 timmar av självständigt arbete (läsa kursmaterialet, öva, göra uppgifter) varje vecka -- mera i slutet av kursen eller om ni inte deltar i all schemalagd undervisning.
Lärare
Huvudlärare är Lars-Henrik Eriksson. Det finns också ett antal assistenter -- labassistenter som handleder i datasalarna och lektionsledare som dessutom bedömer uppgifter och håller lektioner. Varje lektionsledare har huvudansvar för en viss lektionsgrupp. Lektionsledare är Carl Leonardsson, Karl Sundequist, Johannes Åman Pohjola, Elias Castegren, Egil Salomonsson och Jonatan Jansson. Labassistenter är Martin Håstad, Malin Lundberg, Gustav Lundin, Björn Mårtensson, Simon Strandman, Emil Vikström, Jonatan Waern, Magnus Wallin och Gustav Åberg.
Kurslitteratur
Kursen har ingen speciell kurslitteratur. I princip klarar du dig med innehållet i föreläsningarna (OH-bilderna finns att ladda ned).
Vi rekommenderar dock starkt att du skaffar referensböcker som du kan använda som uppslagsverk eller för självstudier. Du behöver en referensbok för programmering i Standard ML och en för algoritmer och datastrukturer. De referensböcker som vi rekommenderar innehåller i stort sett hela kursmaterialet. Ett viktigare undantag är moment 4 som du måste läsa in från föreläsningarnas OH-bilder.
För programmering i Standard ML rekommenderar vi:
- Introduction to Programming using SML av Michael R. Hansen och Hans Rischel, Addison-Wesley 1999. ISBN 0-201-39820-6. Det finns en webbsida med rättelser till boken.
Det finns många andra böcker som handlar om Standard ML, se länksidan. Många böcker vänder sig dock till personer som har programmeringserfarenhet tidigare, så kontrollera det om du skaffar en annan bok.
För algoritmer och datastrukturer rekommenderar vi endera av:
- Introduction to Algorithms, av Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, MIT Press, 2009 (3:e upplagan). ISBN 0-262-53305-7. Det finns en webbsida med rättelser till boken. Denna bok kallas för CLRS3 i kursmaterialet
- Introduction to the Design & Analysis of Algorithms, Anany Levitin, Addison-Wesley, 2011 (3:a upplagan). ISBN 0132316811. Denna bok kallas för L i kursmaterialet.
CLRS3 är en mycket omfattande och grundlig bok, som också används som kurslitteratur i senare kurser om algoritmer och datastrukturer inom DVK och masterprogrammet i datavetenskap. Du kan ha nytta av den även efter avslutade studier, så den är en god investering. L är inte lika omfattande men mera lättillgänglig. Trots att CLRS3 är ungefär dubbelt så tjock så är den mycket billigare än L.
Föreläsningar
Syftet med föreläsningarna är att presentera och förtydliga kursmaterialet och peka ut vad som är viktigt. Närvaro på föreläsningarna rekommenderas men är inte obligatoriskt (utom på första föreläsningen).
Det kommer att ordnas en eller flera gästföreläsningar om tillämpningar av kursmaterialet. Det kommer också att bli några "överkursföreläsningar" för de intresserade. De ger exempel på mer avancerade tillämpningar av kursmaterialet.
Uppgifter
Du kommer att få göra tre sorters uppgifter: laborationer, inlämningsuppgifter i algoritmanalys/design och ett projekt i programmering. På så sätt får du praktiska erfarenheter av kursinnehållet. Både programmering och algoritmanalys/design är till stor del färdigheter som man måste öva upp.
Laborationerna är löpande övningar på det material som vi går igenom på föreläsningarna. Laborationerna utförs i labbsal i grupper om två studenter och bedöms direkt av lärare eller assistent. Lärarna bestämmer grupperna, så du kommer att få arbeta med olika personer varje gång. Du kan inte göra laborationerna i förväg eller efter labbtillfället -- med undantag av att om du deltog i en labb och inte blev godkänd så får du till början av nästa labbtillfälle på dig att komplettera labben. (Anmärkning: Skulle det visa sig att alltför många grupper utnyttjar möjligheten att komplettera så kan vi begränsa eller ändra reglerna för komplettering.) Du måste ha 70% godkända laborationer för att få godkänt på labbdelen av kursen -- i annat fall så måste du göra om hela labbdelen nästa år. Kursen har 18 (ev. 19) laborationer. Efter avrundning blir 70% i båda fall 13 laboratiner.
Inlämningsuppgifterna är tre större uppgifter som mer har karaktär av problemlösning och som ni arbetar med i grupper om två under en eller ett par veckor. Lärarna bestämmer grupperna, så du kommer att få arbeta med olika personer varje gång. Lösningarna skall lämnas in skriftligt och betygsätts. För varje inlämningsuppgift kommer det att finnas ett schemalagt handledningstillfälle då det finns lärare på plats för att hjälpa er med uppgiften. För att ni skall veta vad du behöver hjälp med och kunna ställa rätt frågor till handledarna är viktigt att komma förberedd till handledningen! Du måste vara godkänd på samtliga tre inlämningsuppgifter för att bli godkänd på denna del av kursen -- i annan fall så måste du göra om alla uppgifterna nästa år.
Projektet är en större programmeringsuppgift som utförs i grupper om tre-fyra personer under period 3. Projektet skall redovisas både muntligt och skriftligt och kommer att betygsättas. Dessutom kommer ni att få utföra opposition på en annan grupps projekt. Det innebär att ni skall kritiskt granska det andra projektet och ställa frågor om det. Även projektet kommer att ha regelbundna schemalagda handledningstillfällen.
Du kan förstås också få handledning av lärarna i anslutning till schemalagd undervisning eller via e-post. Personliga besök går också bra. Lärarna kan ha speciella mottagningstider. Om det blir aktuellt, så skrivs dessa under rubriken "Lärare" ovan. Tänk på att varje lektionsledare har huvudansvar för en viss lektionsgrupp så tala i första hand med den som ansvarar för din klass.
Lektioner
På lektionerna kommer lektionsledarna gå igenom den senaste rättade uppgiften, förklara moment i kursen eller göra andra övningar. Lektioner förkommer bara vid vissa tillfällen i kursen.
Examination
Examinationen består av fem delar: laborationer, en tentamen i december, inlämningsuppgifter , ett projekt och en tentamen i mars. När ett moment är godkänt registreras motsvarande poäng i Uppdok. För att bli färdig med kursen måste man ha godkänt på alla fem momenten.
Alla delar utom laborationerna betygssätts. Kursbetyget är ett viktat medelvärde av de fyra delbetygen där vikterna bestäms av omfattningen hos respektive moment.
Fusk
I och med att du/ni lämnar in en lösning till en inlämningsuppgift eller projekt så intygar ni att det enbart är du/ni som har utfört arbetet med lösningen. Om man samarbetar om en lösning mellan grupper, använder andras lösningar av en uppgift när man gör sin egen lösning - eller rent av lämnar in en (nödtorftigt ändrad) kopia av någon annans lösning så är det fusk. Vi använder effektiva verktyg som jämför lösningar (också från tidigare år) för att hitta plagiat! Läs mera om fusk här.
Bevisat fusk kommer att leda till disciplinära åtgärder som avstängning från all undervisning och examination under viss tid.
Det är givetvis tillåtet (och uppmuntrat!) att diskutera lösningar och lösningsmetoder med varandra mellan grupperna, men ni skall själv ha konstruerat den lösning ni lämnar in. Tror ni att det är risk för att sådana diskussioner leder till att två lösningar är väldigt lika varandra så säg till er lektionsledare i förväg så undviker ni bekymmer senare. Eventuellt kan ni i så fall få göra extrauppgifter om lektionsledaren bedömer att ni samarbetat för mycket.
Kursvärdering
En "mittkursvärdering" kommer att göras under period 2. Den egentliga kursvärderingen görs efter kursens slut. Mera information om detta kommer när det är dags.