Course syllabus

This is the web page for the summer course of 2022. If you are looking for DAT445, Python introduction in study period 3, 2023, click here

DAT455 Introduktion till programmering i Python, sommaren 2022 (7,5 hp)

Kursen ges av institutionen för Data- och informationsteknik.

Kursen börjar den 28 juni kl. 10:00 med en Zoom-föreläsning. 

(För senare föreläsningar finns en Zoom-länk och lösenord i Announcements och är därmed tillgänglig endast för de studenter som är registrerade på kursen. Men vi gör ett undantag för den första föreläsningen, eftersom alla inte ännu kan logga in på Canvas.)

Kursen ges helt på distans. Alla tider för föreläsningar, övningar och laborationer kommer att finnas på den här sidan. (Men de finns inte i TimeEdit såsom vanliga kurser.) 

Resurser utanför Canvas:

Kontaktuppgifter

 Aarne Ranta examinator och föreläsare (email, adress och telefon finns i slutet på hemsidan)

Handledare (TAs) kommer att kunna nås via Slack.

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å gånger i veckan, men som även kan ses senare (och i vissa fall tidigare) som inspelningar. Tider: tisdag och torsdag kl 10-12
  • övningar, som är klasser där en handledare går genom exempel med live-kodning och svarar på generella frågor inför en mindre klass. Varje föreläsning har en motsvarande övningsklass. Tider: tisdag och torsdag 13-17, med parallella klasser à 2 timmar.
  • datorlaborationer, tillfällen där studenterna får ställa individuella frågor om sitt eget arbete, i synnerhet om labbarna. Tider: många olika varje måndag, onsdag, fredag kl 10-17. Schemat ska justeras efter behov.

Tanken är att varje student ska anmäla sig till en övning och en datorlaboration per föreläsning, dvs oftast två per vecka. Men det finns inga kursmoment med obligatorisk närvaro, förutom tentan (som också går på distans).

Övningspassen och laborationspassen administreras via Slack, som ni ska få en inbjudan till via mail.

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 samma innehåll och är öppna för alla.
  • Vissa föreläsningar kommer att ges on-line via Zoom och göras tillgängliga via Files på Canvas. Dessa är tillgängliga endast för registrerade studenter. Zoom-länken kommer publiceras i Announcements. Det finns motsvarande YouTube-föreläsningar även för dessa, men innehållet på on-line-föreläsningarna är anpassat till ändringar som gjorts inför den här kursen.
  • Slides för föreläsningarna är tillgängliga via länkar i schemat nedan. De kan få mindre uppdateringar under kursens gång.

Deadlines för labbarna finns även under Assignments.

Datum 

Innehåll 

Boken 

Övningsklasser

Övrigt

28/6

online kl 10-12

1. Datorer och programmering, intro slides

1,2

(13:15) GE, JS, SSE ;

(15:15) AR, GE, SSE

Installera Python

30/6

2. Problemanalys och design av program och funktioner slides

2,6

(13:15) FrJ, GE, KG, SSE;

(15:15) FrJ, GE, KG, JS, SSE;

5/7

3. Beräkningar med heltal och flyttal slides

3

 (13:15) GE, AS, SSE;

(15:15) FrJ, GE, AS, SSE;

7/7

4. Strängar, listor, filer slides

5

(13:15) FrJ, GE, SSE 

(15:15) AR, FrJ, GE, SSE

 

12/7

5. Datasamlingar och dataanalys, design för Lab 1 slides

11

(13:15) AS, GE, SSE 

(15:15) AR, AS, GE, SSE

Redo för Lab 1

14/7

6. Algoritmer med loopar och villkor slides

7,8

 (13:15) AS, SSE

(15:15) AS, SSE

19/7

7. Objekt och grafik (slides, pdf) (racer.py

4

 (13:15) AS, SSE

(15:15) AS, ED, SSE

21/7

online kl 10-12

8. Klasser och objektorientering (slides) (racer2.py) (racer3.py

10

 (13:15) AS

(15:15) AS, SSE

Redo för Lab 2

25/7

Lab 1 deadline

 

 

 

26/7

9. Objektorienterad design, arv (slides, pdf)

12

 (13:15) AS, (15:15) AR

28/7 online kl 10-12

10. AI och maskininlärning (översikt och kodexempel) slides

(13:15) AS;

inget pass 15:15

 

2/8

11. Matriser och linjär regression: design för lab 3 slides

(13:15): AS;

(15:15): AS

Redo för Lab 3

4/8

online kl 10-12

12. Analys av algoritmer, komplexitet, rekursion, beräkningsbarhet slides

13

(13:15): AS, SSE;

(15:15): AS

 

10/8

Lab 2 deadline

 

 

19/8

Lab 3 deadline

 

 

22/8

online kl 10-12 

Upprepning av kursen och genomgång av en gammal tenta

 

 

24/8 kl 14-18

Tenta, digitalt på distans, via Canvas

 

30/8

Sista deadline för andra inlämning av labbar som fått retur

 

7/10 kl 14-18

Ontenta, via Canvas

 

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: vissa föreläsningar, angivna på föreläsningstabellen ovan, är tillgängliga online på Zoom för registrerade studenter. För andra intresserade, samt dem som inte kan delta i online-föreläsningarna, finns filmer på vår YouTube-kanal

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 individuellt, och det är förbjudet att kopiera kod från varandra.

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 den 27 augusti. 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 labb finns automaträttade övningar, 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. 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å 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

De automaträttade övningarna har som syfte att hjälpa komma igång med egen programmering så snart som möjligt.

Lab 2 har en enklare struktur men samma funktionalitet (samma spel) som tidigare. 

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

För godkänt betyg krävs

  • godkända lösningar på alla 3 labbar senast på kursens sista deadline 27 augusti
  • godkända svar på tentan eller en omtenta

Betygskalan är U (underkänt) eller G (godkänt). 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