Absolute basics • machine and high-level programming languages, compilation process, • obtaining the machine code: compilation process, • writing simple programs, • variables, • integers: values, literals, operators, • characters: values, literals, operators, • dealing with streams and basic input/output operations. Flow control and more data types • how to control the flow of the program • floating point types: values, literals, operators, • more integer types: values and literals, • loops and controlling the loop execution, • logic, bitwise and arithmetic operators. Functions • functions, • declaring and invoking functions, • side effects, • different methods of passing parameters and their purpose, • default parameters, • inline functions, • overloaded functions. Accessing data and dealing with exceptions • converting values of different types, • strings: declarations, initializations, assignments, • string as an example of object: introducing methods and properties, • namespaces: using and declaring, • dealing with exceptions. Fundamentals of the object-oriented approach • class, • objects, • class components, • constructors, • referring to objects, • static members, • classes and their friends, • defining and overloading operators. Class hierarchy • base class, superclass, subclass, • inheritance: how it works, • types of inheritance, • inheriting different class components, • multiple inheritance. More on classes • polymorphism: the notion and the purpose, • virtual methods: declaration and usage, • inheriting virtual methods, • abstraction and abstract classes. Exceptions – dealing with expected and unexpected problems • what is an exception, • catching and throwing exceptions, • different classes and hierarchy of exceptions, • defining your own exceptions.