Programming languages - Java

(Váltás magyarra)

This course is available both in the spring and autumn semesters for BSc students in Computer Science. Weekly schedule: 2 hours of lecture, 2 hours of lab, 2 hours of consultation (6 ECTS credit points)


The purpose of this course is to introduce the concepts of programming languages, focusing on the object oriented programming paradigm. As an illustration, we use the programming language Java. We discuss the language tools of imperative programming (types, variables, operators, expressions, instructions, control structures, comments), those of procedural programming (subroutines / methods, parameter passing, overloading, execution stack, recursion) and, with the greatest emphasis, those of class-based object-oriented programming (class, object, member, instantiation, initialization, inheritance, subtype polymorphism, redefinition and redeclaration, static and dynamic binding, abstract types, comparison and copying of objects). With respect to types, we address arrays, enumeration types, generic and parameterized types, generic programming. The study of program structures covers scoping, visibility, abstraction, namespaces (Java packages), compilation units, and nested type definitions. We pay close attention to exceptions and exception handling. We also discuss program execution (e.g. virtual machine, class loader, dynamic linking). During the labs, we also get to know some libraries, such as data structures and input-output.

We consider it important that students understand the concepts of the language and that they use the learned language elements consciously in problem solving. Not only do we expect students to be able to solve programming problems, but also to have a solution that is high quality code, and to provide readability, maintainability through comments and coding conventions. Our goal is therefore not primarily to teach programming, but programming languages and the correct use of the Java language.

Attending the lectures is mandatory. It is obligatory to learn the material of the past lecture before attending the lab. During the labs, the main goal is to work on your own with help of the instructor, based on the knowledge you gathered at the lecture and with self studying.

In the lab we will not use an integrated development environment (e.g. IntelliJ, Eclipse, Netbeans), only a text editor (e.g. geany, notepad++, gedit, (g)vim, emacs) and the command line for compilation / execution of programs. The point is that this way students are going to understand how tools work, they can become conscious users of tools and become capable of configuring an IDE later. We require students to learn how to write, compile and run code on multiple operating systems (Windows, Linux).

We provide a face-to-face consultation opportunity.