Introduktion till Datalogi DD1339 Föreläsning 1 8 sept 2014
Kontaktuppgifter & Info: Kurskod: DD1339, 19hp Kursomgång: inda14 Kursansvarig: Christian Smith, ccs@kth.se Michael Minock, minock@kth.se Dilian Gurov, dilian@csc.kth.se Hemsida: http://www.csc.kth.se/utbildning/kth/kurser/dd1339 https://www.kth.se/social/course/dd1339/ Kursanmälan: https://rapp.csc.kth.se/rapp
Kursbeskrivning (Studiehandboken) Kursens huvudsakliga innehåll: Operativsystem och speciellt Unix, skolans datorsystem, en dators uppbyggnad, texteditering, grundläggande HTML och LaTeX. Programmering: Teori och praktisk övning rörande alla aspekter av grundläggande programmering och programutveckling. Programspråken Java och Go används. Grundläggande datastrukturer: Listor, stackar, köer, prioritetsköer, mängder, hashtabeller, träd och grafer. Grundläggande algoritmer: Sökning, sortering, trädalgoritmer samt ytterligare några typer av algoritmer. Introduktion till algoritmanalys. https://www.kth.se/student/kurser/kurs/dd1339
Kursbeskrivning (Studiehandboken) Kursens huvudsakliga innehåll: Operativsystem och speciellt Unix, skolans datorsystem, en dators uppbyggnad, texteditering, grundläggande HTML och LaTeX. Programmering: Teori och praktisk övning rörande alla aspekter av grundläggande programmering och programutveckling. Programspråken Java och Go används. Grundläggande datastrukturer: Listor, stackar, köer, prioritetsköer, mängder, hashtabeller, träd och grafer. Grundläggande algoritmer: Sökning, sortering, trädalgoritmer samt ytterligare några typer av algoritmer. Introduktion till algoritmanalys. https://www.kth.se/student/kurser/kurs/dd1339
Kursbeskrivning (Studiehandboken) Kursens huvudsakliga innehåll: Operativsystem och speciellt Unix, skolans datorsystem, en dators uppbyggnad, texteditering, grundläggande HTML och LaTeX. Programmering: Teori och praktisk övning rörande alla aspekter av grundläggande programmering och programutveckling. Programspråken Java och Go används. Grundläggande datastrukturer: Listor, stackar, köer, prioritetsköer, mängder, hashtabeller, träd och grafer. Grundläggande algoritmer: Sökning, sortering, trädalgoritmer samt ytterligare några typer av algoritmer. Introduktion till algoritmanalys. https://www.kth.se/student/kurser/kurs/dd1339
Kursbeskrivning (Studiehandboken) Kursens huvudsakliga innehåll: Operativsystem och speciellt Unix, skolans datorsystem, en dators uppbyggnad, texteditering, grundläggande HTML och LaTeX. Programmering: Teori och praktisk övning rörande alla aspekter av grundläggande programmering och programutveckling. Programspråken Java och Go används. Grundläggande datastrukturer: Listor, stackar, köer, prioritetsköer, mängder, hashtabeller, träd och grafer. Grundläggande algoritmer: Sökning, sortering, trädalgoritmer samt ytterligare några typer av algoritmer. Introduktion till algoritmanalys. https://www.kth.se/student/kurser/kurs/dd1339
Lärandemål (Studiehandboken) Efter fullgjord kurs ska kursdeltagare kunna: använda vanligt förekommande datorverktyg och då speciellt datormiljöerna på D designa och implementera enkla sekventiella och parallella program lösa problem med hjälp av programmering analysera, välja, använda och implementera grundläggande algoritmer och datastrukturer delta i professionell programmeringsverksamhet och känna till programmerarens olika roller och uppgifter i syfte att: effektivt utnyttja datorer i sina fortsatta studier och i arbetslivet hitta och använda rätt teknik för ett givet problem, gå fortsättningskurser inom datalogi och numerisk analys.
Examination Kursen examineras med hemuppgifter och projekt som redovisas skriftligt och muntligt i samband med de obligatoriska övningarna. Kursen omfattar 19 hp: 1,5 hp för datorintroduktionen, LAB1 6 hp för höstens hemuppgifter, HEM1 5,5 + 3 hp för vårens hemuppgifter, HEM2, HEM3 3 hp för projektet i slutet av kursen, PRO1
Examination Slutbetyget på kursen baseras på betygen på hemuppgifterna (HEM1 och HEM2). Övriga delmoment betygsätts enbart med godkänt/underkänt. Slutbetyget på kursen beräknas enligt följande tabell (medelvärde avrundat uppåt): Höstbetyg A B C D E Vår betyg A A A B B C B A B B C C C B B C D D E C C D D E
Kursupplägg HT14 Föreläsningar (7+6) x 2 h (2 x 45 min) tar upp teori, principer, terminologi Övningar (6+6) x 2h Genomgång av hemuppgifter Labbar 13 x 2h Praktisk hjälp med programmeringsuppgifter
Hemuppgifter 11+1 uppgifter, utförs enskilt Redovisas skriftligt och muntligt på övningar Antalet godkända uppgifter sätter betyget på denna kursdel: 12 poäng ger betyget A 11 poäng ger betyget B 10 poäng ger betyget C 9 poäng ger betyget D 8 poäng ger betyget E
Programmeringsparadigm Lågnivåspråk: Maskinkod (binärkod) Instruktioner som kan utföras direkt av processorn Exempel: b0 61 // Lagrar värdet 97 i AL-registret Assembler (50-talet) Nära maskinkod, men lättare för människor att läsa Exempel: MOV EAX, EBX register EAX // lagrar värdet från register EBX i
Programmeringsparadigm Procedurella språk (sent 60-tal, 70-tal) Kommandon kan packas i procedurer, man skriver hur man vill att maskinens tillstånd skall ändras. Programmet kompileras till maskinkod innan det kan köras. Exempel: Fortran, Cobol, (Python), C float mean(float a, float b){ return (a + b)/2; } int main(){ float c; c = mean(17, 55.3); }
Programmeringsparadigm Funktionella Språk (70-tal) Program uttrycks som matematiska funktioner som ska utvärderas Exempel: Scheme, Haskell, (Python), Common Lisp: (defun mean (A B) "Compute the mean of A and B." (/ (+ A B) 2)) (mean 17 55.3)
Programmeringsparadigm Objektorienterade språk (70-tal) Programdelar kapslas in i objekt, som innehåller datafält och metoder som verkar på objekten Exempel: Simula67, SmallTalk, C++, (Python), Java: public class 2DVector{ private double x = 17; private double y = 55.3; public double getmean(){ return (x+y)/2; } }... My2DVector = new 2DVector(); double mean = my2dvector.getmean();
Objektorientering Motiverat av allt mer komplexa programmeringsprojekt. Programkomponenter lagras i objekt. Hur dessa ser ut inuti döljs från resten av programmet. Man kan interagera med objekt med hjälp av publika metoder. Underlättar modulär design, och utbytbara programkomponenter. Exempel: Ett objekt kan inehålla en bild, och som programmerare behöver man inte veta vilket format bilden är lagrad i för att kunna skala om den till en annan storlek, utan man anropar bara t.ex: minbild.getscaledinstance(width, height, hints)
Terminologi Mallar för hur objekt ska skapas kallas klasser Man säger att objekt är instanser av klasser Ex: objektet ZGF 123 är en instans av klassen Bil Klasser (och Objekt) har fält som rymmer data (egenskaper), och metoder som kan anropas för att utföra något. Ex: Klassen Rektangel har - fälten: höjd, bredd - metoderna: yta, omkrets, ändra storlek, inre punkt
Terminologi Vi hänvisar till fält i ett objekt med punktnotation: Ex: myrectangle.height Ett fält i ett objekt, kan i sig vara ett objekt, då kan vi skriva längre uttryck för att hänvisa till något. Ex: myrectangle.height.unit Metoder anropas på liknande vis, men tar (eventuellt tomma) argument också: Ex: myrectangle.setheight(10)
http://www.csc.kth.se/utbildning/kth/kurser/dd1339