# About Evolved C++

Welcome to the course Evolved C++, an Object Oriented Programming (OOP) course with C++. In this course we will try to learn to become good or better OOP programmers. While the concepts can be extended to most other OOP languages, some examples may only be usable as is.

Most of the material used in this course is created by Nico De Witte. However some paragraphs, definitions, examples, images, ... may be copied from other online sources. In that case a reference can be found in the Sources chapter or as a footnote.

Check out my github repos for the source of this course and for other courses, code examples, ...: https://github.com/BioBoost (opens new window)

# Alpha version

Please note that this course is still under development and did not even reach a draft version yet. Make sure to check at least every week for changes made.

# Prerequisites

This course does expect you to already have a basic knowledge of programming and object oriented concepts. If you don't, please take the course "Object Oriented Programming with C#" which can be found at https://base-to-ace.netlify.app/ (opens new window).

# Requirements

To follow along you will need at least a C++ compiler for the operating system you are using. Best option is to use a GCC compiler.

You will also need a decent code editor. If you are a total beginner for C++, a good option can be Microsoft Visual Studio Code (opens new window), a free code editor that supports many programming languages.

# About this course

This course is not about learning to use all sorts of tools or fancy integrated development environments (IDEs). It's also not about learning to manage projects or design methodologies.

The main focus lies in learning to think in an object oriented way and in the meantime learn some object oriented languages. While learning all these great things about objects we are not responsible for the fact that you might learn a thing or two about tools and project management.

# Theory

While all you need to know for the exam is in this course, not all you should know is in here. It is extremely preferable to take notes in the lessons. And of course you are also encouraged to search the Internet and books for extra knowledge.

Feel free to ask questions in the lessons, via email or via teams.

# LABs, assignments and tests

The LABs are there to practice what you have learned in the theory lessons. You will get some assignments through the semester on which you will be graded.

There may be occasions for tests but these will mostly be announced.

# ECTS

For the exact details on the LABs, exams and tests you should take a look at the ECTS fiche of this course (opens new window).

# Course Objectives

Below is a quick overview of the objectives of this course. By the end of the semester you should be able to check each of these of and consider them to be part of your programming skillset.

At the end of this course, students will be able to

  • create basic OO applications in C++
  • understand and make use of dynamic memory allocation
  • develop custom classes following good practices
  • reuse implementation by applying composition and inheritance concepts
  • separate interface from implementation by using header files and implementation files
  • identify the different steps in the C++ compilation process
  • compile and use existing libraries
  • develop and user your own libraries
  • document code/libraries using doxygen and UML diagrams
  • identify candidates and define abstract classes
  • create and use interfaces
  • make correct use of multiple inheritance in C++
  • catch and throw custom exceptions for advanced error handling

Note that the objectives are not ordered based on their importance but more in order on which they are present in the course.

Some of the above objectives rely on topics covered in other courses taught at VIVES University College. It is expected that you can apply them for this course. All code solutions are expected to adhere to the good practices of developing software (DRY, SOLID, ...) and should be free of the well-known code smells.

# License

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Last Updated: 9/21/2022, 6:25:55 AM