The Course Outline for "Hello, my friendly C++ teacher"
1 Introduction to C++ and programming concepts
- History and basic overview of C++ language
- Setting up a C++ development environment (e.g., compiler, IDE)
- Basic syntax and structure of a C++ program
- Variables and data types (e.g., int, char, bool, float)
- Operators (e.g., arithmetic, assignment, comparison)
- Control structures (e.g., if/else statements, for loops, while loops)
- Functions (e.g., declaring, defining, calling)
- Arrays and strings
- Pointers and references in C++
- Basic debugging techniques
- Handling Text in C++
2 Object-oriented programming in C++
- Introduction to object-oriented programming concepts (e.g., encapsulation, polymorphism, inheritance)
- Classes in C++ (e.g., defining, instantiating, accessing members)
- Constructors and destructors in C++
- Access modifiers (e.g., public, private, protected)
- Inheritance in C++ (e.g., derived classes, single inheritance, multiple inheritance)
- Polymorphism in C++ (e.g., virtual functions, function overriding)
- Abstract classes and pure virtual functions in C++
- Object-oriented design principles (e.g., SOLID)
3 Templates and generic programming in C++
- Introduction to templates and generic programming
- Function templates in C++
- Class templates in C++
- Template specialization in C++
- Template type deduction in C++
- Template metaprogramming in C++
4 The Standard Template Library (STL) in C++
- Introduction to the STL and its components (e.g., containers, algorithms)
- Sequential containers (e.g., vector, list, deque)
- Associative containers (e.g., set, multiset, map, multimap)
- Container adaptors (e.g., stack, queue, priority_queue)
- Algorithms (e.g., sort, search, transform)
- Iterators in the STL
- Function objects (e.g., functors, lambdas)
- Customizing the STL (e.g., allocators, comparators)
5 Exception handling and Input/output (I/O) in C++
- Introduction to exception handling and its benefits
- Throwing and catching exceptions in C++
- Exception types and hierarchy in C++
- Handling exceptions with try/catch blocks
- Exception safety and the use of RAII in C++
- Creating custom exception classes in C++
- Introduction to I/O in C++
- Reading and writing to the console using cin and cout
- Working with files in C++ (e.g., opening, reading, writing, closing)
- Formatted I/O in C++ (e.g., setw, setprecision)
- Streams in C++ (e.g., fstream, stringstream)
- Manipulators in C++ (e.g., endl, setw, setprecision)
- I/O errors and exceptions in C++
6 Advanced C++ and Program Design
- Type conversions in C++ (e.g., explicit, implicit, static_cast, dynamic_cast)
- The typeid operator in C++
- Dynamic casting in C++
- Function overloading in C++
- Operator overloading in C++
- Templates and advanced generic programming techniques in C++
- The C++11, C++14, and C++17 standard libraries and language features
- Software design and architecture
This course outline covers a wide range of topics that are essential for a solid foundation in C++ programming.
It is organised in a logical progression that builds upon the concepts introduced in earlier topics, allowing students to gradually increase their knowledge and skills as they progress through the course.
In addition, we are offering the following auxiliary material, which may be useful for new programmers to learn more about:
Data structures and algorithms - these are fundamental concepts that are used in many different areas of computer science and can help you write more efficient and effective code.
Operating systems - understanding how an operating system works can be helpful for understanding how your code interacts with the underlying hardware and software of a computer.
Computer networks - learning about how computers communicate with each other over a network can be useful for developing distributed systems or creating networked applications.
Databases - being able to store and retrieve data is an important skill for many applications, and learning about databases can help you do this efficiently and effectively.
User experience (UX) design - if you are interested in creating applications that are easy to use and intuitive for the end user, learning about UX design can be helpful.
CSCP - A short primer on the technicalities of the C++ programming language.
- Algebra
- Geometry
- Trigonometry
- Vectors
- Matrices