Course syllabus

Introduktion till programmering i Python

DAT455 (Chalmers) / DIT001 (GU) , Sommaren 2020 (7,5 hp)

Kursen ges av institutionen för Data- och informationsteknik och samläses mellan Chalmers och Göteborgs universitet

Kursen börjar den 22 juni och slutar den 28 augusti. Se detaljerne under Föreläsningstabellen och kalendern.

Resurser utanför Canvas:

 

Kursvärdering (för GU-studenter)

Nu när din kurs är slut skulle vi verkligen uppskatta om du kunde fylla i kursvärderingen som har skickats till din gus-mail.

Din feedback är väldigt viktig. Vänligen gör din del genom att fylla i utvärderingen för alla dina kurser på ett konstruktivt och hjälpsamt sätt.

 

Viktig information om registreringen

Har du problem med att registrera dig på kursen i Ladok eller på Canvas?

För Chalmers: Blev du antagen 16 juni till DAT455 och inte registrerat dig själv senast i söndags 21 juni, har du förlorat din plats på kursen. Har du blivit erbjuden en reservplats, kontakta Chalmers antagning antagning@chalmers.se för hjälp med registrering.
Är du GU-student (kurskod DIT001), vänligen kontakta 
student_office.cse@chalmers.se

Kursens lärare kan inte registrera dig.

 

Kontaktuppgifter

Aarne Ranta (examinator, föreläsare)  http://www.cse.chalmers.se/~aarne/

Jonas Almström Duregård (föreläsare)

Ana Bove

Krasimir Angelov

handledare: meddelas senare

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

Kursen börjar den 22 juni 2020 och slutar den 28 augusti. Föreläsningarna kommer att finnas i YouTube: klicka på länken i "Course summary" nedan för att komma åt dem. De som inte är registrerade på Canvas kan se föreläsningarna på YouTube-kanalen https://www.youtube.com/channel/UCxay__rBQeA1bapBONoExlQ 

Vi har en sommarpaus i föreläsningar från 4 juli till 2 augusti. Under pausen kan man dock jobba med inlämningsuppgifter och få handledning från jourhavande lärare via email och chat. Detta är en möjlighet för den som vill ha en lugnare takt i juni och augusti: har man tid att öva programmering och göra färdig Lab1 under pausen blir effekten att kursen i sin helhet fungerar som en "halvfartskurs" . Men den som planerat ta semester i juli kan då kompensera för detta genom att jobba hårdare i juni och augusti.

Före sommarpausen har vi 6 föreläsningar, 3 per vecka (måndag, onsdag, fredag).

Efter sommarpausen har vi 6 föreläsningar, 2 per vecka (måndag, onsdag), ingen på sista veckan.

Föreläsningstabellen

I tabellen nedan anges föreläsningarnas tema och datum och deras relation till labbarna. Varje föreläsning sker kl 10:00 - 11:45 med rast i mitten, och följs av gruppsessioner kl 13:15-15:00 och 15:15-17:00 (välj en av tiderna). Varje föreläsning och någon av gruppsessionerna varje gång spelas in och göras tillgängliga på nätet:

Datum 

Lärare 

Innehåll 

Boken 

Övrigt

M 22/6

AR

Datorer och programmering, intro slides

1,2

Installera Python

O 24/6

AR

Problemanalys och design av program och funktioner slides

2,6

F 26/6

AR

Beräkningar med heltal och flyttal slides

3

M 29/6

AR

Strängar, listor, filer slides

5

 

O 1/7

AR

Datasamlingar och dataanalys, design för Lab 1 slides

11

Redo för Lab 1

F 3/7

AR

Algoritmer med loopar och villkor slides

7,8

M 3/8

JD

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

4

O 5/8

JD

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

10

Redo för Lab 2

F 7/8

 

Deadline Lab 1

 

 

M 10/8

JD

Objektorienteda design och Labb 2 (slides, pdf)

12

O 12/8

AR

AI och Maskininlärning (översikt och kodexempel) slides

 

M 17/8

AR

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

Redo för Lab 3

M 17/8

 

Deadline Lab 2

 

O 19/8

AR

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

13

O 26/8

Repetition och frågestund (zoom-länk i Announcements)

T 27/8

Deadline Lab 3

F 28/8

Tenta, digitalt på distans

8:30

M 31/8

Sista deadline för nya försök på Lab 1

 

O 9/9

Sista deadline för nya försök på Lab 2

 

L 19/9

Sista deadline för nya försök på Lab 3

 

L 10/10

omtenta (tid att bekräfta)

 

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.

Filmer: alla föreläsningar spelas in och kommer att vara tillgängliga på kursens YouTube-kanal

Slides: föreläsningarnas OH-bilder kommer att vara tillgängliga på nätet i förhand 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 finnas tillgängliga.

Mjukvara. All mjukvara är gratis och kan laddas ner från nätet.  Det finns instruktioner på https://it.portal.chalmers.se/itportal/GenStud/Python och Chalmers IT-support har lovat hjälpa om dessa inte är tillräckligt. Även kursens lärare kan hjälpa med installationen.

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 tre labbar:

  • 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.

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.
  • en skriftlig online-tenta, som görs den 28 augusti. Tentan består 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.  

Lite praktiska detaljer: varje labb har både sin egentliga deadline och en sista deadline 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 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 dess sista deadline
  • vi kan 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: partiellt godkända labbar "sparas" inte, utan du måste i så fall göra samtliga labbar på en senare Python-kurs

Länk till kursplanen

Chalmers

GU

 

Course summary:

Date Details