COURSE + LAB
Object Oriented Programming
Fundamental programming concepts and techniques
Course Overview
This course introduces students to the object-oriented programming paradigm and teaches them how to use fundamental programming principles to solve real-life problems. Students will learn how to establish object interactions, problem-solving strategies, complex data structures, standard library usage and software development best practices.
The course combines theoretical knowledge with practical hands-on experience through laboratory sessions.
Learning Objectives
- Mastering the mechanisms of abstraction of programming problems in the form of classes and objects
- Understanding the interaction between objects and the relationships between different classes
- Understanding when, where and how to use standard libraries
- Using the notions of object-oriented programming to solve problems expressed in natural language
- Practical mastering of the notions taught in the course through the implementation of software programs of medium complexity
- Solving concrete practical problems that include elements of object-oriented programming
Course Content
Module 1 Introduction
- General aspects of object-oriented programming
- Programming languages overview
- Migration from procedural programming language (C) to object-oriented programming language (C++)
- Namespaces
Basic overview of the difference between procedural and object-oriented programming
Module 2 Classes and Objects
- Introducing class and object concepts
- Access specifiers
- Constructors
- Destructors
- Initialization lists
- Object vectors
- Special member functions
- Separating classes into header and source files
- Static classes and functions
- Friend mechanism
- Solving exercises
Module 3 Inheritance
- Basic inheritance concepts
- Order of calling constructors/destructors
- Hiding members
- Function overriding
- Virtuality
- Inheritance-specific keywords: final, override
- Types of inheritance
- Solving exercises
Module 4 Operator overloading
- Treating operators as functions
- Commonly overloaded operators: assignment, stream extraction/insertion, arithmetic, relational
- Solving exercises
Module 5 Templates
- Principles of generic programming
- Class templates
- Function templates
- Specializations
- Polymorphism
Module 6 Standard Template Library
- Containers
- Iterators
- Algorithms
- Solving exercises
Module 7 Working with files
- Input/output streams
- Examples
Prerequisites
- Basic computer programming in any language
Assessment Methods
Midterm lab Exam
30%
Theoretical and practical examination covering weeks 1-7
Final lab Exam
20%
Theoretical and practical examination covering weeks 8-12
Final Exam
50%
Comprehensive examination covering all course and lab material
Resources
Required Textbooks
-
The C++ Programming Language, 4th Edition
by Bjarne Stroustrup
(2013)
ISBN: 978-0275967307 -
CPP Coding Standards - 101 Rules Guidelines and Best Practices
by Herb Stutter, Andrei Alexandrescu
(2004)
ISBN: 978-0321113580 -
Head First Object-Oriented Design and Analysis
by Brett McLaughlin, Gary Pollice, David West
(2006)
ISBN: 978-0596008673 -
Head First Design Patterns
by Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
(2004)
ISBN: 978-0596007126
Required Software
- C++ 11 or later
- CLion IDE, NetBeans, Code Blocks, Visual Studio or VS Code
Online Resources
-
C++ reference
Comprehensive C++ language reference
Course Information
Instructor
Schedule
Friday 11:00-13:00
Location
B306, ETTI
Office Hours
Friday 13:00-15:00
Contact