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.
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
- 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. - 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.
- 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.
- Lecture: Constructors and destructors. Copy constructor, assignment operator. The initialisation of member variables. Constant and static members.
Lab: Constructors, destructors, operator<< overload. - 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.
- 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.
- Lecture: Virtual functions, abstract classes. Restricting inheritance. Virtual destructors. Heterogeneous collections.
Lab: Inheritance, Impact of inheritance on visibility and overloading.
- Lecture: Multiple inheritance, virtual base classes. Concept and implementation of persistence.
Lab: Heterogeneous collections. Homework: skeleton
- Lecture: Type conversion, conversion (cast) operators, exception handling.
Lab: Multiple inheritance and persistence related tasks.
- Lecture: The role of the generic data structures. Function and class templates.
Lab: Type conversion (cast), and exception handling exercises. - Lecture: Introduction of Standard Template Library (STL).
Lab: Generic data structures and algorithms. - Lecture: STL containers and algorithms, iterators.
Lab: STL containers and algorithms. Homework presentation. - Lecture: Presentation of complex example. Language tools.
Lab: Homework presentation. - Lecture: Summary. Introduction to design patterns.
Lab: Spare lab