1 of 54

Föreläsning 1

Kursintro, programmeringsintro, variabler och namngivning & kodkommentering

2 of 54

Dagens agenda

  1. Hej och välkomna!
  2. Kursintroduktion
  3. Dator- och programmeringsintroduktion
  4. Variabler och namngivning
  5. Kodkommentering

3 of 54

Vem är jag?

  • Namn: Camilla Björn
  • Jobb: Doktorand i datadidaktik
  • Bakgrund: Civilingenjör- och lärarprogrammet här på KTH
  • Favoritaktiviteter: Klättring, pyssel, matlagning (och provsmakning…), träffa studenter!

Gå in på menti: https://www.menti.com/al8yjx8grf74

Dela gärna med er:

  • Vilket program kommer du från
  • Vad är din favorit aktivitet

Vilka är ni?

Välkomna!

4 of 54

Kursnämndsrepresentanter

  • 2-3 studenter som kan tänka sig att vara kursnämndsrepresentanter.
  • Normalt 3 möten (början, mitten och slutet av kursen).

5 of 54

Kursintroduktion

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

6 of 54

Övergripande kursstruktur

Höstterminen - Programmeringsteknik

  • Kursansvarig: Camilla Björn
  • Examinator: Alexander Baltatzis
  • Ladok-moment: LABP (3 hp, P/F)
    • 6 Labbar
    • 1 Datorprov (KS)

Vårterminen - Datateknik

  • Kursansvarig & examinator: Alexander Baltatzis
  • Ladok-moment: LABD (3 hp, A-F)
    • 7 Labbar
    • Betygshöjande labb
  • Ladok-moment: KONT (3 hp, A-F)
    • Kontrollskrivningar
    • Betygshöjande tenta

7 of 54

Programmeringsteknik (3 hp)

Höstterminen

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

8 of 54

Lärandemål

Efter godkänd kurs ska du kunna:

  • skriva strukturerade program i Python
  • använda klasser och objekt vid programkonstruktion
  • systematiskt felsöka och testa program
  • använda abstraktion som ett verktyg för att förenkla programmeringen
  • använda programmeringsgränssnitt
  • välja lämplig algoritm till ett givet problem
  • jämföra algoritmer med avseende på tids- och minnesåtgång
  • implementera olika algoritmer för sökning och sortering och redogöra för deras egenskaper
  • formulera och implementera rekursiva algoritmer
  • använda prioritetsköer

  • modellera problem som sökproblem och implementera algoritmer för breddenförstsökning, djupetförstsökning och bästaförstsökning
  • beskriva grundläggande komprimeringsalgoritmer och vid vilka typer av komprimering de används
  • implementera stackar, köer, binära sökträd, allmänna träd, hashtabeller och hashfunktioner samt använda dessa
  • använda enkla krypteringsmetoder, och förklara principerna för assymetrisk kryptering
  • använda algoritmer för textsökning, reguljära uttryck och BNF-syntax
  • identifiera problem där datastrukturerna ovan är användbara och konstruera enkla algoritmer med dessa

Dessa är relevanta för hösten

9 of 54

Kursupplägg: undervisningsmoment (HT23)

Föreläsningar

9 tvåtimmars föreläsningar som ligger i fas med labbuppgifterna. Varje föreläsning är kopplad till 1-2 kapitel i kursens digitala ”kursbok” med tillhörande quiz som är förberedande till datorprovet.

Lärare: Camilla

Laborationer

Minst ett labbpass per vecka där du kan redovisa och få hjälp med labbuppgifter.

Lärare & assistenter: Camilla, Emma, Ibrahim, David, Carolina & Oscar

Övningar

Tillfällen då du får diskutera och jobba med relevanta programmeringsuppgifter. Du är välkommen även om du inte ligger i fas i kursen!

Lärare: Emma

10 of 54

Labbar

6 labbar (labb 0 – labb 5)

    • Labb 0 – 3 får gärna göras i par (men inte fler än 2 studenter)
    • Labb 4 & 5 görs individuellt
    • Lämnas in på canvas & redovisas muntligt under labbtillfällen
    • Komplettering kan förekomma, men det påverkar inte betyget
    • Labbarna görs lättast i ordning!

11 of 54

Datorprovet

Markerad som ”kontrollskrivning” i schemat

    • Den 27/11, kl. 8-10
    • Ett canvasquiz
      • Görs enskilt utan kommunikation med andra människor eller AI
      • Tillgång till internet och pythontolk

12 of 54

Kursregler & hederskodex

Tillåtet

  • Jobba tillsammans i par.
  • Diskutera labbuppgifter med andra studenter.
  • Googla syntax eller lösningar till specifika delproblem.
  • Ta hjälp av AI för att få exempel på hur syntax fungerar eller lösa specifika delproblem.

Inte tillåtet

  • Dela kod med varandra (få tillgång till någon annans lösning).
  • Använda kodsnuttar som en inte skrivit själv utan att källhänvisa.
    • Om du får hjälp att lösa en specifikt delproblem så måste du skriva en kommentar i koden (vilken webbsida, bok, AI eller människa hjälpte dig och med vad).
  • Redovisa någon annans lösning som sin egen.

I kursen tillämpas EECS-skolan Hederskodex: https://www.kth.se/eecs/utbildning/hederskodex/inledning-1.17237 

13 of 54

Kursbok - Möbius

Vill ni ändå köpa en bok, rekommenderas:

Tony Gaddis: Starting Out with Python, Global Edition.

Veckans läsning

14 of 54

Kursens takt…

  • Oj oj, här går det undan 🤯
  • Kursen håller ett väldigt högt tempo så var försiktig med att komma efter.
  • Kontakta jättegärna mig om du har svårt att hänga med!
    • Jag kan inte ta bort uppgifter eller stanna klockan några veckor (tyvärr), men jag kan försöka lägga in mer stöd om det behövs.

15 of 54

Om du behöver hjälp med labbarna…

  • Labbtillfällen
  • Diskussionsforumet
  • Allmänhandledningen
  • Jobba tillsammans med andra
  • Kursboken – Möbius
  • Föreläsningsslides
  • Generativ AI (tex. Chat GPT)
  • Google
    • W3schools
    • Programiz
    • Stackoverflow kan vara väldigt bra, men många svar kan också leda en på villovägar, så var kritisk och se till att du förstår svaren!

Det finns många sätt att få hjälp på, men se till att du tar hjälp på tillåtna sätt.

16 of 54

Kontaktvägar

Kontakta lärare och assistenter i kursen

  • Kontakta oss genom mail eller canvas
  • Kontakta mig (Camilla) för kursspecifika frågor (särskilt gällande höstterminen)
  • Använd gärna diskussionsforumet om du har programmeringsspecifika frågor (det är nästan alltid som fler är intresserade av svaret!)

Kontakta er

  • Se till att du får anslag skickade till mailen!
  • Ha KTH-mailen kopplad till det mailkonto som du har bäst koll på.

Skicka meddelande i Canvas

17 of 54

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

18 of 54

Dator- & programmerings-introduktion

Kapitel 0 i Möbius

19 of 54

Vad är programmering?

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

20 of 54

Programmering är…

  • Ett sätt att kommunicera med datorer
  • Att skriva mjukvara
  • Problemlösning
  • Ett hantverk

21 of 54

Alla mjukvara är uppbyggt av filer

=

=

22 of 54

Pythonfiler

Pythonfiler har alltid ändelsen .py

23 of 54

Filstruktur

Rot

Dokument

Skrivbord

Program

Nerladdningar

Zoom

Word

Privat

homework.pdf

Skola

Recept

Foton

Linalgen

Tilpro

labb2

labb1

ticket_prices.txt

bus_ticket.py

Användare

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

24 of 54

Kommunicera med datorn

Grafiskt gränssnitt

Textbaserat gränssnitt

25 of 54

Terminalen

Du kommunicerar med hjälp av tangentbordet och datorn svarar med hjälp av text på skärmen.

Vi använder terminalen som finns i Linux och mac – Windows har en annan…

Andra (nästan) synonyma uttryck för terminalen:

  • Kommandoraden
  • Shell (shellfönstrett)

26 of 54

Filsökväg – file path

  • Filsökvägen beskriver hur du ska gå från en mapp till en annan mapp (eller till en fil)
  • Sätt ihop sökvägen genom att lista alla mappar på en rad och separera dem med ”/” (forwarslash)

Filsökväg: Användare/Dokument/Skola/Tilpro

Dokument

Skrivbord

Nerladdningar

Privat

homework.pdf

Skola

Recept

Foton

Linalgen

Tilpro

labb2

labb1

ticket_prices.txt

bus_ticket.py

Användare

Gå från ”Användare” till ”Tilpro”

27 of 54

Absolut & relativ sökväg

Absolut sökväg - Utgår från roten!

Filsökväg:

Rot/Användare/Dokument/Skola/Tilpro

eller

/Användare/Dokument/Skola/Tilpro

Rot

Dokument

Skrivbord

Program

Nerladdningar

Zoom

Word

Privat

homework.pdf

Skola

Recept

Foton

Linalgen

Tilpro

labb2

labb1

ticket_prices.txt

bus_ticket.py

Användare

Relativ sökväg - Utgår från mappen som du vill starta i!

Filsökväg:

Användare/Dokument/Skola/Tilpro

Uppgift: Gå till Tilpro

/ är ett annat sätt att skriva ”Rot”

28 of 54

Navigera bland filer i terminalen

Dokument

Skrivbord

Nerladdningar

Privat

homework.pdf

Skola

Recept

Foton

Linalgen

Tilpro

labb2

labb1

ticket_prices.txt

bus_ticket.py

Användare

ls – List (skriv ut) alla filer & mappar i den befintliga mappen

Obs: denna trädstruktur visar inte samma filstruktur som terminalen till vänster

Skriv ls och tryck på enter!

29 of 54

Navigera bland filer i terminalen

Dokument

Skrivbord

Nerladdningar

Privat

homework.pdf

Skola

Recept

Foton

Linalgen

Tilpro

labb2

labb1

ticket_prices.txt

bus_ticket.py

Användare

cd – Change directory (byt mapp)

Obs: denna trädstruktur visar inte samma filstruktur som terminalen till vänster

Skriv cd följt av namnet på mappen du vill gå in i (obs mappen måste ligga direkt under/i den mappen du befinner dig i!) och tryck på enter!

30 of 54

Smarta specialtecken & tricks

  • .. = (två punkter) gå tillbaka till mappen innan (en nivå närmre roten)

  • Tab-knappen = autocomplete

  • Uppåt- och nedåt piltangenterna = Återanvänd ett kommando som du skrev några rader högre upp i terminalen

31 of 54

Dags att programmera! 🥳

Kapitel 1 i Möbius

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

32 of 54

Textredigerare

Visual Studio Code

IDLE

33 of 54

Programmeringsspråk: Python

  • Ett av de mest välanvända programmeringsspråken
  • Intuitivare än många andra språk
  • Väldigt många användningsområden

34 of 54

Testa Python

35 of 54

Världens vanligaste och enklaste program

print(”Välkomna till dd1321!")

Här har vi skrivit en print-sats, som skriver ut en text på skärmen när programmet körs. 

Kommandot eller funktionen som används är print. 

Noggrant med stavning och att det är gemener: PRINT, Print eller priint - fungerar inte.

första_program.py

VIKTIGT: Pythonprogram sparas som .py

36 of 54

Dags att testa pythontolken!

Du kommer åt pythontolken genom att skriva kommandot python3

37 of 54

Variabler och namngivning

38 of 54

Datatyper

Det vi skrev ut kallas en sträng (eng. string), str, t.ex.

"Hej alla som läser DD1321","Välkomna!"

Andra datatyper som vi kommer använda är: 

Heltal (eng. integer), int, t.ex. -123, 54, 655

Flyttal (eng. float), float,  t.ex. -3.141592, 43.567, 56.0

Boolean (eng. boolean), bool, t.ex.  True, False

39 of 54

Spara data i variabler

Om du vill kunna återanvända exempelvis en sträng så behöver du spara den i en variabel!

För att hålla koll på vår variabler döper vi dem. Variabelnamn behöver börja på en bokstav men får innehålla bokstäver, siffror och _ (understreck).

kurskod

”dd1321”

En variabel är som en låda som förvarar den data som du vill använda senare.

Den här variabeln (lådan) heter kurskod och förvarar strängen ”dd1321”

Exempel:

kurskod

antal_biljetter

kaffe_kopp5

maträtt3

antalFöreläsningar

40 of 54

Spara data i dina variabler

Att tilldela variabler värden

=  är tilldelningsoperator

Exempel: 

  • kurskod = "DD1310”
  • antal_föreläsningar_period2 = 9

variabelns_namn = ”datan som du vill spara!”

kurskod

”dd1321”

41 of 54

Fördelar med variabler

När vi lagrat data i variabler kan vi sedan använda de, t.ex. skriva ut deras värde:�

kurskod = ”dd1321”

antal_föreläsningar_period2 = 9

print("I kursen", kurskod, "är det ", antal_föreläsningar_period2, "föreläsningar i period 2")

Vi kan också använda värdena som är sparade i variablerna till att beräkna saker. Vi kan tillexempel räkna ut hur många föreläsningstimmar det är under hösten förutsatt att varje föreläsning är 2 timmar.

antal_föreläsningar_period2 = 9

Antal_föreläsningstimmar_period2 = antal_föreläsningar_period2 * 2

print(”Vi har ", antal_föreläsningstimmar_period2, "föreläsningstimmar i period 2")

42 of 54

Regler för att namnge variabler

  • Följer syntaxen
    • variabelnamn = ”det som ska sparas i variabeln!”
  • Börjar med en liten bokstav
  • Enda tillåtna specialtecknet är understreck: _
  • Beskriver vad som finns lagrat i variabeln
  • Alla variabler är skrivna på samma språk (svenska eller engelska) i hela programmet (filen)
  • Alla variabler ska dessutom använda samma typografi
    • snake_case  eller camelCase

43 of 54

Reserverade ord

And del from None True

as elif global nonlocal try

assert else if not while

break except import or with

class False in pass yield

continue finally is raise def

for lambda return

Vissa ord har dock redan andra betydelser i Python, de är reserverade och kan inte användas som variabelnamn. Exempel:

44 of 54

Vilka variabelnamn är okej?

Hittad åldrar

15bussen pass

del variabel_namn

hitta-rätt mittNamn

välkommen!

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

45 of 54

Konstanter

Konstanter är som en variabel, men den ändrar aldrig värde i ett program. 

För att markera att du har skapat en konstant namnges den med versaler (stora bokstäver):�

Används för att det ska vara enkelt att ändra, på ett ställe i programmet, så att det värdet uppdateras på alla ställen det används.

EXAMINATOR = ”Alexander Baltatzis "

KURSPOÄNG = 9

46 of 54

Läs in data från användaren

Det går att skriva mer interaktiva program om du tar in data från en användare!

Använd då funktionen input()

namn = input("Vad heter du? ")

Datatypen som läses in är alltid av typen sträng (string).

Vill vi ha in data av en annan datatyp behöver vi göra en typkonvertering.

47 of 54

Typkonverteringar

  • int(x) – gör om x till ett heltal, exempel: int("43") blir 43
  • float(x) – gör om x till ett flyttal, exempel: float("7.34") blir 7.34
  • str(x) – gör om x till en sträng, exempel: str(7.34) blir "7.34"
  • bool(x) – gör om x till en boolean, exempel:  bool(43) blir True

bool(0)   blir False

48 of 54

Inläsning med typkonvertering

antal_fyrbenta_katter = int(input("Hur många fyrbenta katter har du?"))

antal_kattben = antal_fyrbenta_katter * 4

print(”Dina katter har", antal_kattben, ”ben totalt.")

Observera att vi konverterar svaret som är en sträng till en int!

49 of 54

Vilken datatyp har ditt värde eller variabel?

Ibland är det oklart vilken datatyp värdet som är sparat i din variabel har vilket kan innebära att ditt program inte beter sig som det ska.

Du kan dock använda funktionen type()för att undersöka detta:

antal_föreläsningar_period2 = 13

print(type(antal_föreläsningar_period2))

Utskriften blir: <class 'int'>

50 of 54

Kodkommentar

51 of 54

Kommentarer

Bra att förklara vad koden gör.

Använd # för att kommentera ut en rad eller """ """ för längre kommentarer

"""Detta är ett kort program som frågar användaren om antal husdjur och sedan skriver ut hur många husdjur användaren svarade att hen hade. """ 

antal_husdjur = int(input("Hur många husdjur har du?"))

print("Ja, så du har", antal_husdjur, "husdjur") #print-sats

52 of 54

Upp- och nedräkning

tal = 25

tal += 2 #Adderar 2 till värdet i tal, lagrar resultatet i tal

tal = tal + 2 #Gör samma sak som raden ovanför

tal = 25

tal -= 2 #Subbtraherar 2 från tal och lagrar resultatet i tal

tal = tal - 2  #Gör samma sak som raden ovanför

Uppräkning

Nedräkning

53 of 54

Kodexempel

tal = int(input("Tänk på ett tal"))

tal += 1 #Läger till ett

print("Nu har vi lagt till 1 så talet är:", tal)

54 of 54

Labb 0

Introduktion

Deadline: torsdagen den 2/11

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.