Föreläsningsöversikt 1.1¶
- Kursinformation
- Datorn och program
- Operativsystem
- Tangentbordet
- Terminalen
- Sökvägar
- Kommandon
Vem är jag och vad gör jag här?¶
Om kursen¶
Tre huvudområden¶
- Grundläggande informationsteknik: målet är att alla kogvetare ska ha en grundförståelse av IT och datorsystem
- Grunder i programmering (Python): förberedelse inför kommande kurser och arbetsliv; använda programmering som ett verktyg
- Diskret matematik: introduktion till begrepp och formalismer som är relevanta för programmering
Min målsättning¶
- Hjälpa er att utveckla tillräckliga kunskaper om formella modeller och formellt tänkande för att med viss bekvämlighet kunna resonera kring gränsområdet, överlappet och skillnaderna mellan mänsklig kognition och formella modeller.
- Mänsklig kognition har ni redan personlig erfarenhet av, och ni kommer lära er att resonera kring det i framtida kurser.
- Vad jag menar med "formella modeller" och "formellt tänkande" återkommer vi till på föreläsningen nästa vecka.
Digitala kontaktytor¶
- Kurshemsida (all kursinformation hittar ni här, inkl. föreläsningsbilder)
- https://www.ida.liu.se/~729G46/
- OBS! Kommer att uppdateras löpande under kursen. Endast Tema 1 är slutgiltigt. (Vi kommer till varför.)
- Webreg
- https://www.ida.liu.se/webreg3/729G46-2025-1
- Anmälan till seminariegrupp/pargrupp.
- Resultat/kommentarer - lärare fyller i återkoppling, systemet skickar e-post
- E-postlista
- 729g46_2025ht_h7@student.liu.se (men snälla spamma inte varandra i onödan)
Skicka kursrelaterad e-post¶
- Skicka endast från er LiU-adress
- (Mail utifrån, speciellt från gratistjänster som Gmail, mail.com, etc., fastnar ofta i LiUs spamfilter och det kan vi enskilda anställda inte påverka.)
- Inled ämnesraden med kurskoden
- T.ex. "729G46: Fråga om loopvillkor"
- Om ni ursprungligen registrerat er på en tidigare omgång av kursen - berätta när ni först läste kursen.
Personal¶
- Lärare
- Johan Falkenjack — Kursledare, examinator, föreläsare, seminarieledare
- Charlie Simonsson — Kursassistent, seminarieledare, labbassistent
- Simon Ekman simek727@student.liu.se — Seminarieledare, labbassistent
- Elvira Ling elvli805@student.liu.se — Seminarieledare, labbassistent
- Kacper Sieklucki kacsi975@student.liu.se — Seminarieledare, labbassistent
- Alva Söderlind alvso873@student.liu.se — Seminarieledare, labbassistent
- Administration
- Jalal Maleki — Studierektor (om ni är missnöjda med kursledaren)
- Anna Grabska Eklund — Kursadministratör (registrering, resultatrapportering, etc.)
Kursplan¶
- Varje kurs har en kursplan där lärandemål, kursinnehåll och examination beskrivs
- Ni hittar kursplaner för alla kurser på
- För den här kursen
- Genväg på kurshemsidan
729G46. Examinationsmoment¶
- HT1:
- LAB1. 2,5hp (U/G/VG): Programmeringsuppgifter, Tema 1-3
- EXA1. 2,5hp (U/G): Linux-introduktion och seminarier, Tema 1-3
- DUG1. 1hp (U/G): Dugga i programmering
- HT2:
- LAB2. 4,5hp (U/G/VG): Programmeringsuppgifter, Tema 4-6
- EXA2. 1,5hp (U/G/VG): Rapporter och seminarier, Tema 4-6
- För G på kursen krävs G på alla examinationsmoment.
- För VG krävs, utöver kraven för G, också VG på LAB1, LAB2 och EXA2
Förändringar i kursen baserat på tidigare kursutvärderingar¶
- Många fler små och automaträttade övningsuppgifter under första halvan av kursen, färre stora uppgifter som man kan fastna på och inte komma vidare utan hjälp.
- Färre föreläsningar, istället inför vi praktiskt fokuserade storseminarier.
- Färre olika saker samtidigt under kursens första halva.
- Vi slutför IT-momentet under de första 4 veckorna och matematikmomentet är mer inbakat i programmeringen, inga separata matteuppgifter.
- Ganska många och ganska stora förändringar på en gång.
- Därför är många detaljer inte helt spikade än, vi får se vad som funkar och inte funkar och anpassa oss efter det. Målet är att kursen ska fungera så bra som möjligt för att ge er bästa möjliga förutsättningar att lyckas.
- Det betyder också att jag vill att ni hör av er så snart som möjligt om något inte funkar.
Rekommenderad kurslitteratur¶
Informationsteknologi
- Janlert, L.-E. (2015). Tänkande och beräkning: en inledning till datavetenskap och kognitionsvetenskap. Studentlitteratur AB.
- Lunell, H. (2011). Datorn i världen, världen i datorn: en introduktion till data- och informationsteknik. Studentlitteratur AB.
Python
- Skansholm, J. (2019). Python från början. Studentlitteratur AB.
Diskret matematik
- Kuhlman, M., & Dahllöf, M. (2014). Matematik för språkteknologer. (PDF finns på kurshemsidan)
Ytterligare litteraturtips finns på kurshemsidan
Frihet och ansvar¶
- Offensiv kunskapsinhämtning
- Det finns inte möjlighet att gå igenom allt kursinnehåll på föreläsningar.
- Mestadels måste du programmera, läsa dokumentation, programmera, klura och experimentera, programmera, söka efter information, programmera, fråga en lärare, programmera och programmera.
- Det går inte att läsa eller lyssna sig till programmeringsfärdighet.
- Eget ansvar för aktivt deltagande i dina universitetsstudier
- Om du missar något moment kommer ingen jaga dig. Du får helt enkelt inga poäng.
Generativ AI¶
- Akademiskt fusk att lämna in uppgifter en AI löst åt dig -> Avstängning från studierna
- Skadar din inlärning -> Svårt att klara duggan
- Använd i första hand andra sätt att söka hjälp och information.
- Tips för konstruktivt användande finns på kurshemsidan:
Kursupplägg¶
- 12hp ~ 320 timmar totalt över 20 veckor.
- Kursen är designad för 40% fart dvs ca 16h/vecka (parallell kurs ca 24h/vecka)
- 5-8h schemalagt per vecka → 8-11h självstudier per vecka i snitt
- Hur många timmar som behövs för varje individ varierar, vissa kommer behöva lägga fler, andra färre
- Antag att du behöver lägga fler tills motsatsen visar sig, välkommen till universitetet ;)
- Kursen är uppdelad i 6 st teman:
- Tema 1-3 grunder
- Tema 4-6 utveckling
- Varje tema 3 veckor (48h)
Tema 1¶
Se kurshemsidan¶
Om ni upplever problem under kursen¶
- Hör av er om ni har problem under kursen, vänta inte tills kursen är slut.
Anmälan till seminariegrupper i EXA1¶
- Enskild anmälan till en grupp om 6 personer i Webreg
- Ni behöver inte anmäla er till samma seminariegrupp i EXA1 som er labbpartner i LAB1
- Tema 1: Linux-introduktion och Begreppsseminarie 1-2
- Tema 2: Begreppsseminarie 3
- Deadline för anmälan till EXA1: 29 augusti
Anmälan till pargrupper i LAB1¶
- Ni bildar pargrupper och anmäler pargruppen i Webreg
- En pargrupp består av två studenter
- En grupp om tre går att ordna vid ojämnt antal i klassen, kontakta Johan.
- Arbete ensam endast ok i undantagsfall när särskilda omständigheter förekommer, kontakta Johan.
- Parprogrammering av pythonuppgifter
- Deadline för anmälan till LAB1: 3 september
Olika undervisningsformer¶
Olika typer av schemalagda pass har olika former.
- Föreläsning (i helklass):
- Det vi har nu. Introduktion och teori. (En per tema från tema 2 och framåt.)
- Storseminarium (i 1/3-klass):
- Praktiskt inriktade tillfällen för att introducera nya konstruktioner och koncept i programmering. Kräver förberedelse.
- Seminarium (i smågrupper):
- Diskussioner eller presentationer i liten grupp. Kräver förberedelse.
- Redovisningspass (i halvklass):
- Presentationer
- Laborationspass (i helklass):
- Handledda tillfällen för arbete med programmeringsuppgifter. Alltid i datorsal.
- Lektion (i helklass):
- Övrigt, oftast praktiskt inriktade, formerna varier.
- OBS! Arbete utanför schemalagd tid krävs.
Storseminarier, två spår¶
- En sak i taget:
- Mer demonstrationer.
- Lägre tempo.
- Mer teori.
- Experimentering:
- Mer diskussioner.
- Högre tempo.
- Mer praktik.
- Välj spår efter att ha gått igenom förberedelsematerialet.
Deadlines¶
- Deadlines för inlämningar m.m. finns på kurshemsidan!
- Uppsamlingstillfällen
- Två uppsamlingstillfällen för rättning av kompletteringar inlämnade efter kursens slut
- Uppsamlingstillfälle 1: 1 juni 2025 (kl. 10.00)
- Uppsamlingstillfälle 2: 4 augusti 2025 (kl. 10.00)
Pythonuppgifter under Tema 1-3¶
- Genomförs i par och introducerar nya programmeringskonstruktioner och koncept.
- Många små och mer avgränsade uppgifter.
- Duggauppgifterna kommer likna de mer avancerade Pythonuppgifterna.
- Automatisk rättning:
- skriv kod i textfil
- kör rättningsskript via terminalen
- kopiera rättningskod till textfil (en textfil för varje del)
- lämna in textfilerna via Sendlab
- OBS! Testa er kod innan ni använder rättningsskriptet. Automaträttning kan endast utföras var
15:de8:e minut.
Temauppgifter under Tema 4-6¶
- Större programmeringsuppgifter med mer fokus på problemlösning.
- Tillämpning av det ni lärt er från Pythonuppgifterna - sätta ihop mindre delar till en helhet.
- Redovisas muntligt på schemalagt redovisningstillfälle.
- Lämnas sedan in i Sendlab.
Linuxintroduktion under Tema 1¶
- Genomförs individuellt.
- Introduktion till datorsystemen på LiU.
- Instuderingsmaterial på kurshemsidan.
- Tester i Lisam.
Inför handledda pass i datorsal¶
- Läs igenom instruktionerna innan första labbpasset.
- Sprid ut er mellan salarna (vi har flera salar per pass).
Hur ber man om hjälp?¶
- Undvik frågor som "vi sitter fast"/"något blir fel"/"vad ska vi göra"?
- Bättre sätt att ställa frågor
- berätta om problemet ni försöker lösa
- berätta hur ni tänkt att ni ska lösa problemet
- visa hur ni försökt lösa problemet, beskriv vad som inte fungerar som förväntat
- Exempel
- Försöker hitta information om kommandot
head
- Googlar efter: head command
- Får inte bra resultat
- Försöker hitta information om kommandot
Datorsalar (eller PUL - Programutvecklingslaboratorium)¶
- Datorsalarna finns i B-huset innanför ingångarna B 25 och B 27
- Schemat i TimeEdit har kartlänk till MazeMap
- Användning utan för schemalagd tid
- Fritt fram 24/7/365 om det är olåst och inte står något annat på dörren.
- Om det är bokat av annan kurs kan ni dock bli ombedda att gå/vara tysta vid platsbrist/genomgång.
- Obs! Salar kan vara schemalagda fram till 21.00 på vardagar (och ibland på helger under tekfaks tenta-p).
Begreppsseminarium¶
- Syfte
- Lära er om grundläggande informationsteknik. Även om inte allt "används" i denna kurs är målet att alla kogvetare ska ha en viss grundkunskap inom IT
- Upplägg - Flipped classroom
- Före seminarium: Se videos, gör övning, skicka in Entry Ticket
- Seminarium på Campus
Begreppsseminarium - Förberedelser¶
- Titta på videoklippen (ca 1 h obligatoriskt + 1 h rekommenderat)
- Gör minst en av övningarna
- Fyll i din "Entry Ticket" (länk på resp. Begsem-sida)
- Beskriv en av de viktigaste punkterna som togs upp i förberedelsematerialet enligt dig.
- Beskriv vad som var “the muddiest point” i förberedelsematerialet enligt dig? (Med “muddiest point” menas det som du tyckte var mest oklart, förvirrande eller svårt.)
- Berätta vad du vill veta mer om relaterat till förberedelsematerialet.
Begreppsseminarium - under seminariet¶
- Diskussion av materialet
- Reda ut oklarheter
- Diskutera exempel
- Diskutera övningar
- Diskutera tillämpningar
- Ta gärna med er egna frågor utöver de på kurshemsidan!
Pust...¶
Tema 1¶
"Any sufficiently advanced technology is indistinguishable from magic."
- Arthur C. Clarke
Vad är en dator?¶
Vad är ett operativsystem?¶
LiUs GNU/Linux-miljö
Vad i hela fridens namn, jag har ju knappt använt en dator med tangentbord förut?!
It's a UNIX System!¶
Hur brukar det se ut?
LiUs Linuxmiljö
- Operativsystem: GNU/Linux (Ubuntu 22.04)
- Inloggning med LiU-ID
- Möjlighet att logga in från egen dator via Remote-SSH i VS Code (som ni får hjälp att installera imorgon)
- Se LiUs studentsidor samt kurshemsidan för mer info
Terminalen som gränssnitt
Vadå gränssnitt?
- Engelska: interface
- Gränssnitt - platsen där två olika system möts och kommunicerar med varandra - något som ligger mellan två olika system och genom vilket systemen kommunicerar med varandra.
Kommandoradsgränssnitt (CLI - Command Line Interface)¶
För autisterna i klassen (ni är sedda ❤️)¶
- Terminalemulatorn/terminalen
- Tillhandahåller funktionalitet för skalprogram att visa text och ta emot tangentbordstryck från användaren. Själva "fönstret".
- Skalet/skalprogrammet (eng. shell)
- Tillhandahåller ett interaktivt gränssnitt för att köra kommandon i operativsystemet.
- Startas automatiskt när vi öppnar terminalprogrammet.
- En typ av interpretator, som tolkar text och utför instruktioner.
- Prompt
- Sekvens av tecken som visar att skalet är redo att ta emot ett kommando.
- Tecknet
$
används ofta för att representera en godtycklig prompt i dokumentation och exempel.
- Konsol
- En specialterminal som tillhandahålls direkt av ett program för att kommunicera specifikt med det programmet, t.ex. av operativsystemets kärna (eng. kernel).
För normala människor (ni är också sedda ❤️)¶
- Använd terminal, konsol, skal, kommandoraden, osv. som synonymer.
- Det är ok.
Olika skal - sh
och dess barn¶
bash
är standard i de flesta moderna Linux-system men har en massa olika nära syskon somzsh
(standard i macOS sedan 2019) ochksh
. Dessa är alla baserade påsh
och mestadels kompatibla med varandra.
Olika skal - fish
, bara för jobbiga hipsters¶
- Lär er
bash
först och vad det "kostar" att byta till något som inte är 100 % kompatibelt.
Tangentbordet vi alla ser oftast?¶
"Riktiga tangentbord"¶
- Inte bara för inmatning av tecken.
- Kanske självklart, men ni kommer att hata programmering och att använda terminalen så länge ni måste sträcka er efter musen för operationer som ni gör hundratals gånger om dagen eller skriva samma långa harang 17 gånger.
- Börja tänka i termer av "finns det ett kortkommando för det här?" när du redigerar i VS Code.
- Använd piltangenterna och tab-tangenten i terminalen, annars blir du galen.
Måste man ha ett jätteavancerat specialtangentbord för att vara en bra programmerare?¶
Nej, bara jättejobbiga hipsters och supernördar har det¶
fish
.)