Student looking to get into their first c++ project

Hello everyone,
I am a student currently enrolled in a 4 year, and I have finished at this point 4 coding classes, (3 c++, 1 java) and I am currently enrolled in 5. However, this semester I feel that I am not being challenged and after speaking to one of my professors he suggested to look into an open source project.

What would the community suggest I do? Where would I start?
Keep in mind this will be my first project outside of the classroom, and my current knowledge is:
C++:
Objects Orientated Programming
Inheritance
Exception Handling (creating my own exceptions too)
Smart Pointers/ (Raw Pointers (to a large extent))
Move Semantics, Perfect Forwarding
STL libraries (vectors, maps, pairs, stacks, queues, etc)
Also know some bugs associated with using maps
Lambda Expressions
Templates
Variadic Templates
VERY basic concurrency
Know basic work around when two threads use one resource.
Basic Regular Expression
Barely touched on Dynamic Memory Allocator
Java:
Just the bare basics such as Classes, Inheritance, and Exception Handling,
JPanel

Final notes:
If it matters at all I got A’s on all my C++ classes, and a B in Java. In the four year I transferred into they have strong emphasis in Java and their graduate program is in Cyber Security. I like c++ more than java too. Alot more.

Current classes:
Advance Java (pretty much OOP)
Data Structures (using java)
Assembly (intro to MASM)
Programming Languages (touches lightly on several high level languages)
Computers and Society (an ethics course pretty much)

Any and all advice is greatly appreciated. Thank you in advance.

1 Like

I would suggest, before you start out in some open source projects or the like, do some work using a bigger framework. Qt for instance. It will get you used to reading documentations and using other peoples code. When/If you should start contributing code to open source projects you will need to have that skill. Also, at least for me, I found that the tasks in programming classes are not really transferable into the real world. Learn to deal with complex problems, in the sense that there will be problems created (indirectly) by other peoples code. This can take quite a while to get used to especially since libraries and such are often poorly documented.

That’s what I would have done, if I had my current knowledge when I started out.

Try grpc, build a block storage server (e.g. something that appends blocks to a file while maintaining a map of block number + offset, like log structured block device), implement a client that speaks NBD on one side, grpc on another. Benchmark till you can get 1GB/s (250k writes), opensource under Apache license.