.: Courses

On this page you can find a short (and incomplete) overview of the courses I've been teaching over the years (in no particular order). The list includes courses from VAMK, UWASA and also NOVIA and includes a short description about the content and goals of each course.


Basics of Operating Systems

The student will become familiar with the fundamental workings of an operating system. Understanding processes, threads, kernel and scheduler, memory management and file systems are a fundamental part of the course. The differences between Windows and Linux at this level are also explored. Basic principles behind real time operating systems and distributed and parallel computing are presented.

Basics of Programming

The student will get familiar with fundamental programming techniques such as functions, variables and program flow control while also introducing basic data structures. During the course, the student will become familiar with the process of turning program code into machine executable code and understand how a computer runs the final program. Special care is given to making sure the student understands what goes on on the processor.

C Programming

The student will become familiar with the C programming language. Focus of the course are the C preprocessor, header files and function prototypes, structs, unions and enums, arrays and pointers, and efficient management of C code. C Libraries, file I/O, and the compilation process are studied in detail.

Object Oriented Programming

The student will become familiar with object oriented programming techniques such as Classes, Methods, Inheritance, Polymorphism and Serialization. The student will be able to develop object oriented programs, and learn to use abstract thinking in order to solve larger programming problems in an object oriented way, showing the benefits and drawbacks of this programming technique. The Java programming language is primarily used.

Linux Operating System

The objective of the course is to get students familiar with the Linux operating system, its structure and functionality. After the course, students must have a good knowledge of most used commands in Linux operating system, feel comfortable to work under the Linux operating system, be able to handle files, processes and write shell scripts. Furthermore, use of Linux in a server environment is demonstrated, and the student should be able to set up a simple web server.

Real Time Operating Systems

Working principles of real time operating systems and how such a system is used in application creation. Basic real-time concepts, scheduling methods. Advantages and disadvantages of the event loop. Programming of a real time system using the MicroC-OS II environment and QNX.

Mobile Systems

The students learn how to write applications for mobile systems. In the course, we focus on the Qt C++ framework for both Symbian and Linux based mobile devices. The challenges of writing applications for resource constraint devices is an integral part of the course, and examples of low level optimisation are presented.

Legislation of Information Technology

Students get familiar with legislation in ICT business, especially paying attention to contract law in ICT business, immaterial rights, license types, privacy protection and labour legislation and working hours restrictions.

Engineering with Matlab and Simulink

The course focuses on the use of Matlab and Simulink to perform advanced numerical as well as symbolic calculations coupled with real physical processes. Special focus is given to the translation of mathematical models into real implementations, with the needed optimisation at various levels of the design. Some of the practical implementations studied include filters, control algorithms, media processing,etc.

Software Engineering

Students will learn concepts related to software engineering, project management and models and techniques for developing software in a professional manner. The course offers theories related to the software engineering process and allows student implement theory in practice through a software project. Student will learn software development process models, techniques to write software project plan, requirements analysis techniques, modelling (Unified Modelling Language, UML), software design and testing, configuration management and software quality assurance. After the course the student will have a good understanding of how software development process can be carried out in different situations and will be capable of participating into professional software development projects.

Engineering Drawing

The students will get familiar with modern mechanical engineering design tools. Focus is on the use of AutoCad (2D) and NX (3D).

Computer Architecture

The course provides the students with the basic foundation in the microcomputer technology, using a specific processor. Topics covered include the internal architecture of the microcomputer chip, the various programming models, instruction set and addressing modes.

And probably a few more...