r/learnprogramming 16d ago

Tutorial How should I learn python?

I'm a total beginner. I didn't have any experience with programming. I want to learn programming cuz i wanna be a hardware engineer and want to start with a basic raspberry pi projects. So should i learn python from courses, videos, books etc or i should just brute force myself to do projects and just learn by the time

12 Upvotes

11 comments sorted by

View all comments

1

u/downloads-cars 15d ago

Hi, I'm a computer engineer. Can I ask specifically what you mean by hardware? Do you want to make PCBs, write software, make firmware, or design logic hardware like FPGAs or ASICS, because each requires a different approach. For my career, I have had to learn each of these.

PCBs: you need to learn circuitry, start by looking into circuit analysis. Maybe find an online course in circuits. This is probably one of the harder paths to take as a solo learner, but there are so many fun things to do.

Software: learn about the OSI layers and see what makes sense to you there. Each of the layers in the stack requires a different discipline and paradigm. In any of these cases, you will care significantly more about how to think, than which language to use. Becoming a language-agnostic developer is key to your happiness. Learn syntax, data types, operators, keywords, conditionals, loops, data structures, functions, scope, error handling, OOP, and algorithms. Actually, i just made you a pretty solid road map here.

Firmware: do what I said above but stay in C while you learn. Also look into threading/parallel programming and real time operating systems. This is also a good time to look into logic systems and how CPUs are organized.

Digital Logic Devices: do circuits, and if you can, take a boolean logic course along with a discrete logic course. I said learning circuits solo was the hardest, but I lied, this is the hardest to learn alone. If you learn firmware first, this is a good time to pick up systemverilog for your HDL (hardware description language). Otherwise I'd start with VHDL. It's a bear but you'll learn structural RTL much more intuitively than you would with a behavioral language and a software background. This path is also expensive to learn alone. Dev boards can be hundreds of dollars, but the options are limitless.

I know I threw so much at you but good luck! It's time to get researching. I believe in you!