SUBJECT

Title

Programming languages (Java)

Type of instruction

lecture + practical

Level

bachelor

Part of degree program
Credits

5

Recommended in

Semester 3

Typically offered in

Autumn semester

Course description

The students should learn the main concepts of programming languages and get acquainted with the constructs in imperative class-based object-oriented languages. As a concrete language, Java is used both for illustration purposes and for the practicals. The following topics are covered. Imperative programming (types, variables, operators, expressions, evaluation, statements and control structures, comments). Procedural programming (subprograms/methods, parameter passing, overloading, execution stack, recursion, exception handling). The main focus is on OOP (class, object, instantiation, members, constructors and initialization, access control, encapsulation and abstraction, inheritance, inclusion polymorphism, overriding, static and dynamic binding, static and dynamic types, abstract types, comparing and cloning objects). Concerning types, we discuss arrays, enumerations and generic programming. Program structures are also addressed: scope and visibility, memory management and garbage collection, name spaces, compilation units, nesting types. A brief introduction to multithreading and synchronization issues is given. Java-specific program execution model is also covered: virtual machine, class loading, JIT compilation. On the practicals students improve programming skills and exercise the use of some Java standard libraries such as data structures, streams and GUI.

Readings
  • Cay S. Horstman, Gary Cornell: Core JavaTM, Volume 1 - Fundamentals (8th edition). Prentice Hall, 2007.

 

Recommended literature: