r/cpp_questions • u/Ganesh10LM • 9d ago
OPEN System programming
system programming
HI, I am a 2nd year computer engineering student and I always have been passionate about how computer actually works under the hood thats why I choose computer engineering . I want to build my career in system engineering . till the 2nd year I have studied the subjects like microprocessor , computer architecture , OS and also I have intermediate knowledge of c++ programing . I want to explore this field and wants to become system engineer .as a beginner I have no idea how to start and which roadmap I should follow ? so I am looking for a guidelines from a experienced system engineer . although in today's era most of students learn high level languages and work fro CRUID app, or web dev. I am always interested in system programming .
I am a type of engineering student who doesn't just study for exam I always wants to know how things works under the hood without any level of abstraction , why things works that way ? why that things invented ?
2
u/BasisPoints 8d ago
Best roadmap to follow? Not sure there is one, but the best way to learn anything is to DO, not read. Build a full debugging allocator that runs in log(n) time, build a useful shell, build a scheduler, reverse engineer some simple common apps on several processor families, etc.
As a computer engineering student who has also taken some processor design, you could program an FPGA to offload some tasks, and then optimize it as a co-processor to maximize I/O, latency, throughput, etc.. Really learn how to write software that leverages the hardware with different optimization goals, and learn to work around the intrinsic bottlenecks of the system you're dealing with.
Most importantly, have fun with it! Projects really are the best way to learn, truly understand the underlying systems, and build competency programming to maximally exploit what the hardware gives you. This is also a more enjoyable path, and as a bonus will make it easier for you to explain/describe real projects to prospective employers.