bookug / Modern-CPP-Programming

Modern C++ Programming Course (UNIVR)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Modern C++ Programming

C++11/C++14/C++17

Open access C++ course, University of Verona (UNIVR), Italy

Short list of C++ online compilers

TOPICS

1. Introduction

  • A Little History of C/C++ Programming Languages
  • C++ Philosophy
  • Why C++?
  • Course References

2. Basic Concepts I

  • Hello World
  • C++ Primitive Types
  • auto and decltype
  • Floating-point Arithmetic
  • (Strongly Typed) Enumerators
  • Union and Bitfield
  • Math Operators
  • Statement and Control Flow

3. Basic Concepts II

  • Memory Management: Heap and Stack
  • Pointers and References
  • sizeof Operator
  • const / constexpr
  • Explicit Type Conversion (Cast)

4. Basic Concepts III

  • Declaration and Definition
  • Functions
  • Preprocessing

5. Utilities

  • I/O Stream
  • Filesystem Library
  • Math Library
  • Algorithm Library
  • String and String View
  • Random Numbers
  • Time Measuring

6. C++ Object Oriented Programming I

  • C++ Classes and Hierarchy
  • Constructor
  • Copy Construcor
  • Destructor
  • Class Keyword: this, static, const, mutable, using, friend, delete

7. C++ Object Oriented Programming II

  • Polymorphism
  • Keyword: virtual, override, final
  • Operator overloading: <<, (), =
  • Special Object: Aggregate, Trivial class, Standard layout, POD

8. C++ Templates and Meta-programming I

  • Function Templates
  • Type Deduction
  • Compile-Time Utilities: static_assert, decltype, declval, using
  • Type Traits
  • Template Parameters

9. C++ Templates and Meta-programming II

  • Class Templates
  • Template Meta-Programming
  • SFINAE
  • Variadic Template
  • STD Template Utility

10. Containers, Iterators, and Algorithms

  • Containers and Iterators
  • Sequence Containers: array, vector, list, deque, forward_list
  • Associative Containers: set, map
  • Container Adaptors: stack, queue, priority_queue
  • Implement a Custom Iterator
  • Iterator Utility Methods
  • Algorithms Library
  • Lambda Expressions

11. Translation Units

  • Basic concepts, linkage, scope
  • Variables Storage
  • Dealing with Multiple Files and Templates
  • #include Issues
  • Namespace
  • Libraries

12. Code Conventions

  • Coding Style
  • Naming and formatting
  • Maintainability and Documentation
  • C++ Guidelines

13. Debugging and Tools

  • Debugging: Assertion, execution, memory, sanitizers
  • CMake
  • Code Checking and Analysis: warnings and static analyzers
  • Code Quality (Linter)
  • Code Testing
  • Code Commenting (Doxygen)
  • Code Statistics: lines, cyclomatic complexity
  • Other Tools: formating, code explorer

14. Advanced Topics

  • Move Semantic
  • Type deduction
  • C++ Idioms: rule of three/five, singleton, PILP, CRTP
  • Smart Pointers
  • Concurrency

15. Optimization (ongoing)

  • Concepts: optimization cycles, complexity, performane bounds
  • I/O Operations
  • Memory Locality and Memory Access Patterns
  • Arithmetic
  • Control Flow
  • Functions
  • C++ Objects
  • Compiler Optimizations
  • Libraries and Data Structures
  • Profiling
  • Parallel Computing
  • Compile Time

Reporting bugs and contributing

If you find any typos please report them by using the repository (issues panel). We are also ready to engage in improving and extending the course material.

Author

License

BSD 3-Clause License

Copyright (c) 2019, Modern C++ Programming All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

About

Modern C++ Programming Course (UNIVR)

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:HTML 100.0%