Programming 2

VIIIAA03  |  Computer Engineering BSc  |  Credit: 6

Objectives, learning outcomes and obtained knowledge

The fundamental goal of the course, as a foundation course, to continue to raise awareness (knowledge) about computerised problem-solving methods and basic tools, started last semester, at a level that would enable the students to apply their knowledge in their further studies effectively.
The primary objective of this semester to deepen the knowledge of the C programming language, and introduce the fundamentals object-oriented programming. The aim of the course is gained by familiarising C ++, based on the C knowledge from the previous semester.
The exercises and labs material continues to follow the syllabus of lectures. The exercises help to deepen the knowledge of the C++ programming language.


Synopsis

  1. Lecture: Summary of the previous semester. "Repair" of the C language: value type struct, enum, bool type. Low-level Function call. The need for prototypes, the introduction of a reference type. Using function as by left value. Introduction to isostream.

    Lab: Summary of Basic Operating System knowledge. Practice with the development environment - usage of the development tools.
  2. Lecture: Function name overloading. Default function parameters, inline functions, namespaces. A short introduction to memory allocation and the exception handling mechanism of C++

    Lab: Exercising with const and reference. Rewriting code written in C to C++ using C++ elements. Discovery of memory leaking.
  1. Lecture: Object-oriented programming: Basic concepts, principles, object definition. Classes, encapsulation, concept of information hiding and visibility. Member variables and member functions. Getters and setters. The „this" pointer. Constructors, destructors.

    Lab: A simple class implementation. Getter/setter functions.
  1. Lecture: Constructors and destructors. Copy constructor, assignment operator. The initialisation of member variables. Constant and static members.

    Lab: Constructors, destructors, operator<< overload.
  2. Lecture: Visibility. The concept of operator overload. The realisation of operation overload by the member and global functions. Restrictions.

    Lab: Classes width dynamic data. Copy constructor, assignment operator.

  3. Lecture: The role of the inheritance in object-oriented programming. Inheritance, derived class, base class. Influence of inheritance on visibility. Constructors and inheritance.

    Lab: Implementation of more complex objects (e.g. Dynamic array). Operator overload., Homework specification.

  4. Lecture: Virtual functions, abstract classes. Restricting inheritance. Virtual destructors. Heterogeneous collections.

    Lab: Inheritance, Impact of inheritance on visibility and overloading.

  5. Lecture: Multiple inheritance, virtual base classes. Concept and implementation of persistence.

    Lab: Heterogeneous collections. Homework: skeleton

  6. Lecture: Type conversion, conversion (cast) operators, exception handling.

    Lab: Multiple inheritance and persistence related tasks.
  1. Lecture: The role of the generic data structures. Function and class templates.

    Lab: Type conversion (cast), and exception handling exercises.

  2. Lecture: Introduction of Standard Template Library (STL).

    Lab: Generic data structures and algorithms.

  3. Lecture: STL containers and algorithms, iterators.

    Lab: STL containers and algorithms. Homework presentation.

  4. Lecture: Presentation of complex example. Language tools.

    Lab: Homework presentation.

  5. Lecture: Summary. Introduction to design patterns.

    Lab: Spare lab