High-Level Abstraction Programming

Learning Outcomes

  1. discuss advantages of implicit polymorphism in dynamic languages
  2. apply methods as first-class objects
  3. explain advantages of lazy evaluation
  4. explain elements of the iterator protocol
  5. apply function decorators for lazy evaluation
  6. evaluate advantages of generators in comparison with classic programming techniques

Forms of Teaching

Lectures

Laboratory

Week by Week Schedule

  1. Definition of classes: fields, methods, and constructors, Subclasses, inheritance, and method overriding, Module systems
  2. Dynamic dispatch: definition of method-call, Subtyping
  3. Classes, methods and functions as first-class objects
  4. Using collection classes, iterators, and other common library components
  5. Nested and inner classes and functions; Closures
  6. Side effects and state-less computation, Lazy evaluation and infinite streams
  7. Higher-order functions (taking and returning functions)
  8. Midterm exam
  9. Nested and inner classes and functions; Closures, Function closures (functions using variables in the enclosing lexical environment, canonical idioms, currying, partial application)
  10. Functional idioms (map, reduce/fold, filter)
  11. Lazy evaluation, infinite structures, strictness, Lazy evaluation and infinite streams
  12. Lazy evaluation, infinite structures, strictness, Control abstractions (exception handling, continuations, monads)
  13. Control abstractions (exception handling, continuations, monads), Defensive programming (e;g; secure coding, exception handling)
  14. Classes, methods and functions as first-class objects, Metaprogramming (macros, generative programming, model-based development)
  15. Final exam

Study Programmes

University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (1. semester) (3. semester)
Communication and Space Technologies (profile)
Free Elective Courses (1. semester) (3. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Computer Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Computer Science (profile)
Free Elective Courses (1. semester) (3. semester)
Control Systems and Robotics (profile)
Free Elective Courses (1. semester) (3. semester)
Data Science (profile)
Free Elective Courses (1. semester) (3. semester)
Electrical Power Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electric Machines, Drives and Automation (profile)
Free Elective Courses (1. semester) (3. semester)
Electronic and Computer Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electronics (profile)
Free Elective Courses (1. semester) (3. semester)
Information and Communication Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Network Science (profile)
Free Elective Courses (1. semester) (3. semester)
Software Engineering and Information Systems (profile)
Free Elective Courses (1. semester) (3. semester)

Literature

(.), Kalafatić, Zoran; Pošćić, Antonio; Šegvić, Siniša; Šribar, Julijan. Python za znatiželjne. Zagreb : Element, 2016,

For students

General

ID 222725
  Winter semester
5 ECTS
L3 English Level
L1 e-Learning
30 Lectures
8 Laboratory exercises