Course syllabus
Kurs-PM
TIN214 Programmeringsteknik lp2 HT20 (6 hp) samt EEN110 (som fristående kurs)
Kursen ges av institutionen för Data- och informationsteknik
Kursen börjar den 3 november 2020 och fortsätter hela läsperiod 2 och 3. Se detaljerna under Föreläsningstabellen och kalendern.
Resurser utanför Canvas:
- Schema i TimeEdit
- Piazza för frågor och svar om kursen
- GitHub-repo med kodexempel
- YouTube-kanal med 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, föreläsare) http://www.cse.chalmers.se/~aarne/
Handledare: träffas vid handledningstillfällen, via Canvas och Piazza, och efter överenskommelse
- Albert Vesterlund
- Andreas Andersson
- Elias Stenhede Johansson
- Erik Jansson
- Valter Schütz
- Victor Salomonsson
Kursrepresentanter, som tar emot synpunkter under kursens gång. Båda at student dot chalmers dot se
- Emma Larsson: emlars
- Ann Heijkenskjöld: heiann
Kursens syfte
Programmering med 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.
Schema
Före årsskiftet har vi 7 föreläsningar, på tisdagar kl 10 i Zoom. Zoom-länken publiceras här på Canvas innan kursen börjar, men på Announcements, som endast registrerade deltagare kan se.
Efter årsskiftet har vi 6 föreläsningar, de flesta på måndagar kl 10, med början den 18 januari.
Se TimeEdit för alla detaljer i schemat.
Piazza
Vi uppmanar alla studenter att registrera sig på Piazza. Piazza är ett forum där ni kan ställa och svara på varandras frågor, även vi som jobbar med kursen kommer att svara! På detta vis kan vi lära oss av varandra.
Labbhandledning och övningar
I TimeEdit finns, förutom "föreläsningar", både "datorlaborationer" och "övningar". De skiljer sig åt på följande sätt:
- en övning är en klass där handledaren går genom exempel och svarar på generella frågor så att alla i klassen får höra svaret
- en datorlaboration är ett tillfälle där studenterna får ställa individuella frågor om sitt eget arbete, i synnerhet om labbarna
Anmälan till datorlaborarioner görs med detta spreadsheet. På översta raden hittar ni även dagens zoomlänk för att ansluta till mötet! Zoomlänk till pass som markerats som "övning" hittas i samma spreadsheet.
Tanken är att varje student ska anmäla sig till en övning och en datorlaboration per vecka.
Föreläsningstabellen
I tabellen nedan anges föreläsningarnas tema och datum och deras relation till labbarna.
- Föreläsningarna för den här kursen kommer att publiceras här på Canvas för registrerade deltagare.
- föreläsningarna på YouTube-kanalen https://www.youtube.com/channel/UCxay__rBQeA1bapBONoExlQ har spelats in på en tidigare kurs med samma innehåll och är öppna för alla.
- slides för föreläsningarna är tillgängliga via länkar i schemat nedan
Datum |
Innehåll |
Boken |
Övrigt |
3/11 |
Datorer och programmering, intro slides |
1,2 |
Installera Python |
9/11 kl. 13:15 |
övning som tillhör föreläsning 1 |
|
|
10/11 |
Problemanalys och design av program och funktioner slides |
2,6 |
|
17/11 |
Beräkningar med heltal och flyttal slides |
3 |
|
24/11 |
Strängar, listor, filer slides |
5 |
|
1/12 |
Datasamlingar och dataanalys, design för Lab 1 slides |
11 |
Redo för Lab 1 |
8/12 |
Algoritmer med loopar och villkor slides |
7,8 |
|
15/12 |
Extra föreläsning: Lab 2 tjuvstart och annat julgott slides |
|
|
18/12 |
Lab 1 deadline |
|
|
18/1 |
4 |
||
25/1 |
Klasser och objektorientering (slides) (racer2.py) (racer3.py) |
10 |
Redo för Lab 2 |
1/2 |
Objektorienterad design och Labb 2 (slides, pdf) |
12 |
|
8/2 |
AI och Maskininlärning (översikt och kodexempel) slides |
|
|
15/2 |
Matriser och linjär regression: design för lab 3 slides |
Redo för Lab 3 | |
19/2 |
Lab 2 deadline |
||
25/2 (torsdag!) |
Analys av algoritmer, komplexitet, rekursion, beräkningsbarhet slides |
13 |
|
4/3 kl.10 |
Repetition och frågestund slides |
||
5/3 |
Lab 3 deadline |
||
12/3 |
Extralabb deadline |
||
15/3 |
Tenta, digitalt på distans |
8:30-10:30 |
|
21/3 |
Sista deadline för nya försök på labbarna |
|
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: motsvarande föreläsningar är tillgängliga här på Canvas för registrerade studenter. För andra intresserade finns relaterade filmer på en YouTube-kanal
Slides: föreläsningarnas OH-bilder är tillgängliga genom länkar i föreläsningstabellen.
Webbsidan är den här sidan finnas 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 individuellt, och det är förbjudet att kopiera kod från varandra.
Kursen har fyra labbar:
- 0. Matematiska formler. Programmet är en första övning i hur man uttrycker matematik i Python med hjälp av aritmetiska operationer och loopar.
- 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. 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.
- 3. 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.
Den övriga undervisningen på kursen har dessa labbar i syfte: vi kommer att gå genom 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
Kursen ges för första gången nu.
Lärandemål
Kunskap och förståelse:
- Uttrycka matematiska formler som uttryck och algoritmer i Python
- Välj 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
Kursen har två möjliga betyg: godkänt (G) och underkänt (U). För att få godkänt krävs
- 3 inlämningsuppgifter (även kallade för labbar) inlämnade och godkända före varsin deadline. Rättningen sker mest automatiskt via testprogram, och man kan lämna in mer än en gång. Men vi kommer även att göra manuella kontroller. Labbarnas ämnen är beskrivna ovan. Labb 0 behöver inte lämnas in.
- en skriftlig online-tenta, på ett datum som förmedlas senare. Tentan består av problem som ska lösas, dels med programmering dels lite mera teoretiskt. Alla hjälpmedel (böcker, internet, python-tolken) är tillåtna, men det är förbjudet att kommunicera med andra människor under tentans gång. Tentan bedöms med betyg U eller G (=3), som även blir hela kursens betyg.
- extra labbuppgifter, som kan göras för att höja kursens betyg till 4 eller 5, förutsatt att du har fått godkänt (3) i tentan.
Lite praktiska detaljer: varje labb har både sin egentliga deadline och en sista deadline (gemensam för alla labbar) för återinlämning. Det som gäller är att
- du måste lämna in varje labb senast på dess egentliga deadline
- om du inte lämnar in en labb före dess egentliga deadline tolkas detta som att du har hoppas av kursen
- om din labb inte blir accepterad kan du göra en andra inlämning före sista deadline
- vi garanterar att kunna rätta två inlämningar av samma labb och student, men inte nödvändigtvis fler
- om det ser ut att du missar en deadline på grund av sjukdom, kontakta Aarne så fort som möjligt
Både tentan och labbarna måste bli godkända för ett godkänt betyg. Så vad gäller om en av dessa saknas?
- tentan: det blir fler omtentor senare, möjligen i samband med andra Python-kurser
- labbarna: om alla labbar har blivit godkända, sparas de i Ladok. Partiellt godkända labbar sparas inte, utan du måste i så fall i princip göra samtliga labbar på en senare Python-kurs. Men det kan förstås vara möjligt att återvända den här kursens labbar om specifikationerna inte har ändrats
Länk till kursplanen
Course summary:
Date | Details | Due |
---|---|---|