course aims in Estonian
* Üldistada programmeerimismeetodeid.
* Luua arusaam, kuidas funktsionaalselt mõelda ja programmeerida ning omandada
uusi teadmisi hästistruktureeritud programmide kirjutamiseks.
* Õppida ära tundma ülesandeid ja rakendusvaldkondi, mida on loomulik lahendada funktsionaalse
lähenemisega.
* Funktsionaalsed võtted ja võimalused on kasutusel kõigis enamlevinud programmeerimiskeeltes. Kursus laiendab arusaama ning annab võtted ja osksused selliste struktuuride kasutama õppimiseks hea kvaliteediga koodi saavutamiseks.
* Näidata, et mitmed päriselulised programmeerimisülesanded äri- ja teadusrakendustes
on funktsionaalse struktuuriga ja on seetõttu funktsionaalse lähenemisega elegantselt ning efektiivselt lahendatavad.
* Õppida funktsionaaseid programme testima.
* Anda ülevaade mitmetest rakenduslikest meetoditest, nagu näiteks asünkroonsest ja paralleelsest programmeerimisest funktsionaalses kontekstis.
course aims in English
* To give a generalised perspective to programming.
* To give an undestanding how to think and program functionally and achieve new skills for
writing well structured code.
* To identify problems and domains that lend themselves to be thought about in functional ways.
* Functional techniques are now commonplace in mainstream programming languages.
The course will broaden the understanding and give the ability to notice and
make use of such structures in order to achieve good quality code.
* To show that real world business and scientific computing tasks often
have a natural functional structure that lends itself to being solved elegantly and
efficiently by functional tools.
* To show how to test functional programs.
* To give an overview of various applied techniques, such as asynchronous and parallel programming
in the functional context.
learning outcomes in the course in Est.
Kursuse läbinu:
* Omab selget ettekujutust funktsionaalse programmeerimise põhimõtetest, mis on rakendatav
igas programmeerimiskeeles.
* Oskab kirjutada puhast ja hästi struktureeritud koodi.
* Oskab funktsionaalses programmeerimiskeeles teste kirjutada.
* Oskab ära tunda ja eristada funktsionaalset ja imperatiivset programmeerimisstiili.
* Oskab kasutada funktsionaalseid põhimõtteid igas funktsionaalses/imperatiivses programmeerimiskeeles.
* On tuttav rakendusvaldkondadega, kus funktsioonaalne lähenemine on kõige loomulikum ning
suudab otsustada, millal on mõistlik kasutada funktsionaalset programmeerimist.
* Oskab otsustada, milliseid probleeme saab kõige paremini lahendada asünkroonse või reaktiivse lähenemisega.
* Oskab kirjutada programme, kus andmetöötlus toimub paralleelselt.
learning outcomes in the course in Eng.
A student who has completed the course:
* Has clear understanding of functional programming concepts that are
applicable in any programming language.
* Can write clean and well structured code.
* Knows how to test functional programs.
* Can identify/contrast functional programming and imperative programming.
* Can use functional concepts in any functional/imperative programming language.
* Is familiar with the application domains where functional programming is a natural fit and can decide when to use FP.
* Can decide which problems are best solved with asynchronous or reactive approach.
* Knows how to write data parallel programs.
brief description of the course in Estonian
Kursus eeldab programmeerimisoskust ja põhiteadmisi algoritmidest
ja andmestruktuuridest.
Kursus keskendub järgmistele teemadele:
* Ülevaade funktsionaalsest ja imperatiivsest programmeerimisest.
* Tüüpide ja funktsioonide mõistmine.
* Objektidega programmeerimine.
* Programmikoodi organiseerimine.
* Andmete programne käsitlemine (nii tekstiandmete kui struktuuriga andmete puhul).
* Reaktiivne ja asünkroonne programmeerimine ja programmide kirjutamine mitmetuumalistele arvutitele.
* Väliste andmete ja teenuste integreerimine.
Ülalnimetatud põhimõtteid illustreeritakse rakendustega järgmistes valdkondades:
* Andmete visualiseerimine
* Teadusarvutused ja numbrilised meetodid
* Finantsarvutused
* Töö suurte andmemahtudega
brief description of the course in English
The course assumes programming skills and basic knowledge of
algorithms and data structures.
The course will focus on the following topics:
* Overview functional and imperative programming
* Understanding types and functions
* Programming with objects
* Code organisation
* Working with data (textual and structured)
* Reactive, asynchronous and parallel programming
* Integrating external data and services
The above mentioned topics will be illustrated with applications in the
following domains:
* Data visualisation
* Scientific and numerical computing
* Financial computing
* Data science (big data)
type of assessment in Estonian
Eksam 50%, kodutööd 50%.
type of assessment in English
Exam 50%, homework 50%.
independent study in Estonian
Programmeerimisülesanded, kodulugemine.
independent study in English
Programming exercises, home reading.
study literature
Tomas Petricek: Real World Functional Programming: With Examples in F# and C#
Don Syme, Adam Granicz, Antonio Cisternino: Expert F# 3.0 3rd New edition
http://cs.ttu.ee/courses/itt8060
study forms and load
daytime study: weekly hours
4.0
session-based study work load (in a semester):