Object Oriented Programming

Learning Outcomes

  1. Describe the principles of the object oriented programming paradigm
  2. Apply the concepts of abstraction, data encapsulation, inheritance and polymorphism to software design
  3. Use an object oriented programming language, and associated class libraries, to develop programs
  4. Design, develop, test, and debug programs using object oriented principles in conjuncture with an integrated development environment
  5. Design and develop programs with Graphical User Interfaces capabilities
  6. Apply multi-threading for creation of responsive user interfaces
  7. Describe and explain the factors that contribute to a good object oriented solution

Forms of Teaching


Materials and presentations are on course web page.


demonstrations of program solutions and tools; solving exercises

Independent assignments

Preparation for laboratory exercises


complex laboratory assignments which includes object oriented programming in Java

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 50 % 0 % 50 %
Mid Term Exam: Written 40 % 25 % 0 %
Final Exam: Written 40 % 25 %
Exam: Written 50 % 50 %

Week by Week Schedule

  1. Simple numerical algorithms, such as computing the average of a list of numbers, finding the min, max, and mode in a list, approximating the square root of a number, or finding the greatest common divisor; Strings and string processing.
  2. Records/structs (heterogeneous aggregates); Memory management and garbage collectors; Definition of classes: fields, methods, and constructors; Object-oriented idioms for encapsulation.
  3. Subclasses, inheritance, and method overriding.
  4. Abstract classes and interfaces, inheritance, polymorphism.
  5. Dynamic dispatch: definition of method-call; Subtyping.
  6. Linear data structures: arrays and lists; Abstract data types and their implementation (stacks, queues, priority queues, sets, maps).
  7. Writing and reading of files and streams.
  8. Midterm exam.
  9. Nested and inner classes and functions; Closures.
  10. Using collection classes, iterators, and other common library components.
  11. Using collection classes, iterators, and other common library components; Classes, methods and functions as first-class objects.
  12. Sequential and binary search algorithms; Classes, methods and functions as first-class objects.
  13. Development of applications with graphical user interface.
  14. Multi-threading and multi-threaded applications; Development of applications with graphical user interface.
  15. Final exam.

Study Programmes

University undergraduate
Electrical Engineering and Information Technology and Computing (study)
(2. semester)


Herbert Schildt (2017.), Java: The Complete Reference, Tenth Edition, McGraw Hill Professional
Marko Čupić (.), Programiranje u Javi, FER, knjiga u nastajanju
Mario Kušek, Marko Topolnik (.), Uvod u programski jezik Java, FER, interna skripta
Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft (2018.), Java 8 & 9 in Action, Pearson Professional
Walter Savitch, Kenrick Mock (2015.), Absolute Java, Global Edition, Pearson Higher Ed

Associate Lecturers


Laboratory exercises


ID 183371
  Summer semester
L3 English Level
L1 e-Learning
60 Lectures
15 Exercises
18 Laboratory exercises
0 Project laboratory

Grading System

90 Excellent
80 Very Good
65 Good
50 Acceptable