COURSE + LAB

Object Oriented Programming

Fundamental programming concepts and techniques

Year I, Series A 4 Credits Spring Semester 14 weeks

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

Course Information

Instructor
Schedule
Friday 11:00-13:00
Location
B306, ETTI
Office Hours
Friday 13:00-15:00

Quick Actions

Contact Instructor