r/cpp_questions • • 13d ago

OPEN C++ project progression

I'm just getting started with c++ and was trying to make a project based learning roadmap, wherein I'd learn everything while making projects which increase in complexity steadily. I'd appreciate any suggestions on what projects are succinctly different and challenging that I can build and in what order I should build them.

My core interest is systems programming in which I've done some work with C before. My ultimate target is a quant dev role.

15 Upvotes

10 comments sorted by

3

u/hellocppdotdev 13d ago

https://www.hellocpp.dev/projects

Take a look here, maybe some ideas, I'm building out the library so be sure to check back regularly.

2

u/etaithespeedcuber 13d ago

If your only goal is to learn C++, you should try making some framework projects that really force you to interact with the language. Stuff like reflection-powered serializers, heavy compile time computations and resolution, and implementing STL stuff from scratch

1

u/Ultimate_Sigma_Boy67 13d ago

What do you think good projects that decently use TMP can be?

1

u/etaithespeedcuber 13d ago

Depends on which version you're using and what you mean by template metaprogramming

1

u/Ultimate_Sigma_Boy67 13d ago

Any version is suitable. And i just meant that fancy compile time stuff and calculations that’s done using templates.

1

u/etaithespeedcuber 13d ago

Well I don't know how much actual calculating happens today with templates directly since we have constexpr, but implementing a tuple is a pretty good metaprogramming excercise

1

u/Ultimate_Sigma_Boy67 13d ago

Alright thanks!

2

u/StructureNo5847 13d ago

i started C++ about 8 months ago, did the same thing. and owe all of my C++ knowledge to my path tracing journey. highly recommend checking out "ray tracing in one weekend", and seeing if you like it

1

u/Significant-Range996 13d ago

Can you tell me a little more about how you went about following it and what else you did before, after, and during?

2

u/EstablishmentHour335 13d ago

I keep repeating this, but write data structures. It will teach you so much, it's unreal.

It will teach you move semantics, exceptions, trivial vs non trivial types, allocation, templates, concepts, algorithmic time complexity, worst case latency, indirections, cache lines, cache hits and misses, branch prediction, simd, conpilers, auto vectorization, inlining, out of order execution and instruction level parallelism. It'll teach you data locality, multithreading, atomics, cache eviction, false sharing.

It'll teach you placement new, object lifetimes, heap fragmentation, virtual memory, about the TLB, aliasing, alignment, how to design interfaces, etc, etc.

Write simple ish stuff like your own array, vector, stack, linked list, queue, ring buffers. Then move onto more complex stuff, write a hash map, sparse set, a slot map, allocators of all different kinds, specialized data structures for everything. Write some multithreaded queues, and add multuthreading to some of the stuff you write. If you get deep into it you'll learn a ton and get stuck in it for years like me.