Skip to content

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.

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.

One recruiter in aerospace and defense wrote that embedded software engineers are the hardest and most expensive candidates to find in that industry (opens in a new tab).

Be ready to talk about both hardware and software.

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.

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.

A lab script turns a bench measurement into a test. Sources: PyVISA (opens in a new tab) and pytest (opens in a new tab).

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.

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.

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.

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.