This course introduces FPGA and SoC design concepts to engineers whose primary background is software development. Unlike other courses that assume prior hardware context, this course begins entirely from a C/Python mental model and systematically builds hardware thinking without requiring any prior knowledge of programmable logic or digital design.
All explanations are grounded in embedded software development analogies. Topics such as parallelism, memory mapped I/O, clock domains, and timing are presented in terms that a software engineer will immediately recognize, while progressively introducing the underlying hardware concepts. By the end of the course, students will understand RTL (VHDL/Verilog), Altera Quartus Prime for synthesis and place-and-route, working with Platform Designer (Qsys) to build SoC subsystems, and debugging designs using Signal Tap and the JTAG debug chain.