Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
729G46 Informationsteknologi och programmeringTema 1, Föreläsning 1
Jody Foo, [email protected]
Föreläsningsöversikt⁃ Kursinformation:
Kursplan
Kursupplägg
⁃ Datorn
⁃ Program
⁃ Terminalen som gränssnitt
Om kursen, kursupplägg och kursplan
Digitala kontaktytor⁃ Kurshemsida
https://www.ida.liu.se/~729G46/
⁃ Webreg (anmälan till grupper)
https://www.ida.liu.se/webreg3/
⁃ Kursrum på Lisam (inlämningar)
https://lisam.liu.se
⁃ E-postlista
Personal⁃ Examinator/kursledare
Jody Foo ([email protected])
⁃ Assistenter (handledda datorsalspass)
Daniel Holmer ([email protected])
Ludvig Fors ([email protected])
Otto Fors ([email protected])
⁃ Assistenter (seminarier)
Isabella Koniakowski ([email protected])
Otto Fors ([email protected])
⁃ Kursadministratör
Veronica Kindeland Gunnarsson ([email protected])
⁃ Studierektor
Jalal Maleki ([email protected])
Kontorstider⁃ Välkomna torsdagar 10-12 (dock ej 22 augusti)
⁃ Rum E 3F:482 i E-huset
Syftet med kursen⁃ Tillhandahålla
grunder i programmering
grunder i informationsteknologi
⁃ Förkunskapskrav och förberedelse inför fortsättningskurser, t.ex.
Artificiell intelligens
Språkteknologi
Projektkurser
Interaktionsprogrammering
Kandidatuppsats
⁃ Kognitionsvetares roll i arbetslivet
Kursplanvarje kurs har en kursplan där lärandemål, kursinnehåll och examination beskrivs
Kursplan⁃ Lärandemål
mål som studenter ska ha nått efter kursen
⁃ Kursinnehåll
ämnen, begrepp m.m. som tas upp i kursen
⁃ Examination
hur examineras kursmålen, hur delas examinationen upp (provkoder)
Tre huvudområden⁃ Introduktion till programmering, programmeringsspråket
Python
⁃ Diskret matematik
⁃ Grundläggande informationsteknologi
Lärandemål⁃ redogöra för och relatera grundläggande informationsteknologiska begrepp,
programmering och algoritmiskt tänkande till kognitionsvetenskap och kognitionsvetenskapliga tillämpningar
⁃ använda och förklara begrepp från grundläggande diskret matematik i formella beskrivningar
⁃ använda grundläggande datatyper/datastrukturer och styrstrukturer för att skriva enklare program
⁃ identifiera, förklara och konstruera abstraktioner i programkod med varierande grad av stöd i det underliggande programmeringsspråket
⁃ använda ett metodiskt och interaktivt tillvägagångssätt att lösa programmeringsrelaterade problem genom implementering, testning och felsökning
⁃ utarbeta och tillämpa algoritmer för att lösa problem
⁃ redogöra för vad ett program är och hur ett program fungerar, inklusive sådan programkod som de själva och andra skrivit
⁃ producera program med enkla grafiska användargränssnitt.
Blooms taxonomi för lärandemål Kognitiva mål1
Kunskapstaxonomi med några aktiva verb för lärandets resultat
Lägre nivå av lärande Högre nivå av lärande
Faktakunskaper Förståelse Tillämpning Analys Syntes Värdering Komma ihåg Förstå med egna ord Använda i den aktuella
kontexten Ta isär i komponenter för att
förstå strukturen Sammanställa nya
mönster och strukturer Bedömning genom
kriterier Värdera Jämföra
Komma fram till Konstrastera
Kritisera Förklara Motivera Bevisa Avgöra Relatera
Sammanfatta Stödja
Försvara Föreslå
1 Bloom Benjamin S. and David R. Krathwohl. Taxonomy of Educational Objectives: The Classification of Educational Goals, by a committee of college and university examiners. Handbook I: Cognitive Domain. New York, Longmans, Green, 1956.
Definiera Beskriva Nämna Välja
Identifiera Lista
Lokalisera Citera
Recitera Upprepa Markera
Ange
Förklara Försvara
Skilja Utveckla
Generalisera Ge exempel
Förutse Skriva om
Sammanfatta Använda
Kunna tillämpa Beräkna Bevisa
Upptäcka Modifiera Verkställa
Förutse Förbereda Producera Relatera
Visa Lösa
Använda Skissera
Identifiera Urskilja Illustrera Peka ut Relatera
Välja Separera Indela Sortera
Differentiera Skissera
Ange Kritiskt bearbeta
Kategorisera Kombinera
Ställa samman Utarbeta Skapa
Tänka ut Konstruera
Förklara Framställa Modiviera Organisera
Planera Rekonstruera
Relatera Sammanfatta Ta ställning
Repetera någon annans definition av
en princip
Förklara principen genom exempel på dess användning
inom andra områden
Personligen använda principen på procedurer i
verkliga situationer
Kan separera fakta från antaganden i principer
Kombinerar ett antal principer till en ny fungerande strategi
Bedöma användningen av den nya strategin
Modellen bygger på en sammanfattning och översättning som Khalid El Gaidi gjort efter Gronlund N.E. How to Write and Use Instructional Objectives. (2000)
Kursinnehåll⁃ Grundläggande informationteknologi som t.ex. filsystem, filer, internminne, processor, internet, nätverk,
server, klient, databas, kryptering, dataformat som XML, JSON, CSV
⁃ Översiktlig introduktion till datavetenskap
⁃ Handhavande av aktuella datorsystem
⁃ Programmeringsspråket Python
⁃ Kodstil i Python
⁃ Datatyper/datastrukturer, t ex tal, strängar, tupler, listor, sekventiella och hierarkiska strukturer, uppslagsbaserade strukturer
⁃ Styrstrukturer, t.ex. loopar och villkorssatser
⁃ Läsa och skriva information till/från filer
⁃ Läsa data från internetresurser
⁃ Grundläggande objektorienterad programmering
⁃ Grundläggande datavetenskapliga algoritmer som kan tillämpas inom kognitionsvetenskap och för kognitionsvetenskapliga tillämpningar.
⁃ Introduktion till programmeringsmetodik och tekniker för programdesign (t.ex. diagram, pseudokod)
⁃ Grundläggande diskret matematik, t ex mängder, relationer, funktioner, diskreta datastrukturer
⁃ Programmering av enklare grafik och användarinteraktion.
729G46. Provkoder/Examinationsmoment⁃ LAB1. 2,5hp: Temauppgifter, Tema 1-3
⁃ EXA1. 2,5hp: Inlämningsuppgifter och seminarier, Tema 1-3
⁃ LAB2. 4,5hp: Temauppgifter, Tema 4-6
⁃ EXA2. 1,5hp: Inlämningsuppgifter och seminarier, Tema 4-6
⁃ DUG1. 1hp: Dugga i programmering
Betygsättning⁃ Moment med endast U/G:
EXA1 (begreppsseminarier, inlämningsuppgifter Tema 1-3)
DUG1 (dugga + uppgifter inför duggan)
⁃ Moment med U/G/VG:
LAB1, LAB2 (Temauppgifter, Tema 1-6)
EXA2 (seminarier, inlämningsuppgifter, Tema 4-6)
⁃ Kursbetyg
För G på kursen krävs G på alla examinationsmoment.
För VG krävs VG på LAB1, LAB2 och EXA2.
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
Punch, W. F., & Enbody, R. (2017). The Practice of Computing Using Python, Global Edition, 3/E. Boston: Pearson.
⁃ Diskret matematik
Kuhlman, M., & Dahllöf, M. (2014). Matematik för språkteknologer. (PDF)
Ytterligare litteratur finns på kurshemsidan
Frihet och eget ansvar⁃ "Offensiv kunskapsinhämtning"
⁃ Eget ansvar för aktivt deltagande i dina universitetsstudier
⁃ Finns inte möjlighet att gå igenom allt kursinnehåll på föreläsningar
⁃ Om du missar något moment kommer ingen jaga dig. Du får helt enkelt inga poäng.
⁃ Kogvets "Rekommendationer om examination och kursupplägg" (se kandidatprogramsidorna)
https://www.student.liu.se/program/kognitionsvetenskap-180-hp/student/om-examination-och-kursupplagg?l=sv
Kursupplägg(hur kursplanen genomförs)
729G46 Informationsteknologi och programmering⁃ 12hp ~ 320 timmar totalt över 20 veckor.
⁃ Kursen är designad för knapp halvfart (40%) dvs 16h vecka (parallell kurs 24h/vecka)
⁃ Hur många timmar som behövs för varje individ varierar
⁃ Kursen är uppdelad i 6 st teman:
Tema 1-3 grunder
Tema 4-6 fortsättning
⁃ Varje tema 3-4 veckor (48-64h)
Tema 1-3⁃ Schemalagt / tema
3 föreläsningar
1 lektion
1 seminarium (1h)
4-5 handledda pass i datorsal
⁃ Redovisningar och inlämningar / tema
Seminarium i mindre grupper (3 par)
Temauppgift, muntlig redovisning
Inlämningsuppgift (Diskret matematik + reflektionsuppgift)
⁃ Dugga i mellan Tema 3 och Tema 4 (29 oktober)
⁃ Självstudier
Ni kommer behöva jobba med programmering utanför schemalagd tid
~20h schemalagt av totalt 48-64h tid/tema
Tema 4-6⁃ Schemalagt / tema
2 föreläsningar
1 lektion
1 seminarium (1h)
4-5 handledda pass i datorsal
⁃ Redovisningar och inlämningar / tema
Temauppgift, muntlig redovisning
Seminarium i mindre grupper (3 par)
Inlämningsuppgift (Rapport)
⁃ Självstudier
Ni kommer behöva jobba med programmering utanför schemalagd tid
~20h schemalagt av totalt 48-64h tid/tema
⁃ Alla uppgifter med undantag av uppgifterna i diskret matematik samt reflektionsuppgifterna genomförs i av en pargrupp. En pargrupp består av två studenter.
⁃ Tre par (dvs 6 personer) bildar en seminariegrupp.
⁃ Samma pargrupp Tema 1-3. Ny pargrupp Tema 4-6.
Grupper
Registrera pargrupp för Tema 1-3 i Webreg⁃ Registrera er pargrupp i Webreg.
https://www.ida.liu.se/webreg3
⁃ Pargrupp registreras för två examinationsmoment: LAB1 och EXA1.
⁃ OBS! Se till att ni registrera pargruppen så att den har samma gruppbeteckning i båda examinationsmomenten!
⁃ Om ni registrerar er som grupp D.3 i LAB1 ska ni också registrera er som grupp D.3 i EXA1.
Uppgifter/seminarier/redovisningar
Temauppgift⁃ Genomförs i pargrupp.
⁃ Programmeringsuppgift.
⁃ Redovisas muntligt på schemalagt redovisningstillfälle.
⁃ Missad redovisning kompletteras via screencast som lämnas in via Lisam (mer info finns på kurshemsidan)
Pythonuppgifter (Tema 1-3)⁃ Genomförs som del av Temauppgift 1-3
⁃ Består av 3 delar. T.ex. Pythonuppgifter 1 = 1.1, 1.2, 1.3
⁃ Genomgång av nya programmeringskonstruktioner.
⁃ Övning inför duggan.
⁃ 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 Lisam
Begreppsseminarium⁃ Seminariegrupper: 3 par (6 personer)
Seminariegrupp A består av paren A1, A2 och A3.
45 minuter per seminariegrupp.
⁃ Format
Demonstration på dator
frågor/diskussion
max 12 min per par inklusive frågor
⁃ Komplettering
Missat seminarium kompletteras genom att spela in screencast som lämnas in via Lisam
Inlämningsuppgift i slutet av teman⁃ Uppgifter i diskret matematik: grundläggande notation och
begrepp
⁃ Reflektion kring temat.
Översikt, Tema 1-3
Föreläsning 1-3⁃ Föreläsning 1: Kontext. Vilka färdigheter behöver en
kognitionsvetare? Vad betyder det att programmera en dator? Vad är en dator?
⁃ Föreläsning 2: Programmeringsspråk, Python: operationer och funktioner, variabler och datatyper.
⁃ Föreläsning 3: Datorn som ett diskret system. Diskret matematik: mängder.
Datorn
Turing-maskinen (1936)⁃ Teoretisk beskrivning av en beräkningsmaskin / dator
⁃ Maskinens beståndsdelar:
Ett band med oändligt antal rutor som kan innehålla en symbol (eller vara tom)
Ett läs- och skrivhuvud som kan läsa och skriva symboler till/från bandet
En ändlig lista över tillstånd.
Ett tillståndsregister som lagrar maskinens aktuella tillstånd.
En ändlig uppsättning instruktioner som beskriver vad som ska göras givet maskinens tillstånd, samt aktuell symbol.
⁃ En instruktion beskriver
vad som ska göras med aktuell ruta (skriva/sudda)
om/hur huvudet ska flytta på sig
maskinens nya tillstånd efter
ENIAC - dator utan lagring av program (1945)
USArmyPhoto
von Neumann-arkitekturen (1945)⁃ En beskrivning av en fysisk arkitektur
⁃ Central processorenhet, Central Processing Unit: styrenhet & aritmetisk-logisk enhet
⁃ Primärminne, Random Access Memory (RAM)
⁃ Input- och output-enhet
von Neumann-arkitekturen⁃ Data och program lagras i gemensamt minne
⁃ Instruktioner utförs sekventiellt, en instruktion i taget
⁃ En operand ("en styck data") bearbetas åt gången
von Neumann-arkitekturen⁃ Gemensam lagring av program och data
Ett program kan skriva data som sedan används som program
Vi kan skapa program som hjälper oss skapa mer avancerade program!
⁃ Sekventiell exekvering: förutsägbarhet när program körs
Några exempel särskilt stora och små datorer
IBM System/360 Modell 91 på Goddard Space Flight Center slutet på 1960-talet
ByUnknown-NASA,PublicDomain,h:ps://commons.wikimedia.org/w/index.php?curid=931293
SIM-kort (JavaCard)
h:ps://www.oracle.com/technetwork/java/embedded/javacard/documentaLon/smartcards-136372.html
Program
Program⁃ samling instruktioner som utför en specifik uppgift när de
körs på en dator
Typer av program⁃ Systemprogram/Plattform
Program som systemprogram som hanterar datorns resurser; hur tillämpningsprogram kan/får använda dem.
Exempel: Operativsystem
⁃ Tillämpningsprogram/applikationer
Program som gör att datorn kan användas för en specifik tillämpning av användaren (utöver att bara "fungera")
Exempel: ordbehandlingsprogram, webbläsare
Operativsystem⁃ Syfte (bl.a.)
Gränssnitt mellan hårdvara och andra program
Gränssnitt mellan program och användare
⁃ Består av flera komponenter
⁃ Exempel på komponenter
processhantering
filsystem
⁃ Exempel på operativsystem
Windows, macOS, Linux, Solaris
ThinLinchttps://www.ida.liu.se/local/students/remote/index.sv.shtml
Terminalen som gränssnitt
Varför använda ett textbaserat gränssnitt⁃ Syfte: miljö för att utveckla och köra egna program
⁃ Enklare (färre rörliga delar):
Output: text (en rad/tecken i taget)
Input: textkommandon
⁃ Kraftfullt
⁃ Jämfört med grafiskt gränssnitt:
Output: fönster med olika interaktiva grafiska komponenter
Input: musposition, musklick, tangenttryckningar, objekt som dras och släpps m.m.
"Terminalen"⁃ Terminalprogrammet tillhandahåller funktionalitet för
program att visa text och ta emot tangentbordstryck från användaren.
⁃ Terminalprogrammet kör ett skalprogram: bash (Bourne Again SHell) som tillhandahåller ett interaktivt gränssnitt för att köra kommandon
⁃ Prompt: sekvens av tecken som visar att skalet är redo att ta emot ett kommando.
⁃ Tecknet $ används ofta för att representera prompten.
"Skriva kommandon"⁃ I terminalen kan man köra inbyggda kommandon,
kompilerade program och skript
⁃ Ingen skillnad på kommandon, program och skript till "utseendet"
⁃ Både kommandon och program körs genom att rätt ord skrivs i prompten
⁃ Jämförelse med grafiskt gränssnitt: "i gränssnittet kan du klicka på knappar, program och skript"
⁃ I kursen kommer ordet "kommando" att användas för att referera till alla varianter
Argument⁃ De flesta kommandon tar emot argument
⁃ Som användare använder vi argument för att styra ett programs beteende
⁃ Syntax för kommando + argument:
$ kommando argument1 argument2
Sökväg⁃ Beskrivning av en plats i filsystemet
⁃ Filsystem: består av kataloger och filer
Kataloger kan innehålla kataloger och filer
Filer innehåller data
⁃ Tecknet / används som skiljetecken mellan namnet på en katalog och kataloger eller filer som ligger i den
Filsystemets trädstruktur⁃ katalog1
⁃ katalog1/katalog1_1
⁃ katalog1/katalog1_1/fil4
⁃ katalog2/hejsan/hoppsan/fallerallera
Rot-, arbets- föräldra- och hemkatalog⁃ Toppen av filträdet, "roten": /
⁃ Aktuell katalog (arbetskatalog): ./
⁃ Föräldrakatalog: ../
⁃ Din användares hemkatalog: /home/<liuid>
/home/jodfo01
Absoluta och relativa sökvägar⁃ Absolut sökväg har med roten
/courses/729G46/kursmaterial/temauppg1
/home/jodfo01/katalog1/fil1
/home/jodfo01/katalog1/katalog2/fil2
/home/jodfo01/katalog1/katalog3/fil3
⁃ Relativ sökväg har inte med roten och utgår från aktuell arbetskatalog (katalogen man står i)
kursmaterial/temauppg1
katalog1/fil1
../katalog3/fil3
Exempel på kommandon⁃ echo: skriver ut dess argument
⁃ ls: visar innehåll i katalog
⁃ cd: byter katalog
⁃ mv: flytta fil eller katalog
⁃ mkdir: skapa katalog
⁃ cat: skriv ut innehåll i fil
⁃ touch: skapa ny fil/uppdatera senast ändrad hos existerande fil
⁃ man: hjälptext för kommando