DAT555 Grundläggande programutveckling
Grundläggande programutveckling
Kursen har två koder: TDA548 och DAT555
LP1 2024 (7,5 hp)
Kursen ges av institutionen för Data- och informationsteknik.
Kursen börjar den 3 september. Ett detaljerat schema finns på TimeEdit
Resurser utanför Canvas:
- python.org - officiell mjukvara och information, allt gratis. Här kan du ladda ner Python för din dator.
- GitHub-repo med kodexempel
- YouTube-kanal med gamla föreläsningar
- svensk-engelsk ordlista för datatermer i slides
- kursboken som officiell e-book
- Slides är länkade från Föreläsningstabellen.
Kontaktuppgifter
Aarne Ranta examinator och föreläsare (email, adress och telefon finns i slutet på hemsidan)
Handledare (TAs) kommer att kunna kontaktas i samband med handledingen.
Kursens syfte
Syftet är att studenterna ska lära sig programmera i programspråket Python. Kursen är främst avsedd för studenter utan tidigare erfarenhet i programmering, och kommer därmed att även förklara allmänna begrepp i datavetenskap.
Labbhandledning och övningar
Undervisningen består av
- föreläsningar, som följer ett schema med två eller tre gånger i veckan, men som även kan ses senare (och i flesta fall tidigare) som inspelningar.
- datorlaborationer, tillfällen där studenterna får ställa individuella frågor om sitt eget arbete, i synnerhet om labbarna. Tider: se TimeEdit.
- self practice, som består av övningar som rättas automatiskt. Detta är inte längre obligatoriskt, men rekommenderas varmt.
Tanken är att varje student kan anmäla sig till en datorlaboration per föreläsning, dvs oftast två per vecka. Men det finns inga kursmoment med obligatorisk närvaro på en viss tid, förutom tentan.
Föreläsningstabellen
I tabellen nedan anges föreläsningarnas tema och datum och deras relation till labbarna.
- Föreläsningarna på YouTube-kanalen https://www.youtube.com/channel/UCxay__rBQeA1bapBONoExlQ har spelats in på en tidigare kurs med likadant innehåll och är öppna för alla. Ordningen har dock ändrats mot slutet av kursen, så jämför gärna med titlarna i föreläsningstabellen nedan.
- Slides för föreläsningarna är tillgängliga via länkar i schemat nedan. De kan få mindre uppdateringar under kursens gång. Kolla datumet och kurskoderna på första sidan för att vara säker att du läser den senaste versionen!
Deadlines för labbarna finns även under Assignments.
Datum |
Innehåll |
Boken |
Övrigt |
3/9 |
1. Datorer och programmering, intro slides |
1,2 |
Installera Python |
6/9 |
2. Problemanalys och design av program och funktioner slides |
2,6 |
|
10/9 |
3. Strängar, listor, filer slides |
5 |
|
12/9 |
4. Datasamlingar och dataanalys, design för Lab 1 slides |
|
Redo för Lab 1 |
17/9 |
Gruppdynamik (Staffan Björk) |
|
|
19/9 |
5. Algoritmer med loopar och villkor slides | 7,8 | |
24/9 |
6. Beräkningar med heltal och flyttal slides |
3 |
|
26/9 |
7. AI och maskininlärning (översikt och kodexempel) slides |
|
|
27/9 |
Lab 1 deadline |
|
|
1/10 |
8. Matriser och linjär regression: design för lab 2 slides |
|
Redo för lab 2 |
3/10 |
(ingen föreläsning: egen tid för att jobba med lab 2) |
|
|
8/10 |
|
||
10/10 |
10. Klasser och objektorientering (slides) (racer2.py) (racer3.py) |
|
|
11/10 |
Lab 2 deadline |
|
|
15/10 |
11. Objektorienterad design, genomgång av lab 3 |
|
Redo för lab 3 |
17/10 |
(ingen föreläsning: egen tid för att jobba med lab 3) |
|
|
22/10 |
12. Analys av algoritmer, komplexitet, rekursion, beräkningsbarhet slides |
|
|
24/10 |
Repetition, förberedelse för tentan: vi går igenom den här gamla tentan. Läs även de allmänna anvisningarna om tentor. |
|
|
25/10 |
Lab 3 deadline |
|
|
30/10 |
tentamen kl 14 |
|
|
31/10 |
slutgiltig deadline för retur från alla labbar |
|
Kurslitteratur, mjukvara och övrigt material
Kursboken: John M. Zelle, Python Programming: An Introduction to Computer Science, 3rd edition, Franklin, Beedle, & Associates, 2017 https://mcsp.wartburg.edu/zelle/python/
Bokens webbsida ger tillgång till gratis slides. Boken rekommenderas varmt: den är lättläst samtidigt som den förklarar sakerna grundligt. Men det är möjligt att klara kursen utan att köpa boken, om man redan är en erfaren programmerare. Boken ska finnas på Chalmers Store, och det finns även en e-bok att köpa (USD 20) här
Filmer: äldre versioner av föreläsningar finns som filmer på vår YouTube-kanal Ordningen är annan än i år, så det är bäst att titta på titlarna och inte på numren.
Slides: föreläsningarnas OH-bilder är tillgängliga genom länkar i föreläsningstabellen.
Webbsidan är den här sidan på Canvas och ger tillgång till all information och material.
GitHub: exempelkod och andra användbara moduler kommer att kompletteras under kursens gång.
Mjukvara. All mjukvara är gratis och kan laddas ner från nätet. Under första veckan av kursen kan alla få hjälp med att installera Python i samband med labbhandledningen.
Kursens upplägg
Programmering är en praktisk färdighet, som man lär sig bäst genom att öva den. I gruppsessionerna övar vi “programmering i smått”, dvs vilka verktyg som finns och hur man använder dem. I inlämningsuppgifterna ("labbarna") får man då ta sina första steg till “programmering i stort”, dvs skriva hela program som gör intressanta saker.
Labbarna görs i grupper av 4, eller möjligen färre. Det är förbjudet att kopiera kod från andra grupper. Studenterna får själva ansluta sig till en grupp i LabGroups; grupperna i StudentGroups kan inte användas för labbinlämning.
Labbarna har varsin deadline, och i regel börjar rättningen först efter deadline. Rättningen kan resultera i att labben är godkänd, eller att den får retur, men kommentarer om vad mer som behöver göras. Labbar som fått retur kan lämnas in fram till den allmänna sista deadline (ca 31/10). Men en första lösning av varje labb måste lämnas in senast före labbens egen deadline. Vi kan endast garantera två försök per labb, men om man lämnar in sitt andra försök i god tid kan det vara möjligt att göra ett tredje försök om nödvändigt.
Som en pågående uppgift finns automaträttade övningar (self practice), som var och en kan göra i sin egen takt. Det är viktigt att komma igång med dessa övningar från början.
Både labbarna och automatövningarna finns på Canvas under Assignments.
Kursen har tre större labbar, som kommer att rättas manuellt av assistenterna:
- 1. Textanalys. Programmet ska läsa dokument, från din egen dator eller webben, och göra frekvensanalys om ordens förekomster. Programmet behöver först rensa bort html-taggar, separera interpunktion från orden, samt bestämma hur de stora och små bokstäverna hanteras. Resultatet ska kunna visas i form av snygga tabeller.
- 2. Maskininlärning. Den sista labben är samtidigt en introduktion till artificiell intelligens (AI), där man inte skriver exakt vad ett program ska göra, utan programmer lär sig från data. Labben använder sig av linjär regression, som är en av de grundläggande algoritmerna i AI, och dess generalisering till polynomiell regression.
- 3. Grafik och animering. Programmet skapar ett fönster, där man kan skjuta projektiler i olika vinklar och hastigheter. Animeringen visar hur projektilerna flyger och var de landar, genom att använda fysikens lagar.
Den övriga undervisningen på kursen har dessa labbar i syfte: vi kommer att gå igenom precis den teori och “programmering i smått” som behövs för att kunna göra labbarna i tid. Samtidigt är labbarna designade så att de ger en bred bild av programmering och erfarenhet till otaliga nya uppgifter som deltagarna ska kunna lösa i livet efter kursen
Förändringar sedan förra kurstillfället
Lab 2 och 3 har bytt plats jämfört med en del tidigara kurser samt filmerna på YouTube. Men de går nu i samma fas och samma ordning som andra liknande kurser.
Lärandemål
Kunskap och förståelse:
- Uttrycka matematiska formler som uttryck och algoritmer i Python
- Välja lämpliga datatyper och datastrukturer för olika typer av data
- Strukturera stora Python-program i hanterbara och återanvändbara enheter med hjälp av begrepp som moduler, klasser och funktioner
- Söka och hitta relevanta programbibliotek och använda dem på lämpligt sätt
- Förklara förhållandet mellan hårdvara, operativsystem och användarprogram
- Använda Python programmering för grundläggande dataanalys av stora filer
Färdigheter och förmåga:
- Skriva Python-program som manipulerar numerisk och textuell data för att utföra vanliga programmeringsuppgifter
- Bygga interaktiva Python-program med både textbaserade och grafiska användargränssnitt
- Skriva Python-program som läser, ändrar och skapar filer i filsystemet
- Använda standardbibliotek och följa god praxis i programmering
- Testa Python-program med metoder såsom enhets-, regressions- och egenskapsbaserad testning
- Använda programmeringsverktyg såsom textredigerare och versionshanteringssystem
Värderingsförmåga och förhållningssätt:
- Utvärdera svårigheter och resurser som krävs för typiska programmeringsuppgifter
- Analysera kod skriven av andra och hitta fel och möjligheter till förbättring
Examination
För godkänt betyg krävs
- godkända lösningar på alla 3 labbar senast på kursens sista deadline.
- godkända svar på tentan eller en omtenta
Betygskalan är U/3/4/5. Både labbarna och tentan måste vara godkända innan resultatet rapporteras i Ladok-systemet.
Officiell kursplan
Länk till kursplanen i Studieportalen Studieplan
Course summary:
Date | Details | Due |
---|---|---|