mirror of
https://github.com/federico-busato/Modern-CPP-Programming.git
synced 2025-04-20 00:19:03 +03:00
V3
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
05.Basic_Concepts_IV.pdf
Normal file
BIN
05.Basic_Concepts_IV.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
16.Optimization_I.pdf
Normal file
BIN
16.Optimization_I.pdf
Normal file
Binary file not shown.
Binary file not shown.
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
|||||||
BSD 3-Clause License
|
BSD 3-Clause License
|
||||||
|
|
||||||
Copyright (c) 2018, Modern C++ Programming
|
Copyright (c) 2020, Modern C++ Programming
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
149
README.md
149
README.md
@ -3,162 +3,183 @@
|
|||||||
|
|
||||||
Open access C++ course, University of Verona (UNIVR), Italy
|
Open access C++ course, University of Verona (UNIVR), Italy
|
||||||
|
|
||||||
[Short list of C++ online compilers](https://rawgit.com/FedericoUnivr/Modern-CPP-Programming/master/html/OnlineCompiler.html)
|
### Essential Tool ###
|
||||||
|
|
||||||
|
Online compiler and execution: [CompilerExplorer](https://godbolt.org/)
|
||||||
|
|
||||||
|
* for code execution: [Add new..] -> [execution only]
|
||||||
|
|
||||||
## TOPICS ##
|
## TOPICS ##
|
||||||
|
|
||||||
[**1. Introduction**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/01.Introduction.pdf)
|
**1. Introduction**
|
||||||
|
|
||||||
* A Little History of C/C++ Programming Languages
|
* A Little History of C/C++ Programming Languages
|
||||||
* C++ Philosophy
|
* C++ Philosophy
|
||||||
* Why C++?
|
* Why C++?
|
||||||
* Course References
|
* Course Overview and References
|
||||||
|
* Who I Am
|
||||||
|
|
||||||
[**2. Basic Concepts I**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/02.Basic_Concepts_I.pdf)
|
**2. Basic Concepts I**
|
||||||
|
|
||||||
|
* Prerequirements: Compiler, editor, etc.
|
||||||
* Hello World
|
* Hello World
|
||||||
* C++ Primitive Types
|
* C++ Primitive Types
|
||||||
* auto and decltype
|
* Integral Data Types
|
||||||
* Floating-point Arithmetic
|
* Floating-point Arithmetic
|
||||||
* (Strongly Typed) Enumerators
|
* Floating-point Issues
|
||||||
* Union and Bitfield
|
|
||||||
* Math Operators
|
|
||||||
* Statement and Control Flow
|
|
||||||
|
|
||||||
[**3. Basic Concepts II**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/03.Basic_Concepts_II.pdf)
|
**3. Basic Concepts II**
|
||||||
|
|
||||||
|
* Enumerators
|
||||||
|
* `union` and Bitfield
|
||||||
|
* `using`, `decltype`, and `auto`
|
||||||
|
* Math Operators
|
||||||
|
* Statements and Control Flow
|
||||||
|
|
||||||
|
**4. Basic Concepts III**
|
||||||
|
|
||||||
* Memory Management: Heap and Stack
|
* Memory Management: Heap and Stack
|
||||||
|
* Initialization
|
||||||
* Pointers and References
|
* Pointers and References
|
||||||
* sizeof Operator
|
* `sizeof` Operator
|
||||||
* const / constexpr
|
* `const` and `constexpr`
|
||||||
* Explicit Type Conversion (Cast)
|
* Explicit Type Conversion
|
||||||
|
|
||||||
[**4. Basic Concepts III**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/04.Basic_Concepts_III.pdf)
|
**5. Basic Concepts IV**
|
||||||
|
|
||||||
* Declaration and Definition
|
* Declaration and Definition
|
||||||
* Functions
|
* Functions
|
||||||
* Preprocessing
|
* Preprocessing
|
||||||
|
|
||||||
[**5. Utilities**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/05.Utilities.pdf)
|
**6. Utilities**
|
||||||
|
|
||||||
* I/O Stream
|
* I/O Stream
|
||||||
* Filesystem Library
|
* Filesystem Library
|
||||||
* Math Library
|
* Math Functions
|
||||||
* Algorithm Library
|
* Algorithm Library
|
||||||
* String and String View
|
* `std::string` and `std::string_view`
|
||||||
* Random Numbers
|
* Random Numbers
|
||||||
* Time Measuring
|
* Time Measuring
|
||||||
|
|
||||||
[**6. C++ Object Oriented Programming I**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/06.Object_Oriented_I.pdf)
|
**7. C++ Object Oriented Programming I**
|
||||||
|
|
||||||
* C++ Classes and Hierarchy
|
* C++ Classes
|
||||||
* Constructor
|
* Class Constructor
|
||||||
* Copy Construcor
|
* Copy Construcor
|
||||||
* Destructor
|
* Class Destructor
|
||||||
* Class Keyword: this, static, const, mutable, using, friend, delete
|
* Initialization and Defaulted Members
|
||||||
|
* Class Keywords
|
||||||
|
|
||||||
[**7. C++ Object Oriented Programming II**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/07.Object_Oriented_II.pdf)
|
**8. C++ Object Oriented Programming II**
|
||||||
|
|
||||||
* Polymorphism
|
* Polymorphism
|
||||||
* Keyword: virtual, override, final
|
* Operator overloading
|
||||||
* Operator overloading: <<, (), =
|
** Special Objects
|
||||||
* Special Object: Aggregate, Trivial class, Standard layout, POD
|
|
||||||
|
|
||||||
[**8. C++ Templates and Meta-programming I**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/08.Templates_I.pdf)
|
**9. C++ Templates and Meta-programming I**
|
||||||
|
|
||||||
* Function Templates
|
* Function Templates
|
||||||
* Type Deduction
|
* Compile-Time Utilities
|
||||||
* Compile-Time Utilities: static_assert, decltype, declval, using
|
|
||||||
* Type Traits
|
* Type Traits
|
||||||
* Template Parameters
|
* Template Parameters
|
||||||
|
|
||||||
[**9. C++ Templates and Meta-programming II**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/09.Templates_II.pdf)
|
**10. C++ Templates and Meta-programming II**
|
||||||
|
|
||||||
* Class Templates
|
* Class Templates
|
||||||
* Template Meta-Programming
|
* Template Meta-Programming
|
||||||
* SFINAE
|
* SFINAE: Substitution Failure Is Not An Error
|
||||||
* Variadic Template
|
* Variadic Template
|
||||||
* STD Template Utility
|
* STD Template Utility
|
||||||
|
|
||||||
[**10. Containers, Iterators, and Algorithms**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/10.Iterators_Containers_Alg.pdf)
|
**11. Containers, Iterators, and Algorithms**
|
||||||
|
|
||||||
* Containers and Iterators
|
* Containers and Iterators
|
||||||
* Sequence Containers: array, vector, list, deque, forward_list
|
* Sequence Containers: `array`, `vector`, `list`, `deque`, `forward_list`
|
||||||
* Associative Containers: set, map
|
* Associative Containers: `set`, `map`
|
||||||
* Container Adaptors: stack, queue, priority_queue
|
* Container Adaptors: `stack`, `queue`, `priority_queue`
|
||||||
* Implement a Custom Iterator
|
* Implement a Custom Iterator
|
||||||
* Iterator Utility Methods
|
* Iterator Utility Methods
|
||||||
* Algorithms Library
|
* Algorithms Library
|
||||||
* Lambda Expressions
|
* Lambda Expressions
|
||||||
|
|
||||||
[**11. Translation Units**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/11.Translation_Units.pdf)
|
**12. Translation Units**
|
||||||
|
|
||||||
* Basic concepts, linkage, scope
|
* Basic Concepts
|
||||||
|
* Linkage
|
||||||
* Variables Storage
|
* Variables Storage
|
||||||
* Dealing with Multiple Files and Templates
|
* Function Template
|
||||||
* #include Issues
|
* Class Template
|
||||||
|
* Undefined Behavior and Summary
|
||||||
|
* `#include` Issues
|
||||||
* Namespace
|
* Namespace
|
||||||
* Libraries
|
* How to Compile: static and dynamic libraries
|
||||||
|
|
||||||
[**12. Code Conventions**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/12.Code_Convention.pdf)
|
**13. Code Conventions**
|
||||||
|
|
||||||
* Coding Style
|
* C++ Project Organization
|
||||||
* Naming and formatting
|
* Coding Styles and Conventions
|
||||||
* Maintainability and Documentation
|
* `#include` and `namespace`
|
||||||
* C++ Guidelines
|
* Variables and Prepossessing
|
||||||
|
* Functions and Classes
|
||||||
|
* Modern C++ Features
|
||||||
|
* Control Flow
|
||||||
|
* Naming and Formatting
|
||||||
|
|
||||||
[**13. Debugging and Tools**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/13.Debugging_Tools.pdf)
|
**14. Ecosystem**
|
||||||
|
|
||||||
* Debugging: Assertion, execution, memory, sanitizers
|
* Execution Debugging: `gdb` and `assert`
|
||||||
|
* Memory Debugging: `valgrind`
|
||||||
|
* Sanitizers: `address`, `leak`, `memory`, `undefined behavior`
|
||||||
|
* Debugging Summary
|
||||||
* CMake
|
* CMake
|
||||||
* Code Checking and Analysis: warnings and static analyzers
|
* Code Checking and Analysis: `warnings` and `static analyzers`
|
||||||
* Code Quality (Linter)
|
* Code Quality: `linters`
|
||||||
* Code Testing
|
* Code Testing: `unit test`, `coverage`
|
||||||
* Code Commenting (Doxygen)
|
* Code Commenting: `doxygen`
|
||||||
* Code Statistics: lines, cyclomatic complexity
|
* Code Statistics: `lines count`, `cyclomatic complexity`
|
||||||
* Other Tools: formating, code explorer
|
* Other Tools: code `formating`, `exploring`, `benchmarking`
|
||||||
|
|
||||||
[**14. Advanced Topics**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/14.Advanced_Topics.pdf)
|
**15. Advanced Topics**
|
||||||
|
|
||||||
* Move Semantic
|
* Move Semantic
|
||||||
|
* Copy Elision and RVO
|
||||||
* Type deduction
|
* Type deduction
|
||||||
* C++ Idioms: rule of three/five, singleton, PILP, CRTP
|
* C++ Idioms: `rule of zero/three/five`, `singleton`, `PILP`, `CRTP`
|
||||||
* Smart Pointers
|
* Smart Pointers
|
||||||
* Concurrency
|
* Concurrency: `std::thread`
|
||||||
|
|
||||||
[**15. Optimization**](https://github.com/FedericoUnivr/Modern-CPP-Programming/blob/master/15.Optimization.pdf)
|
**16. Optimization I**
|
||||||
(ongoing)
|
|
||||||
|
|
||||||
* Concepts: optimization cycles, complexity, performane bounds
|
* General Concepts: asymptotic complexity, optimization cycle, Ahmdal Law, etc.
|
||||||
* I/O Operations
|
* I/O Operations
|
||||||
* Memory Locality and Memory Access Patterns
|
* Locality and Memory Access Patterns
|
||||||
* Arithmetic
|
* Arithmetic
|
||||||
* Control Flow
|
* Control Flow
|
||||||
* Functions
|
* Functions
|
||||||
* C++ Objects
|
* C++ Objects
|
||||||
|
|
||||||
|
**17. Optimization II**
|
||||||
|
|
||||||
* Compiler Optimizations
|
* Compiler Optimizations
|
||||||
* Libraries and Data Structures
|
* Libraries and Data Structures
|
||||||
* Profiling
|
* Profiling
|
||||||
* Parallel Computing
|
* Parallel Computing
|
||||||
* Compile Time
|
|
||||||
|
|
||||||
### Reporting bugs and contributing ###
|
### Reporting bugs and contributing ###
|
||||||
|
|
||||||
If you find any typos please report them by using the repository
|
If you find any typos please report them by using the repository
|
||||||
(**issues** panel).
|
(**issues** panel).
|
||||||
We are also ready to engage in improving and extending the course material.
|
|
||||||
|
|
||||||
## Author ##
|
## Author ##
|
||||||
|
|
||||||
* `Federico Busato`, Dept. of Computer Science, University of Verona (Italy) [federico.busato@univr.it](mailto:federico.busato@univr.it),
|
* `Federico Busato`, Dept. of Computer Science, University of Verona (Italy) [federico.busato@univr.it](mailto:federico.busato@univr.it),
|
||||||
now Nvidia Corporation ([fbusato@nvidia.com](mailto:fbusato@nvidia.com))
|
now Nvidia Corporation ([fbusato@nvidia.com](mailto:fbusato@nvidia.com))
|
||||||
* `Alessandro Danese`, Dept. of Computer Science, University of Verona (Italy) [alessandro.danese@univr.it](mailto:alessandro.danese@univr.it)
|
|
||||||
|
|
||||||
## License ##
|
## License ##
|
||||||
|
|
||||||
> BSD 3-Clause License
|
> BSD 3-Clause License
|
||||||
>
|
>
|
||||||
> Copyright (c) 2019, Modern C++ Programming
|
> Copyright (c) 2020, Modern C++ Programming
|
||||||
> All rights reserved.
|
> All rights reserved.
|
||||||
>
|
>
|
||||||
> Redistribution and use in source and binary forms, with or without
|
> Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
<html>
|
|
||||||
<body background="bgimage.jpg">
|
|
||||||
<font size="8"> Online C++ Compilers </font>
|
|
||||||
<font size="6">
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="https://wandbox.org/"> Wandbox </a> <font size="5">(support different compilers)</font>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="http://cpp.sh/"> C++ Shell </a>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="https://www.onlinegdb.com/online_c++_compiler"> OnlineGdb </a>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="https://ideone.com/"> IDEone </a>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="https://aws.amazon.com/it/cloud9/"> Cloud9 </a> (online virtual machine)
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
</font>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
html/bgimage.jpg
BIN
html/bgimage.jpg
Binary file not shown.
Before Width: | Height: | Size: 113 KiB |
Reference in New Issue
Block a user