DD1361 Programmeringsparadigm Föreläsning 1: Intro

Relevanta dokument
DD1361 Programmeringsparadigm Föreläsning 1: Intro

Imperativ programmering

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Föreläsning 1: Intro till kursen och programmering

TDIU01 (725G67) - Programmering i C++, grundkurs

Introduktion till programmering. Programspråk och paradigmer

Föreläsning 1: Intro till kursen och programmering

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006

Program & programmering

Programmeringsteknik I

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Deklarativt programmeringsparadigm

TDDC77 Objektorienterad Programmering

Kursanalys. Douglas Wikström 15 juni Problemlösning och programmering under press (DD2458) Högskolepoäng (hp): 9 Kursen gavs: Period 1-2, 2008

SF1513 (tidigare DN1212) Numeriska metoder och grundläggande programmering. för Bio3, 9 hp (högskolepoäng)

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Föreläsning 2. Operativsystem och programmering

Software Technology. Josef Svenningsson

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Tenta i Grundläggande programmering DD klockan

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Föreläsning 1 Programmeringsteknik och C DD1316. Kurswebbsidan. Mål

OOP Objekt-orienterad programmering

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Formulär för kursansvarig. Kursanalysen utförs under kursens gång. Nomenklatur: F föreläsning, Ö övning, R räknestuga, L laboration, S seminarium)

729G06 Föreläsning 1 Objektorienterad programmering

Design och konstruktion av grafiska gränssnitt

Föreläsning 1 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Grundkurs i programmering - intro

Introduktion till programmering och Python Grundkurs i programmering med Python

Datavetenskapligt program, 180 högskolepoäng

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering

Innehålls förteckning

DD1390 prosam12 för årskurs 2

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Kursinformation Grundkurs i programmering med Python

Programmeringsteknik II

Design och konstruktion av grafiska gränssnitt

Objektorienterad Programmering (TDDC77)

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Outline. Objektorienterad Programmering (TDDC77) Kursinfo. Outline. Hemsida. Organization. Ahmed Rezine Examination. Webreg.

Välkomna till kursen i grundläggande programmering DVGA08, ISGA04

DD1361 Programmeringsparadigm. Carina Edlund

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Civilingenjörsutbildning i datateknik Degree Programme in Computer Science and Engineering 300,0 högskolepoäng

Programmering, grundkurs

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Deklarativ programmering

Deklarativ programmering

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Imperativ programmering. Föreläsning 2

1. Enkätsvar: Kursinformationen via webben och Bilda fungerade bra. 1=Instämmer inte 2=Knappast 3=Instämmer 4=Instämmer helt Besvarad av 18 personer

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Objektorienterad programmering

KURSPROGRAM MODELLERING AV DYNAMISKA SYSTEM, 5hp, period 4

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Kursinformation Tets 37 HT -2013

DD Antal respondenter: 198 Antal svar: 88 Svarsfrekvens: 44,44 % ESTIMATED WORKLOAD

Utbildningsplan för Datavetenskapligt program, 180 högskolepoäng

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

Studiehandledning S0001M Matematisk statistik Läsperiod 4, VT 2017

Matematik I - höstermin Anu Kokkarinen Kurskoordinator

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Objektorienterad Programkonstruktion. Föreläsning 1 2 nov 2015

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Objektorienterad Programkonstruktion. Föreläsning 1 1 nov 2016

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Studiehandledning S0001M Matematisk statistik Läsperiod 2, Ht 2013

Thomas Padron-Mccarthy Mobila applikationer med Android, 7.5 hp (Distans) (DT107G ) Antal svarande = 11. Svarsfrekvens i procent = 14.

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

EDAA01 Programmeringsteknik - fördjupningskurs

Inlämningsuppgifter, EDAF30, 2015

Kursinformation, TNIU19 Matematisk grundkurs fo r byggnadsingenjo rer, 6 hp

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Grundläggande Datalogi

Programvaruteknik, hp

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Imperativ programmering. Föreläsning 4

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Transkript:

DD1361 Programmeringsparadigm Föreläsning 1: Intro Per Austrin KTH 2016-08-30 https://www.kth.se/social/course/dd1361/

Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc)

Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc)

Färgfråga Vilket eller vilka av följande är inte ett programmeringsspråk? Röd Java Gul Pseudokod Blå L A TEX Turkos: Python Vit: HTML

Programmeringsparadigm?

Programmering:... Programmeringsparadigm?

Programmering:... Programmeringsparadigm? Paradigm: mönster (lingvistik) världsbild (vetenskapsteori)

Programmering:... Programmeringsparadigm? Paradigm: mönster (lingvistik) världsbild (vetenskapsteori) Programmeringsparadigm: konceptuellt sätt att se på hur man beskriver ett program

Exempel 1: Imperativ programmering Gör först A, sedan B, sedan C, etc...

Exempel 1: Imperativ programmering Gör först A, sedan B, sedan C, etc... T.ex. A: read integer n B: set m = n*n C: print m D:...

Ex. 2: Objektorienterad programmering Klasser A, B, C, etc som har data och metoder

Ex. 2: Objektorienterad programmering Klasser A, B, C, etc som har data och metoder class A { function read() {... } } class B { function square() {... } } class C { function print() {... } }

Exempel 3: Deskriptiv programmering Beskriv vad programmet ska göra

Exempel 3: Deskriptiv programmering Beskriv vad programmet ska göra skriv ut kortaste vägen från F2 till kårhuset, spela sedan en trudelutt

Färgfråga Jag har lurats lite. Om vad? Röd Deskriptiv programmering är inte en paradigm Gul Objektorienterad programmering är också imperativ Blå Deskriptiv programmering finns inte Turkos: Alla ovanstående Vit: Kuggfråga! Per har inte alls lurats

Programmeringsparadigm! (?) Programmeringsparadigm: konceptuellt sätt att se på hur man beskriver ett program

Programmeringsparadigm! (?) Programmeringsparadigm: konceptuellt sätt att se på hur man beskriver ett program att beskriva ett program att programmera

Programmeringsparadigm! (?) Programmeringsparadigm: konceptuellt sätt att se på hur man beskriver ett program En programmeringsparadigm är en uppsättning programmeringskoncept. Exempel på koncept: trådar / parallelism objekt (á la objektorientering) Ett programmeringsspråk som har alla paradigmens koncept tillhör paradigmen

c Peter Van Roy

c Peter Van Roy Imperativ programmering = {data, funktioner, tillsta nd}

Viktigt koncept: tillstånd Imperativ programmering: programmet har ett tillstånd (state), och programmet har instruktioner för hur tillståndet ska manipuleras steg för steg för att nå slutresultatet

Viktigt koncept: tillstånd Imperativ programmering: programmet har ett tillstånd (state), och programmet har instruktioner för hur tillståndet ska manipuleras steg för steg för att nå slutresultatet Alla språk ni hittills stött på i kurser här på KTH har varit imperativa (Java, Go, assembler(?))

Viktigt koncept: tillstånd Imperativ programmering: programmet har ett tillstånd (state), och programmet har instruktioner för hur tillståndet ska manipuleras steg för steg för att nå slutresultatet Alla språk ni hittills stött på i kurser här på KTH har varit imperativa (Java, Go, assembler(?)) Motsats: Deklarativ programmering: koden definierar vad slutresultatet ska vara, inte hur det ska uppnås

Viktigt koncept: tillstånd Imperativ programmering: programmet har ett tillstånd (state), och programmet har instruktioner för hur tillståndet ska manipuleras steg för steg för att nå slutresultatet Alla språk ni hittills stött på i kurser här på KTH har varit imperativa (Java, Go, assembler(?)) Motsats: Deklarativ programmering: koden definierar vad slutresultatet ska vara, inte hur det ska uppnås T.ex. deskriptiv programmering (om det hade funnits)

Viktigt koncept: tillstånd I imperativ programmering finns det variabler som utgör programmets tillstånd (tillsammans med implicita variabler som instruktionspekare och dylikt)

Viktigt koncept: tillstånd I imperativ programmering finns det variabler som utgör programmets tillstånd (tillsammans med implicita variabler som instruktionspekare och dylikt) Programmets instruktioner ändrar variablerna och påverkar därmed programmets tillstånd. Instruktionerna har sido-effekter

Viktigt koncept: tillstånd I imperativ programmering finns det variabler som utgör programmets tillstånd (tillsammans med implicita variabler som instruktionspekare och dylikt) Programmets instruktioner ändrar variablerna och påverkar därmed programmets tillstånd. Instruktionerna har sido-effekter I deklarativ programmering definierar man vad saker är och de kan inte ändra värde. Instruktionerna har inga sido-effekter.

Viktigt koncept: tillstånd I imperativ programmering finns det variabler som utgör programmets tillstånd (tillsammans med implicita variabler som instruktionspekare och dylikt) Programmets instruktioner ändrar variablerna och påverkar därmed programmets tillstånd. Instruktionerna har sido-effekter I deklarativ programmering definierar man vad saker är och de kan inte ändra värde. Instruktionerna har inga sido-effekter. Fundamentalt annorlunda sätt att tänka på beräkningar än imperativ programmering!

Del 1 ( September): Funktionell programmering En typ av deklarativ programmering där resultaten av beräkningar beskrivs som värdet av (matematiska) funktioner

Del 1 ( September): Funktionell programmering En typ av deklarativ programmering där resultaten av beräkningar beskrivs som värdet av (matematiska) funktioner sort(l) = L if len(l) 1 merge(sort(firsthalf(l)), sort(secondhalf(l))) otherwise merge(l 1, L 2 ) = L 1 if length(l 2 ) = 0 L 2 if length(l 1 ) = 0 head(l 1 ) merge(tail(l 1 ), L 2 ) if head(l 1 ) head(l 2 ) head(l 2 ) merge(l 1, tail(l 2 )) if head(l 1 ) > head(l 2 ) sort([5, 12, 43, 1]) returnerar [1, 5, 12, 43]

Del 1 ( September): Funktionell programmering En typ av deklarativ programmering där resultaten av beräkningar beskrivs som värdet av (matematiska) funktioner (xkcd #1270) (xkcd #1312)

Del 2 ( Oktober): Logikprogrammering En typ av deklarativ programmering där resultateten av beräkningar specificeras i någon formell logik Vanligast: första ordningens predikatlogik

Del 2 ( Oktober): Logikprogrammering En typ av deklarativ programmering där resultateten av beräkningar specificeras i någon formell logik Vanligast: första ordningens predikatlogik Logik-kursen!

Del 2 ( Oktober): Logikprogrammering En typ av deklarativ programmering där resultateten av beräkningar specificeras i någon formell logik Vanligast: första ordningens predikatlogik Definiera ett predikat sort(l, S) som är sant om S är sorteringen av L. sort(l, S) = sorted(s) and permutation(l, S)

Del 2 ( Oktober): Logikprogrammering En typ av deklarativ programmering där resultateten av beräkningar specificeras i någon formell logik Vanligast: första ordningens predikatlogik Definiera ett predikat sort(l, S) som är sant om S är sorteringen av L. sort(l, S) = sorted(s) and permutation(l, S) sort([5, 12, 43, 1], S) = true Medför att S måste vara [1, 5, 12, 43]

Del 2 ( Oktober): Logikprogrammering En typ av deklarativ programmering där resultateten av beräkningar specificeras i någon formell logik Vanligast: första ordningens predikatlogik

Del 3 ( November): Formella språk En del av kursen kommer vi också ägna åt formella språk och syntaxanalys Teori och metoder för att tolka ( parsa ) t.ex. kod i något programmeringsspråk Första steget i att bygga en kompilator: hur skriver man ett program som avgör om en textfil är ett giltigt Java-program?

Andra viktiga paradigm Objektorienterad programmering Objekt, klasser, arv Parallellprogrammering Tråder, synkronisering, etc Distribuerade beräkningar Beräkningar på olika system (t.ex. cloud computing)

Färgfråga Finns det någon koppling mellan vilket/vilka programmeringsparadigm ett språk tillhör, och huruvida språket är ett högnivå-språk eller lågnivå-språk? Röd Nej, ingen koppling Gul Ja, språk som tillhör många paradigm tenderar att vara mer högnivåspråk Blå Ja, språk som tillhör många paradigm tenderar att vara mer lågnivåspråk Turkos: Ja, språk som är mer deklarativa tenderar att vara mer högnivåspråk Vit: Ja, språk som är mer deklarativa tenderar att vara mer lågnivåspråk

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran I slutändan ska programmet man skriver köras på samma hårdvara, oavsett vilket språk man skriver i.

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran I slutändan ska programmet man skriver köras på samma hårdvara, oavsett vilket språk man skriver i. Deklarativa språk gör det lättare att uttrycka komplexa beräkningar...

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran I slutändan ska programmet man skriver köras på samma hårdvara, oavsett vilket språk man skriver i. Deklarativa språk gör det lättare att uttrycka komplexa beräkningar......men det gör dem också svårare att översätta till maskinkod

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran I slutändan ska programmet man skriver köras på samma hårdvara, oavsett vilket språk man skriver i. Deklarativa språk gör det lättare att uttrycka komplexa beräkningar......men det gör dem också svårare att översätta till maskinkod Imperativa språk tenderar att ge snabbare program...

Olika paradigmer = Olika styrkor Tumregel: ju mer deklarativt ett språk är, desto längre från hårdvaran I slutändan ska programmet man skriver köras på samma hårdvara, oavsett vilket språk man skriver i. Deklarativa språk gör det lättare att uttrycka komplexa beräkningar......men det gör dem också svårare att översätta till maskinkod Imperativa språk tenderar att ge snabbare program......men kan kräva 10x mer kod

c Peter Van Roy

c Peter Van Roy Vad vi kommer pyssla med i period 1

Vad ska nu detta vara bra för?

Vad ska nu detta vara bra för? It is essential for anyone who wants to be considered a professional in the areas of software to know several languages and several programming paradigms. Bjarne Stroustrup (Skaparen av C++)

Vad ska nu detta vara bra för? Rätt verktyg för rätt projekt olika språk och paradigm är bra på olika saker

Vad ska nu detta vara bra för? Rätt verktyg för rätt projekt olika språk och paradigm är bra på olika saker Bättre förståelse för programmering och algoritmik genom att få flera perspektiv på hur man kan tänka på programmering

Vad ska nu detta vara bra för? Rätt verktyg för rätt projekt olika språk och paradigm är bra på olika saker Bättre förståelse för programmering och algoritmik genom att få flera perspektiv på hur man kan tänka på programmering Ni är här (= på datateknik på KTH) för att bli dataloger, inte för att lära er skriva enkla program i <populärast språk just nu>

Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc)

La rarna Marcus Dicander: funktionell programmering i Haskell

La rarna Marcus Dicander: funktionell programmering i Haskell Dilian Gurov: logik-programmering i Prolog

La rarna Marcus Dicander: funktionell programmering i Haskell Dilian Gurov: logik-programmering i Prolog Alexander Baltatzis: internet-programmering

La rarna Marcus Dicander: funktionell programmering i Haskell Dilian Gurov: logik-programmering i Prolog Alexander Baltatzis: internet-programmering Per Austrin syntaxanalys + kursledare

Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc)

Registrering Registrera er på kursen! Registrering i personliga menyn i KTH Social (för KTH-studenter)

Registrering Registrera er på kursen! Registrering i personliga menyn i KTH Social (för KTH-studenter) Registrera er i Kattis-systemet: https://kth.kattis.com/courses/dd1361/progp16 Logga in i systemet, klicka att ni går kursen (Detta står under Före kursstart på kurshemsidan.)

Kursrepresentanter?

Kurshemsida och KTH Social Kurshemsida på KTH Social: https://www.kth.se/social/course/dd1361

Kurshemsida och KTH Social Kurshemsida på KTH Social: https://www.kth.se/social/course/dd1361 För (nästan) alla typer av frågor, använd KTH Social Frågor om labbarna Jakt på labbpartner Etc...

Kurshemsida och KTH Social Kurshemsida på KTH Social: https://www.kth.se/social/course/dd1361 För (nästan) alla typer av frågor, använd KTH Social Frågor om labbarna Jakt på labbpartner Etc... Undantag: Personliga frågor (t.ex. om era labbresultat inte rapporterats in) För dessa: använd kursmailen progp-16@csc.kth.se

Kursöversikt 7.5 hp (dvs 200 timmar av ditt liv) Två Ladok-moment:

Kursöversikt 7.5 hp (dvs 200 timmar av ditt liv) Två Ladok-moment: Laborationer: 4.5 hp Labbar

Kursöversikt 7.5 hp (dvs 200 timmar av ditt liv) Två Ladok-moment: Laborationer: 4.5 hp Labbar Tenta: 3 hp KS / Tenta

Kursdelar Funktionell programmering i Haskell Logik-programmering i Prolog Syntaxanalys Internet-programmering Extralabbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog Syntaxanalys Internet-programmering Extralabbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys Internet-programmering Extralabbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering Extralabbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering 1 obligatorisk labb Extralabbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering 1 obligatorisk labb Extralabbar 2 betygshöjande labbar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering 1 obligatorisk labb Extralabbar 2 betygshöjande labbar Totalt: 7 obligatoriska labbar 6 betygshöjande labbar 3 kontrollskrivningar Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering 1 obligatorisk labb Extralabbar 2 betygshöjande labbar PERIOD 1 Labbar KS / Tenta

Kursdelar Funktionell programmering i Haskell 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Logik-programmering i Prolog 2 obligatoriska labbar 1 betygshöjande labb Kontrollskrivning / Tenta Syntaxanalys 2 obligatoriska labbar 2 betygshöjande labbar Kontrollskrivning / Tenta Internet-programmering 1 obligatorisk labb Extralabbar 2 betygshöjande labbar PERIOD 2 Labbar KS / Tenta

7 obligatoriska labbar Labbarna varje obligatorisk labb har ett bonusdatum : lämnar man in labben innan bonusdatum får man ett bonuspoäng till KS / Tenta Obligatoriska Labbar KS / Tenta

7 obligatoriska labbar Labbarna varje obligatorisk labb har ett bonusdatum : lämnar man in labben innan bonusdatum får man ett bonuspoäng till KS / Tenta Obligatoriska Labbar 6 betygshöjande labbar antal betygshöjande labbar man gör avgör betyget Betygshöj. KS / Tenta

7 obligatoriska labbar Labbarna varje obligatorisk labb har ett bonusdatum : lämnar man in labben innan bonusdatum får man ett bonuspoäng till KS / Tenta Obligatoriska Labbar 6 betygshöjande labbar antal betygshöjande labbar man gör avgör betyget Arbeta helst två och två (arbeta själv också tillåtet) Skriv ut labbkvitto från hemsidan Betygshöj. KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git Labbar KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git Om ni inte använt Git förut kommer det antagligen kännas överväldigande i början. Labbar (xkcd #1597) KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git Om ni inte använt Git förut kommer det antagligen kännas överväldigande i början. Det går över! Labbar (xkcd #1597) KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git Om ni inte använt Git förut kommer det antagligen kännas överväldigande i början. Det går över! Labbar Skapa konto på KTH Git: https://gits-15.sys.kth.se (genom att logga in med ert KTH Id) Studera sidan Inlämning av labbar via Git på kurshemsidan. KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git För er som använt Git i annan kurs (t.ex. INDA) eller i annat sammanhang. Labbar KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git För er som använt Git i annan kurs (t.ex. INDA) eller i annat sammanhang. Ni ska arbeta på ett specifikt sätt i den här kursen: 1. Ni får ett repo konstruerat åt er, men ni ska inte arbeta direkt i detta! 2. Istället ska ni skapa en egen fork av detta repo som ni arbetar i. OBS! Ej i en branch! 3. Labblösning lämnas sedan in som en pull request till det ursprungliga repot. Studera sidan Inlämning av labbar via Git på kurshemsidan, även om du är van Git-användare, Labbar KS / Tenta

Labbarna: Git Vi arbetar med labbarna i versionshanteringssystemet Git Det här är första året vi använder Git i den här kursen. Vi har därför inte fått in rutinerna för det än, och speciellt i början av kursen kommer det säkert hända ibland att något inte riktigt funkar, eller kunde funka bättre. Labbar Hoppas ni har överseende och tålamod med detta! Synpunkter och förslag på förbättringar? Hör av er! (Det gäller naturligtvis hela kursen, men extra mycket för Git...) KS / Tenta

Labbarna: Kattis De flesta labbarna rättas i systemet Kattis: (https://kth.kattis.com/) Labbar KS / Tenta

Labbarna: Kattis De flesta labbarna rättas i systemet Kattis: (https://kth.kattis.com/) 1. Ni skickar in er kod till Kattis 2. Kattis testkör er kod på en bunt (hemliga) testfall 3. Kattis talar om ifall er kod är godkänd, om den var för långsam, om den kraschade, om den gjorde fel... 4. När ni blivit godkända på labben i Kattis lämnar ni in via git Labbar KS / Tenta

Labbarna: Kattis De flesta labbarna rättas i systemet Kattis: (https://kth.kattis.com/) 1. Ni skickar in er kod till Kattis 2. Kattis testkör er kod på en bunt (hemliga) testfall 3. Kattis talar om ifall er kod är godkänd, om den var för långsam, om den kraschade, om den gjorde fel... 4. När ni blivit godkända på labben i Kattis lämnar ni in via git Kattis är väldigt snål med information om vad ni har för fel! Det är ert jobb att hitta detta! Labbar KS / Tenta

Dokumentations-krav 1. Det ska vara tydligt dokumenterat i kommentar högst upp i koden vilka som har skrivit koden. Detta gäller alla inskickningar ni gör till Kattis, och är inte något ni kan lägga till i slutet när ni väl fått er kod att bli godkänd av Kattis. 2. Själva koden ska vara ordentligt kommenterad. Syftet med olika funktioner/predikat som ni definierar ska förklaras. (Detta kan, till skillnad från punkt 1, däremot läggas till i efterhand när ni väl fått koden att fungera, som förberedelse för redovisning.)

Hederskodex Alla kurser på CSC följer skolans hederskodex http://www.kth.se/csc/student/hederskodex Ge inte era lösningar till era medstudenter, Anger vilka källor ni tagit hjälp av, Gör inte era medstudenters jobb åt dem, etc...

KS / Tenta KS/Tenta på kursdelarna funktionell programmering, logikprogrammering, och syntaxanalys Labbar KS / Tenta

KS / Tenta KS/Tenta på kursdelarna funktionell programmering, logikprogrammering, och syntaxanalys KS: 20 sep: Funktionell programmering 13 okt: Logikprogrammering 24 nov: Syntaxanalys Labbar KS / Tenta

KS / Tenta KS/Tenta på kursdelarna funktionell programmering, logikprogrammering, och syntaxanalys KS: 20 sep: Funktionell programmering 13 okt: Logikprogrammering 24 nov: Syntaxanalys 13 jan: Tenta! Labbar KS / Tenta

KS / Tenta KS/Tenta på kursdelarna funktionell programmering, logikprogrammering, och syntaxanalys KS: 20 sep: Funktionell programmering 13 okt: Logikprogrammering 24 nov: Syntaxanalys 13 jan: Tenta! Klarat en KS behöver inte göra den delen på tentan Labbar KS / Tenta

KS / Tenta KS/Tenta på kursdelarna funktionell programmering, logikprogrammering, och syntaxanalys KS: 20 sep: Funktionell programmering 13 okt: Logikprogrammering 24 nov: Syntaxanalys 13 jan: Tenta! Klarat en KS behöver inte göra den delen på tentan Klarat alla tre KS behöver inte skriva tentan alls Labbar KS / Tenta

Bonuspoäng De bonuspoäng ni får (upp till 7 stycken om ni gör alla de obligatoriska labbarna innan deadline) används på KS / Tenta:

Bonuspoäng De bonuspoäng ni får (upp till 7 stycken om ni gör alla de obligatoriska labbarna innan deadline) används på KS / Tenta: Bonuspoäng från logikprogrammering, funktionell programmering, och syntaxanalys ger bonuspoäng på respektive KS (ej på tentan!)

Bonuspoäng De bonuspoäng ni får (upp till 7 stycken om ni gör alla de obligatoriska labbarna innan deadline) används på KS / Tenta: Bonuspoäng från logikprogrammering, funktionell programmering, och syntaxanalys ger bonuspoäng på respektive KS (ej på tentan!) Bonuspoäng från Inet-labben ger bonuspoäng på tentan (ej på omtentan!)

Betyg Krav för godkänt: Alla 7 obligatoriska labbarna godkända Tenta godkänd

Betyg Krav för godkänt: Alla 7 obligatoriska labbarna godkända Tenta godkänd Betyg: #Betygshöjande labbar 0 1 2 3 4 5 6 Betyg E E D C B A A (Om kravet för godkänt uppnått. För betyg A krävs dessutom att vissa specifika betygshöjande labbar gjorda)

Avslutningsvis... Den här terminen för CDATE-programmet är TUNG. Försök komma igång med den här kursen (och era andra kurser) snarast! Ni kommer tacka er själva efteråt... För progp: 1. Läs sidan Komma igång 2. Testa inlämningssystemet via git (se sidan Inlämning av labbar via Git under Laborationer på kurshemsidan) 3. Kom igång med första labben (F1): öppna labb-kompendiet, läs instruktionerna och uppgiften, testa att skicka in kod-skelettet till Kattis.

Frågor?