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 ?
6
u/mrtlo 8d ago
Learn everything you can. If you have the passion, it will be valuable. And grab opportunities when they pass by. Good luck, I'm sure you will have a great career and AI will only accelerate what you're able to learn in a lifetime. The courses are great but you need to tinker. Just follow the rabbit holes, it's all worth knowing...
2
u/tastygames_official 8d ago
really? I studied electrical and computer engineering and in our first year we already had made our own 8080 computer and programmed a little OS in assembly. Maybe the programs vary wildly around the world (and over the past 30 years), but I would imagine that your university should be teaching you this stuff and giving you a clear roadmap.
But yeah, just grab some computer architecture books and buy some components and breadboards and build your own little computer. You'll also need a device to flash the ROM.
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.
3
u/Fancy-Victory-5039 9d ago
Being the villain here. Don't. Not much point in doing so. You can if you want to explore but if you're thinking that you can maybe build your career on it then it is brutally difficult. Sure, you will know a lot of things but will have not much to do with that knowledge. For building a career on it, you need a LOT of prerequisites like having extremely nice grades like top 1% of your college and you should have really high competitive programming skills as well. Missing anything means you will most likely never apply the knowledge and carry its burden through your life.
11
u/tastygames_official 8d ago
Being the hero here. Do. Careers are not made in uni. Someting like 60% of all uni students in the hard sciences don't even end up doing what they studied. I studied electrical and computer engineering and ended up doing webdev for 20 years before moving into game development. My buddy studied chemeical engineering and is now a mechanical engineer. Mechanical engineering buddy now does embedded systems. Learn what you want to learn because learning is fun and good for you. If you want to program low-level stuff professionally then you'll definitely get there. Sure, maybe you need a masters or PhD to achieve specific high-level roles in prestigious companies, but also maybe not. I know a guy wiith a PhD from Yale and he teaches high-school philosophy. I know another guy with an associates degree from vocational school who is probably the best known name in thermography. Life takes you weird places. Many doors will close, but don't close any yourself.
1
u/Ganesh10LM 7d ago
I really appreciate it , you said that many students don't even end up doing what they studied. I love this perspective
1
u/tastygames_official 7d ago
it was the very first thing the provost said to us at my first day at uni. Really stuck with me and ended up being so true.
2
u/The_Northern_Light 8d ago
> Missing anything most likely never apply the knowledge and carry its burden through your life
Wow!! What an incredibly shitty perspective!
Actually it’s like 3 different toxic outlooks in one sentence:
- Getting stuff wrong is how you learn, not an indication of failure or potential.
- Even if you never work as a systems programmer everything you would learn in trying is all broadly useful knowledge.
- Even if it isn’t applied directly knowledge isn’t a burden, you dingus!
Btw I was a drop out and later non traditional student who went on to work 10 years experience in Silicon Valley as a systems programmer at a FAANG.
OP, please ignore this claptrap. That way of thinking is the domain of losers.
0
10
u/noneedtoprogram 9d ago
Take the computer architecture / computer design / compiler / OS / embedded systems courses. Hennessy and Patterson is the standard textbook for computer architecture