Object Oriented Programming

Data is displayed for academic year: 2023./2024.

Lectures

Laboratory exercises

Course Description

Basic principles of object-oriented programming and design. Modelling. Reusability. Frameworks for program development. Java programming language. Java as a machine independent platform. Programming tools. Command line tools. Coding conventions. Refactoring. Abstraction. Encapsulation. Classes and objects. Static members. Access modifiers. Constructors. Class relationships. Memory management and garbage collectors. Inheritance. Polymorphism. Abstract classes. Interfaces. Introduction to design patterns. Exceptions. Files and streams. Collections. General collection algorithms. Simple and complex comparators. Generics. Multithreading and multithreaded applications. Events. Development of applications with graphical user interface. Simple and complex graphical components. Development of custom graphical components. Program testing. Program performance analysis. Program optimization.

Study Programmes

University undergraduate
[FER3-EN] Computing - study
(2. semester)
[FER3-EN] Electrical Engineering and Information Technology - study
(2. semester)

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

Lectures

Materials and presentations are on course web page.

Exercises

demonstrations of program solutions and tools; solving exercises

Independent assignments

Preparation for laboratory exercises

Laboratory

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 0 % 10 % 0 % 0 %
Quizzes 0 % 10 % 0 % 0 %
Mid Term Exam: Written 25 % 40 % 0 %
Final Exam: Written 25 % 40 %
Exam: Written 50 % 100 %

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

Literature

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

For students

General

ID 209629
  Summer semester
8 ECTS
L3 English Level
L1 e-Learning
60 Lectures
0 Seminar
15 Exercises
18 Laboratory exercises
0 Project laboratory
0 Physical education excercises

Grading System

90 Excellent
80 Very Good
65 Good
50 Sufficient