Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17 Bakgrund och kursmål Kursens mål är att ge kunskaper inom funktionell programmering, fördjupade kunskaper inom objektorienterad programmering samt att ge förståelse för fördelar och nackdelar med respektive programmeringsparadigm. Efter kursen ska studenten Ha kunskap om och färdigheter i funktionella språk Fördjupade kunskaper i objektorienterad programmering Utifrån ett givet problem välja lämplig programmeringsparadigm för implementeringen Studenten ska också ha fördjupat sig inom några aktuella ämnen rörande Funktionella språk Parallell programmering Felhantering och robusta system Första delen av kursen omfattar grunderna i Erlang såsom sekventiell och parallell programmering för att utveckla robusta program. Felhantering av processer, process design patterns, högre ordnings funktioner, databaser samt genomgång av goda och dåliga programmering praxis ingår i första delen av kursen. Andra delen av kursen är en fördjupning i objektorienterade språk och tar bl.a. upp objektorienterade designmönster och en fördjupning om parallell programmering. Komplett och aktuell kursplan finns på studentwebben, http://www.kth.se/student/kurser/sokkurs. Lärare Lärare: Robert Virding, Erlang Solutions (momentet LAB1, funktionell programmering och Erlang) Anders Lindström, anders.lindstrom@sth.kth.se (momentet RED 1, kursansvarig) Ibrahim Orhan, ibrahim.orhan@sth.kth.se (examinator) Anders Lindström 1 KTH STH, Campus Haninge
Förkunskapskrav Kunskaper i objektorienterad programmering t.ex. motsvarande kursen HI1027 Objektorienterad programmering. Kursmaterial Litteratur ERLANG Programming, A Concurrent Approach to Software Development av Francesco Cesarini, Simon Thompson ISBN: 9780596518189 av Ulf Bilting ISBN: 9789144076089 Programvara Funktionell programmering, Erlang Kompilator Erlang OTP: https://www.erlang-solutions.com/resources/download.html Editor Välj mellan Eclipse eller Emacs Eclipse Eclipse: http://www.eclipse.org/ Installera editorstöd till Eclipse: http://erlide.org/#installation Emacs Emacs: http://www.gnu.org/software/emacs/emacs.html Installera editorstöd till Emacs: http://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html How-to installationsguide för Erlang och Emacs: http://www.youtube.com/watch?v=xp0-oeuycte Notera att övningarna i Erlang börjar redan vid första tillfället och att du bör ha en fungerande miljö på din dator innan dess. Ladda ner och installera kompilatorn till Erlang samt editorn. Läraren rekommenderar editorn Emacs men det går också att använda Eclipse om man så önskar. Objektorienterad programmering I den objektorienterade delen av kursen används språket Java och utvecklingsmiljön Eclipse eller Netbeans. Anders Lindström 2 KTH STH, Campus Haninge
Examination LAB1, 4,5 hp Obligatoriska inlämningsuppgifter och laborationer i ett funktionellt språk. Momentet examineras genom ett antal obligatoriska inlämningsuppgifter, som redovisas vid 2 schemalagda tillfällen, samt 1 större programmeringslaboration. Betygsskalan är A-F och det graderade betyget baseras på inlämnings- och laborationsuppgifterna. Inlämningsuppgift 1 och 2 kan vardera ge 1-2 poäng, programmeringslaborationen kan ge 2-4 poäng. För högre poäng krävs att uppgiften redovisas vid ordinarie redovisningstillfälle. Förutsatt att alla uppgifter är godkända ges betyg enligt nedan. Poäng Betyg 4 E 5 D 6 C 7 B 8 A RED1, 3,0 hp Laborationsuppgifter i objektorienterad programmering samt en rapport. Momentet examineras genom 2 programmeringslaborationer samt en rapport. Rapporten skrivs i form av en kortare vetenskaplig rapport kring något ämne som ansluter till kursen. Betygsskalan är A-F och det graderade betyget baseras på laborationsuppgifterna. Laborationsuppgift 1 och 2 kan ge vardera 1-2 poäng. För högre poäng krävs att uppgiften redovisas vid ordinarie redovisningstillfälle. Förutsatt att programmeringsuppgifter och short paper är godkända ges betyg enligt nedan. Poäng Betyg 2 E 3 C 4 A Slutbetyg Slutbetyget är ett viktat medelvärde av betygen på LAB1 och RED1. Anders Lindström 3 KTH STH, Campus Haninge
Detaljplanering Funktionell programmering, Erlang (Robert) Varje pass (4 h) består av 3 h föreläsning följt av 1 h övning. Föreläsningsdelen inleds med att någon/några tidigare givna övningsuppgifter tas upp och diskuteras. Objektorienterad programmering Föreläsning och övning enligt schemat. Den första övningen tar upp något enkelt exempel på parallell programmering, i övrigt är övningarna till för eget arbete och frågor. Föreläsningar och övningar F1+Ö1 19/1 Erlang (Robert) Background to Erlang; Sequential Erlang. Kapitel 1,2,3 F2+Ö2 25/1 Erlang (Robert) Erlang concurrency; Concurrency design patterns; Process error handling. Kapitel 4,5,6 F3+Ö3 1/2 Erlang (Robert) Code updating; Records; Functional objects; Macros. Kapitel 8,7,9 F4+Ö4 3/2 Erlang (Robert) Comprehensions; Erlang long term storage; Distributed programming Kapitel 9,10,11 F5+Ö5 6/2 Erlang (Robert) OTP; Behaviours; Generic servers; Other behaviours. Kapitel 12 F6+Ö6 7/2 Erlang (Robert) Socket programming; Erlang ports; Odds and ends. Kapitel 15,16 F7+Ö7 17/2 Objektorienterade språk - parallell programmering Material på kurswebben F8+Ö8 21/2 Objektorienterade språk - designmönster F9 24/2 Reserv. Ev. frågestund om olika programmeringsparadigmer - (Robert + An- ders) F10+Ö9 3/3 Objektorienterade språk - designmönster Examinationsdatum 3/2 Redovisning av inlämningsuppgift 1, Erlang (LAB1) Motsv. F/Ö 1-2 7/2 Redovisning av inlämningsuppgift 2, Erlang (LAB1) Motsv. F/Ö 3-5 21/2 Presentation av ämne för rapport 16/2 Redovisning av programmeringslaboration i Erlang (LAB1) 5/3 Inlämning av första version av rapporten (RED1) 10/3 Redovisning av programmeringslaborationer, OO språk (RED1) 12/3 Presentation av kritik på rapporter (peer review) 17/3 Inlämning av slutlig version av rapporten (RED1) Anders Lindström 4 KTH STH, Campus Haninge
Ett extra redovisningstillfälle för den som missat någon ordinarie redovisning av en programmeringslaboration kommer att finnas i slutet av kursen, se schema. Efter detta datum gäller redovisning i omtentamensperioden. Anders Lindström 5 KTH STH, Campus Haninge