Software
Write software that touches hardware. For an EECS student, that means firmware on a microcontroller, Python that runs a lab instrument, or a testbench for an FPGA design. Put each project on GitHub with a README, and give each resume line a measured number. Most of this work needs only a computer and a dev board.
Why write software that touches hardware
Section titled “Why write software that touches hardware”EE employers hire for software. Texas Instruments lists software engineer among its new-grad engineering roles (opens in a new tab), with work in embedded programming. A TI posting for a new-grad software engineer (opens in a new tab) accepts a degree in EE or ECE. It prefers C, C++, and assembly.
Be ready to talk about both hardware and software.
Embedded firmware
Section titled “Embedded firmware”Firmware is the code that runs on a microcontroller. Start bare metal, with no operating system: set up a timer, read an ADC, and handle an interrupt. The long converter entry under the hardware builds that count section on the hardware page has firmware that tunes dead time on an STM32 timer, samples input current at [X] kHz, and cuts the rail within [Y] µs of a fault.
Add a real-time operating system once bare metal works. FreeRTOS is a free kernel for microcontrollers, under the MIT license (opens in a new tab).
Follow a coding standard. Barr Group offers its Embedded C Coding Standard as a free download (opens in a new tab). It sets rules for data types, functions, macros, and variables to keep bugs out of firmware.
If you have no board yet, the section on starting on a student budget on the hardware page lists a free browser simulator for Arduino, ESP32, and STM32. Interviewers ask about volatile and interrupts, and the fundamentals from the ground up section on the how to interview page lists what to know.
Test automation and lab scripts
Section titled “Test automation and lab scripts”Lab scripts turn bench work into software. The team and research entries under the teams and undergraduate research section on the hardware page include two:
- Found [X] battery protection faults before launch review with a Python script that runs [Y] overnight charge cycles and flags any cell that drifts over [Z] mV from the pack average
- Cut test time per device from [X] to [Y] minutes with Python and PyVISA scope capture
PyVISA controls measurement instruments from Python (opens in a new tab), over GPIB, RS232, USB, or Ethernet. Put the limits in pytest (opens in a new tab) tests, so a part out of spec fails the run.
From bench measurement to test
Four steps of a lab script, in order. Capture: point PyVISA at a lab scope and capture a waveform. Compute: compute the number you would have read by hand. Check: put the limits in pytest tests. Out of spec: a part out of spec fails the run.
TI describes its product, test, and validation engineers as developing test software and hardware (opens in a new tab). Its applications engineers write software and build demos.
FPGA and HDL
Section titled “FPGA and HDL”HDL (hardware description language) describes a circuit in code, so an FPGA build is both hardware and software. Alex's FPGA equalizer is under the hardware builds that count section on the hardware page. Show how you verified the design as well as the design itself.
- cocotb lets you write testbenches for VHDL and SystemVerilog designs in Python (opens in a new tab).
- Verilator is a free, open-source Verilog and SystemVerilog simulator (opens in a new tab) that also runs lint checks.
- EDA Playground runs HDL code in the browser (opens in a new tab) on free simulators.
Show it on GitHub
Section titled “Show it on GitHub”Put each project in its own repository with a README. GitHub says a README tells people why the project is useful, what they can do with it, and how to use it (opens in a new tab). For an EE project, the README covers:
- What it does, in two sentences.
- A photo of the board or a scope capture.
- The measured result, and the instrument you measured it with.
- How to build it and flash it.
- What broke, and how you fixed it.
Pin up to six repositories to your GitHub profile (opens in a new tab), so your best work shows first. A profile README (opens in a new tab) can introduce you and link each project.
Put it on the resume
Section titled “Put it on the resume”Write a software line the way you write a hardware line: the action, the tool, and a measured result. The battery monitor line under the hardware builds that count section on the hardware page follows it: "Tracked [X] Li-ion cells within [Y] mV each on an ESP32 that streams to a Python dashboard."
Expect questions on every line. A student who landed an NVIDIA internship said the interview questions were about how they built each project and what they did (opens in a new tab).
Content by eeprep contributors (opens in a new tab), licensed CC BY 4.0 (opens in a new tab). Code licensed MIT (opens in a new tab). Source is in the eeprep (opens in a new tab), resume-generator (opens in a new tab), and company-lists (opens in a new tab) repositories.