Lots of practical examples, general programming, software development techniques, OOP, parallel algorithms, plus C++ to combine it all into working applications. This is a short introduction to the book “Introduction to Programming with C++” by Prof. Boguslaw Cyganek, an excellent book for students who start their journey with system coding.
Let’s see what’s inside.
Disclaimer: I got a free copy from the author.
Disclaimer 2: The links to Amazon are affiliate links, which provide me with some small commission.
Here are the main links and info about the book:
The book on Amazon:
Introduction to Programming with C++ for Engineers @Amazon (released in 2021)).
The book page at Wiley:
Excerpts (from the Wiley page)
GitHub with the source code:
And there’s also a recent Polish version:
Programowanie w języku C++ Wprowadzenie dla inżynierów, with a very affordable price!
Prof. Boguslaw Cyganek is a highly accomplished researcher and academic in the field of computer vision. He holds a Ph.D. degree and a D.Sc. degree, both focused on topics related to image analysis and object recognition. With extensive practical experience as a Software Development Manager and Senior Software Engineer, he has contributed to the development of computer vision systems. Prof. Cyganek has authored or co-authored numerous papers, including four books, such as “An Introduction to 3D Computer Vision Techniques and Algorithms” and “Object Detection and Recognition in Digital Images: Theory and Practice,” published by Wiley. He is a member of esteemed professional organizations such as IEEE, SPIE, IAPR, and SIAM.
And by the way: Bogustaw is part of our local Cracow C++ User Group.
Here’s his teaching website:
And have a look at his presentations from various C++ conferences:
- Floating point computations today and in the future - Bogulaw Cyganek - Meeting C++ 2022
- Comp Sci 80/20: How to Teach Modern C++? - Boguslaw Cyganek - C++ on Sea 2022
Let’s see what’s inside the book.
This is a standard introduction to the book’s structure and format conventions. It also presents the companion website and delves into the code and projects linked with the book, providing readers with a comprehensive understanding of what to anticipate.
- Introduction to Programming
This chapter serves as a primer for programming, covering the hardware and software development ecosystem. It explores the steps involved in software development and provides insights into representing and running algorithms. This part includes practical examples, such as a compound interest calculator and counting occurrences of characters in text. You’ll also see how to run your code on Linux, Windows or even through an online C++ compiler.
- C++ Basics
Focusing on the basics of the C++ programming language, this chapter covers topics like constants, variables, data types, statements, functions, and arrays. It also introduces more advanced concepts such as references, pointers, and operator overloading. It has example projects, such as implementing a matrix, representing quadratic equations or currency exchange program. You’ll also learn how to use a debugger.
- Delving into Object-Oriented Programming
Building upon the foundation of C++ basics, this chapter delves into object-oriented programming (OOP). It explores the principles and philosophy of OOP, covering class anatomy, access rules, inheritance, polymorphism, and more. The chapter features several example projects, including designing complex number classes, mastering class members, working with templates, or strong typing in C++.
- Memory Management
This chapter addresses the crucial topic of memory management in C++. It starts by discussing different types of data storage and then focuses on dynamic memory allocation and how to avoid memory leaks. The chapter also introduces smart pointers as a resource management technique.
- Advanced Object-Oriented Programming
Taking object-oriented programming to the next level, this chapter covers advanced topics such as functional objects, state machines, regular expressions, time measurements, and the visitor design pattern. It provides comprehensive examples, including extending currency search functionality, implementing expression parsing, working with ranges, XML parsing.
- Computer Arithmetic
This chapter delves into the intricacies of computer arithmetic. It explores the representation of integer and floating-point values, binary shift operations, and the IEEE 754 standard for floating-point arithmetic. Additionally, it covers related topics such as fixed-point representations, handling numerical errors, and evaluating algorithms for summation and root finding.
- Basics of Parallel Programming
As parallel computing becomes increasingly important, this chapter provides an introduction to parallel programming concepts. It discusses the basics of parallel computations, parallelizing standard algorithms, and launching asynchronous tasks. The chapter also introduces OpenMP, a popular parallel programming library, and explores parallelization techniques for different scenarios.
The appendix provides additional resources and information. It covers preprocessor directives, a brief introduction to C programming, linking and binary organization of C/C++ objects, graphical user interfaces, software testing, and the programming toolchain.
I have been highly impressed by Introduction to Programming with C++ for Engineers and can’t recommend it enough. With its content designed keeping in mind the author’s own students, the book assumes no prior programming experience, making it an excellent choice for anyone who wishes to learn C++ as their first programming language.
The content of the book provides an exhaustive coverage of the C++17 version and also touches upon features of C++20. It offers a comprehensive study of a variety of subjects, including non-OO features, object-oriented programming, memory management, and templates.
What really sets this book apart from others are its effective use of diagrams, clear formatting, and insightful figures. These features make the book visually pleasing and simple to navigate. I was pleasantly surprised to see long tables detailing the std::filesystem API and smart pointers, which were quite easy to comprehend and extremely informative.
Here are some images for reference:
And one more:
An additional strength of this book lies in the practical examples dispersed throughout the chapters. It presents not only brief but illustrative samples and larger applications (without being overwhelming). Examples of such applications include a currency converter, PESEL handling (ID numbers), XML parsing, and even some GUI applications. The inclusion of these examples is likely to inspire students to delve deeper into software development and explore various facets of system programming.
The book extends its reach beyond just the programming language, shedding light on aspects such as microprocessor operations, software development processes, UML, and more. Furthermore, the appendices cover essential tools like CMake and Git, making this book a comprehensive guide for anyone delving into C++ programming. The detailed content, careful attention to detail, and clarity in explaining concepts have garnered much praise for the book. This makes it an invaluable resource for those aspiring to learn and understand modern C++ programming.
Final mark: 5+/5
- A comprehensive guide for any beginner: from the build setup, unit testing to profiling tools
- Practical problems
- Not just C++ syntax, but OOP, SOLID, numerical, software development
- Not just console apps; there are even GUI apps
- Beautiful book layout
- Beautiful images and tables across the book
- Full color for images, diagrams, UML, tips, source code syntax
- Quite pricy! (although the Polish version is very affordable)
Get the book here: Introduction to Programming with C++ for Engineers @Amazon
Back to you
- What are your “summer” books related to programming?
- What book on C++ you’re looking for?