Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Functional programming with Scala
Tok studiów:
2018/2019
Kod:
JIS-1-023-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Angielski
Strona www:
 
Osoba odpowiedzialna:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Krótka charakterystyka modułu

The functional programming regains popularity in the context of the big data and high-reliability applications. One of mainstream programming languages in this domain is Scala.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 The student understands language concepts IS1A_W03, IS1A_W07 Aktywność na zajęciach
M_W002 Student is able to structure larger projects and choose between functional and object-oriented approaches IS1A_W03 Wykonanie projektu
Umiejętności
M_U001 Student is able to compile Scala programs and solve the syntactical and semantical issues on the way to the solution IS1A_U03, IS1A_U04, IS1A_U06 Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Student is able to provide a compelling explanation as to why he/she choose a certain approach IS1A_U03 Aktywność na zajęciach
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 The student understands language concepts + - + - - - - - - - -
M_W002 Student is able to structure larger projects and choose between functional and object-oriented approaches + - - - - - - - - - -
Umiejętności
M_U001 Student is able to compile Scala programs and solve the syntactical and semantical issues on the way to the solution - - + - - - - - - - -
Kompetencje społeczne
M_K001 Student is able to provide a compelling explanation as to why he/she choose a certain approach - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Introduction to the course

    The scope and organization of the lectures, organization of the labs, student projects.
    Functional programming introduction, Scala with the Hello World example. REPL with help.

  2. Walk through the basics

    Scala code structure, documentation, values and variables, basic types, expressions, control statements, iteration and generators. Pre-, post- and in-fix operators.

  3. Functions

    Declaration and definition, return value, return statement and implicit return value, function invocation, function arguments, named function arguments, anonymous functions.

  4. Advanced topics functions

    Nested functions, partially applied functions, higher order functions, recursions, head- and tail- recursions. Functions as a custom control statements. Partial functions.

  5. Object oriented programming

    Classes and objects. Class attributes, methods and procedures, access control, construction. Company objects. Class properties. Functional classes.

  6. Polymorphism

    Inheritance and Scala class hierarchy, abstract classes. Polymorphic methods. Multiple inheritance and traits. Rich interfaces. Tailored behaviors through anonymous classes. Traits in stacking modifications.

  7. Packages and implicit conversions

    Declaring implicit conversions. Use cases for conversions. Packaging and importing code. Configurable packages.

  8. Pattern matching

    Case classes: definition and uses, sealed class hierarchies. Matching: constants, variables, case classes, types. Extractors.

  9. Generics

    Functions, classes, variance definition, abstract attributes.

  10. Scala collections library

    Mutable and immutable containers, rich collections interface. Views.

  11. Code testing
  12. GUI

    Swing library: application structure, GUI elements overview, arrangement. Handing user interactions through events and reactors.

  13. Selected small subjects

    Filling the gaps: exceptions, XML, objects comparison. Monads. Scala in big data.

  14. Summary and outlook

    Reliability of Scala programs. Applications in big data market.

Ćwiczenia laboratoryjne:
Laboratories

During laboratories, students shall complete two exercises. First, covering material that was already covered in the previous lab. This task should be performed without looking at any additional material than student’s own exercises. This part, when completed successfully, results in 6 points. About 30-40 minutes is allotted for this exercise. The second exercise will cover new material discussed in the last lecture. Successful completion of this exercise provides 4 points. Students can look up any material they wish during this exercise except forums, chats etc. while the language documentation, lectures are accepted.
During some labs (3-4) the first part will be omitted for the sake of more interesting problem to be solved.
Larger student projects are possible as a way to improve the final grade.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 150 godz
Punkty ECTS za moduł 6 ECTS
Udział w wykładach 30 godz
Udział w ćwiczeniach laboratoryjnych 30 godz
Wykonanie projektu 45 godz
Przygotowanie do zajęć 45 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

The final grade is just a grade from the laboratories. Additional student projects are possible to increase the grade. They will be also needed to compensate for absences.

Wymagania wstępne i dodatkowe:

Some experience in object oriented programming and design is an advantage, though not required. During labs we will use a Linux, therefore, elementary user skills will be required.

Zalecana literatura i pomoce naukowe:

Scala is well documented online. A language overview books would be useful for students to read though. For self-education a computer with any operating system is good enough.

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

The absences due to illness (confirmed) need to be worked-up by writing programs covering missed material.

Advertisments:
https://ileriseviye.wordpress.com/2014/12/22/how-and-why-is-scala-used-in-aerospace-industry/
https://www.indeed.com/q-Scala-jobs.html