You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+43-45Lines changed: 43 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,46 +2,42 @@
2
2
3
3
> Built in parallel with **IFT1166 — Programmation orientée objet en C++** · Université de Montréal · Hiver 2026
4
4
5
-
This repository documents my structured learning journey in C++ as a public learning artifact. It complements the coursework from IFT1166 with additional exploration, personal projects, and curated resources.
6
-
7
-
## Primary Goal
8
-
9
-
**Portfolio artifact**: show clear progression, organized thinking, and clean code habits while mastering core C++.
10
-
11
-
## Current Scope
12
-
13
-
Early–intermediate C++ with focus on:
14
-
15
-
- Core language fundamentals
16
-
- Multi-file project structure
17
-
- Introductory OOP
18
-
- Manual array-based data handling
19
-
- Basic file I/O
20
-
- Macros and preprocessor basics
21
-
- Small console projects
22
-
23
-
## Not Covered Yet (Planned)
24
-
25
-
- STL-heavy work (`vector`, `map`, etc.)
26
-
- Templates
27
-
- Smart pointers and RAII depth
28
-
- Advanced exception handling
29
-
- Modern C++ features in depth
30
-
- Unit test frameworks
31
-
- CMake and advanced build systems
32
-
33
-
## Repository Structure
34
-
35
-
-`fundamentals/`
36
-
-`modular-programming/`
37
-
-`oop/`
38
-
-`file-handling/`
39
-
-`macros/`
40
-
-`projects/`
41
-
-`experiments/`
42
-
-`resources/`
43
-
-`build-notes/`
44
-
-`course-work/`, `clean-examples/`, `refactored/`
5
+
A public learning repository documenting my progression through C++ — from language fundamentals to object-oriented design to applied console projects. It complements my IFT1166 coursework with additional exploration, personal projects, curated resources, and community insights.
6
+
7
+
## Why Learn in Public?
8
+
9
+
-**Accountability** — committing progress in the open keeps momentum.
10
+
-**Portfolio** — show clear progression, organized thinking, and clean code habits.
11
+
-**Community** — collect feedback, resources, and perspectives from other developers.
12
+
-**Future reference** — a searchable personal knowledge base I can come back to.
13
+
14
+
## What's Inside
15
+
16
+
| Folder | Contents |
17
+
|--------|----------|
18
+
|`fundamentals/`| Variables, control flow, functions, arrays |
19
+
|`modular-programming/`| Header/source separation, include guards, compilation notes |
20
+
|`oop/`| Classes, constructors, member functions, inheritance, polymorphism |
Copy file name to clipboardExpand all lines: UPDATES.md
+54-2Lines changed: 54 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,54 @@
1
1
# UPDATES
2
2
3
-
Changelog for **PtiCalin/cpp** — C++ Learning Repository.
3
+
Changelog for **PtiCalin/cpp** — C++ Learning in Public.
4
+
5
+
---
6
+
7
+
## 2026-03-27
8
+
9
+
### Added
10
+
11
+
-**`.github/ISSUE_TEMPLATE/`** — Three issue form templates: Bug Report (`bug-report.yml`), New Content (`new-content.yml`), Question (`question.yml`), plus `config.yml` with blank issues enabled.
12
+
-**`.github/workflows/ci.yml`** — CI workflow: syntax-checks all `.cpp` files on push/PR to `main`.
13
+
-**`.github/workflows/label-sync.yml`** — Syncs repo labels from `.github/labels.yml`.
-**`.github/.gitmessage`** — Commit message template with type prefixes (`Add`, `Fix`, `Refactor`, etc.).
19
+
-**`CONTRIBUTING.md`** — Contribution guidelines, code style, commit conventions, and checklist.
20
+
-**`resources/RESSOURCES.md`** — Curated resource list: official references, tutorials, books, tools, community picks, topic deep dives, and community insights.
21
+
-**`resources/notes/`** — Blank reading-note files for every listed resource (13 files), linked from the resource tables.
22
+
-**`resources/` section in `ROADMAP.md`** — Cross-link to the resources page.
23
+
24
+
### Changed
25
+
26
+
-**`README.md`** — Rewritten as "C++ — Learning in Public": added motivation section, descriptive folder table, progress summary, link to `CONTRIBUTING.md` and related repos.
27
+
-**`ROADMAP.md`** — Added Resources section at the bottom.
28
+
29
+
---
30
+
31
+
## 2026-03-27
32
+
33
+
### Added
34
+
35
+
-**`resources/README.md`** — Initial resource page with official references, tutorials, books (including *C++ Essentials* by Sharam Hekmat), tools, and empty community/deep-dive tables.
36
+
37
+
### Changed
38
+
39
+
-**`README.md`** — Added IFT1166 / UdeM subtitle, related repositories table linking to TP2 assignment repo, and `resources/` to the structure list.
-**`projects/employee-management/exemple-employes.cpp`** — Employee management system for TechNova Solutions Inc. (search, stats, CRUD, sorting, CSV/JSON export).
Copy file name to clipboardExpand all lines: resources/RESSOURCES.md
+84-20Lines changed: 84 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,35 +6,36 @@ Curated collection of C++ resources — tutorials, references, tools, and commun
6
6
7
7
## Official References
8
8
9
-
| Resource | Description |
10
-
|----------|-------------|
11
-
|[cppreference.com](https://en.cppreference.com/)| The go-to C++ standard library reference. |
12
-
|[isocpp.org](https://isocpp.org/)| Official ISO C++ site — news, FAQ, and the C++ Core Guidelines. |
13
-
|[C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)| Best-practice guidelines maintained by Bjarne Stroustrup & Herb Sutter. |
9
+
| Resource | Description | Reading Notes |
10
+
|----------|-------------|:---:|
11
+
|[cppreference.com](https://en.cppreference.com/)| The go-to C++ standard library reference. |[notes](notes/cppreference.md)|
12
+
|[isocpp.org](https://isocpp.org/)| Official ISO C++ site — news, FAQ, and the C++ Core Guidelines. |[notes](notes/isocpp.md)|
13
+
|[C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)| Best-practice guidelines maintained by Bjarne Stroustrup & Herb Sutter. |[notes](notes/cpp-core-guidelines.md)|
14
14
15
15
## Learning & Tutorials
16
16
17
-
| Resource | Level | Notes |
18
-
|----------|-------|-------|
19
-
|[learncpp.com](https://www.learncpp.com/)| Beginner–Intermediate | Excellent free tutorial series, very thorough. |
20
-
|[The Cherno — C++ playlist](https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)| Beginner–Intermediate | Popular YouTube series covering modern C++ concepts. |
21
-
|[Programiz C++](https://www.programiz.com/cpp-programming)| Beginner | Quick reference with short runnable examples. |
17
+
| Resource | Level | Notes | Reading Notes |
18
+
|----------|-------|-------|:---:|
19
+
|[learncpp.com](https://www.learncpp.com/)| Beginner–Intermediate | Excellent free tutorial series, very thorough. |[notes](notes/learncpp.md)|
20
+
|[The Cherno — C++ playlist](https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)| Beginner–Intermediate | Popular YouTube series covering modern C++ concepts. |[notes](notes/the-cherno-cpp.md)|
21
+
|[Programiz C++](https://www.programiz.com/cpp-programming)| Beginner | Quick reference with short runnable examples. |[notes](notes/programiz-cpp.md)|
22
22
23
23
## Books
24
24
25
-
| Title | Author(s) | Notes |
26
-
|-------|-----------|-------|
27
-
|*Programming: Principles and Practice Using C++*| Bjarne Stroustrup | Great intro from the language creator himself. |
28
-
|*A Tour of C++*| Bjarne Stroustrup | Concise overview of modern C++. |
29
-
|*Effective Modern C++*| Scott Meyers | Deep dive into C++11/14 best practices. |
25
+
| Title | Author(s) | Notes | Reading Notes |
26
+
|-------|-----------|-------|:---:|
27
+
|*Programming: Principles and Practice Using C++*| Bjarne Stroustrup | Great intro from the language creator himself. |[notes](notes/programming-principles-stroustrup.md)|
28
+
|*A Tour of C++*| Bjarne Stroustrup | Concise overview of modern C++. |[notes](notes/tour-of-cpp.md)|
29
+
|*Effective Modern C++*| Scott Meyers | Deep dive into C++11/14 best practices. |[notes](notes/effective-modern-cpp.md)|
30
+
|*C++ Essentials*| Sharam Hekmat | Free, 311-page intro to the C++ language — practical and to the point, no deep OOP. |[notes](notes/cpp-essentials.md)|
30
31
31
32
## Tools & Environments
32
33
33
-
| Tool | Description |
34
-
|------|-------------|
35
-
|[Compiler Explorer (Godbolt)](https://godbolt.org/)| Online tool to view assembly output of C++ code in real time. |
36
-
|[C++ Insights](https://cppinsights.io/)| Shows what the compiler actually does with your code (template expansion, etc.). |
37
-
|[OnlineGDB](https://www.onlinegdb.com/)| Online C++ compiler and debugger. |
34
+
| Tool | Description | Reading Notes |
35
+
|------|-------------|:---:|
36
+
|[Compiler Explorer (Godbolt)](https://godbolt.org/)| Online tool to view assembly output of C++ code in real time. |[notes](notes/godbolt.md)|
37
+
|[C++ Insights](https://cppinsights.io/)| Shows what the compiler actually does with your code (template expansion, etc.). |[notes](notes/cpp-insights.md)|
38
+
|[OnlineGDB](https://www.onlinegdb.com/)| Online C++ compiler and debugger. |[notes](notes/onlinegdb.md)|
38
39
39
40
## Community Picks
40
41
@@ -60,3 +61,66 @@ Longer articles or videos on focused topics. Tag with the relevant phase from th
60
61
---
61
62
62
63
*Add new finds here as you go. A quick one-line comment on why each resource is useful helps future-you.*
64
+
65
+
---
66
+
67
+
## Community Insights
68
+
69
+
Interesting comments, advice, and perspectives shared by people in the C++ community — LinkedIn, Reddit, Discord, etc. Stored here to reflect on and revisit.
70
+
71
+
---
72
+
73
+
### On `std` and the Standard Library
74
+
75
+
> I still avoid std as much as possible. The threading abstractions are fine, but `std::vector`, `std::string` and the standard allocation system needs to be deprecated. `std::string` made sense in the 1990s when each operating system had their own incompatible character encoding without any multi-byte characters, but in hindsight its name sounds like the go-to solution for holding a string, which it is not when Unicode is the default in modern operating systems, and then you need to use `std::u32string` as a beginner or `std::u8string` as an experienced developer who knows how UTF-8 is encoded in memory.
76
+
>
77
+
> — *David Piuva*
78
+
79
+
**Takeaway:**`std::string` is not as universal as its name implies — Unicode support requires `std::u8string` or `std::u32string`. Worth keeping in mind as I move past beginner examples.
80
+
81
+
> **Q:** What replaces `std::vector`? `boost::stable_vector` has reference stability and good cyclomatic complexity, but if not needing stable references, it's far slower at growing.
82
+
>
83
+
> — *Callan Gray*
84
+
85
+
> For performance critical cases, I use a SIMD and cache aligned `Buffer` type with reference counting. Then I can fetch bound-checked pointers from the buffer to use with SIMD operations. In debug mode I get checks for out-of-bound and alignment errors. With extra safe debug settings, it catches double free, use after free, use from wrong thread, et cetera.
86
+
>
87
+
> When performance is not critical, I use a safer container that only allows access by index, to reduce the risk of accessing invalidated memory, but you can still get references to elements from the `[]` operator, because otherwise it would be useless for storing objects with side-effects in member methods.
88
+
>
89
+
> The problem with `std::vector` is that it is trying to be both at once.
90
+
>
91
+
> — *David Piuva (reply)*
92
+
93
+
**Takeaway:**`std::vector` is fine for learning but has real trade-offs in production — reference stability vs. performance. Custom containers exist for a reason. Revisit this once I hit Phase 6 (RAII, smart pointers, advanced memory).
94
+
95
+
---
96
+
97
+
### On Learning Approach and Operator Overloading
98
+
99
+
> If you are new to C++ or trying it out, I'd say try the operator overloading, creating manual arrays using constructor, freeing them in destructor with messages, `fstream`, then low level file handling, etc. Try using `struct` for data object and `class` as controllers. Just a suggestion.
100
+
>
101
+
> Operator overloading example:
102
+
> ```cpp
103
+
> structCategory {
104
+
> int id;
105
+
> char name[31];
106
+
>
107
+
> friend ostream& operator<<(ostream& os, const Category& c) {
108
+
> os << c.id << " " << c.name;
109
+
> return os;
110
+
> }
111
+
> };
112
+
>
113
+
> // usage:
114
+
> Category c{1, "Beverages"};
115
+
> cout << c << endl;
116
+
> ```
117
+
118
+
**Takeaway:** Good suggested learning order that aligns with my ROADMAP. The `struct` for data / `class` for controllers pattern is a clean mental model. Already covered operator overloading in Phase 3 — see [`ex13-surcharge-operateurs.cpp`](../course-work/ex13-surcharge-operateurs.cpp).
119
+
120
+
---
121
+
122
+
### On Long-Term C++ Journey and Frameworks
123
+
124
+
> I had started exploring C++ way back in 1995, but since I was a beginner then, and hence did not get opportunities. Hence stopped going ahead with it. Now that I retired from my company 4+ years ago, I thought to delve into different technologies, C++ being one of them. As you progress, you might be interested in looking at **Drogon**, C++ MVC framework.
125
+
126
+
**Takeaway:** Look into [Drogon](https://github.com/drogonframework/drogon) later — a C++ MVC web framework. Could be a fun project idea beyond IFT1166 scope (Phase 6+).
0 commit comments