Motivation
I’ve had a few odd discussions with students from the Electronics branch related to software development. Broadly,
- sniff I’m in electronics, don’t expect me to dabble in ugh software
- We don’t get the subjects that CS students do, so aren’t as prepared for interviews as they are
- eh, I’m just going to do it
There’s so much to unpack here…
Firstly, software (and data structures, and algorithms, and …) is not the domain of any one branch. It is a tool to be used just like any other and a very powerful tool at that. So if you’re being snobbish about not doing any software at the altar of “electronics,” you’re just shooting yourself in the foot. Most electronics is software, and the more comfortable you are with this tool, the better of an electronics engineer you will be. Plus, software can help you understand electronics much more than you otherwise would.
Second, there are a lot of opportunities to develop software skills. The courses that you don’t get to do aren’t all that important, you can learn the core concepts by yourself. There are a few (Databases!) that you won’t get exposure to, but you haven’t really missed much. Read on!
Finally, self-study is the best way to develop these skills. Here’s the big secret:
the only way to learn how to program …. is to program
The obvious question is: “what do I program?”
This is a series of posts that presents program suggestions, what to look for and what to focus on. If you go through these, you will be a better electronics engineer and a better software developer than 99% of your peers, irrespective of their major. I’ve gone through the typical subjects from the second year onwards, and defined assignments that (i) build on the theory that you learn (ii) expose you to different implementation concepts (iii) improve your understanding of data structures and algorithms
One last thing: the discipline of programming
- All your implementation should have a reasonable testing strategy in place
- All your code should be instrumented to measure the performance of key parts of the code
- All C and C++ code should be compiled with -Wall
- All code should be valgrind-certified error-free
- All code should be in a version control system
I’ll talk about each of these points in a later post.
now let’s
Shut Up and Code!
Program ideas on:
- CMOS Characteristics
- RC Analysis
- Digital Circuit Simulation
- The Poor Man’s Square Wave Generator
- The Rich Man’s Square Wave Generator
- Modulation
- Convolution
- Quantization
- more coming soon — keep checking back!
2 responses to “Programming for the Electronics Engineering Student”
[…] Article series on programming for electronics engineers […]
Hi I stumbled on this blog, thanks to Prof Kia crediting you for C++ materials in EE5301, as someone who just completed a Silicon internship at Facebook. I did stuff in the internship using regular expressions to generate instructions to control clocks and power for a new chip.
Given that Moore’s law has ended, that wall between CS and EE guys to create high performance digital computers has to be broken down. The CS guys can’t pass the buck to the EE guys and vice versa, both have to sit down together to extract the maximum performanc