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

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

   
By decision of the Faculty Council, in the academic year 2019/2020. the midterm exams are cancelled and the points assigned to that component are transferred to the final exam, unless the teachers have reassigned the points and the grading components differently. See the news for each course for information on knowledge rating.
   
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)

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

Associate Lecturers

Exercises

Laboratory exercises

General

ID 183371
  Summer semester
8 ECTS
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