Engineering Resources

Curated references for the Engineering vault. Focus: foundational CS, systems, embedded, control theory, and robotics.


Books

CS Fundamentals and Algorithms

  • “Introduction to Algorithms” — Cormen, Leiserson, Rivest, Stein (CLRS). The standard algorithms textbook. Dense but complete. Use as a reference, not cover-to-cover reading.
  • “The C Programming Language” — Kernighan & Ritchie (K&R, 2nd ed). The original C book. Short, precise, and still the best introduction to C. Read it cover to cover.
  • “Computer Systems: A Programmer’s Perspective” — Bryant & O’Hallaron (CS:APP). How computers actually work: bits, memory hierarchy, linking, virtual memory, processes, networking. The bridge between C and hardware.

Systems and OS

  • “Operating Systems: Three Easy Pieces” — Arpaci-Dusseau & Arpaci-Dusseau. Free online (https://pages.cs.wisc.edu/~remzi/OSTEP/). Virtualization, concurrency, persistence. Clear writing, good exercises.
  • “Unix Network Programming” — W. Richard Stevens. Socket programming, TCP/IP internals, and server design. The systems networking bible.

Embedded and Hardware

  • “The Art of Electronics” — Horowitz & Hill (3rd ed). The definitive practical electronics reference. Covers everything from resistors to op-amps to microcontroller interfacing. Keep on your desk.
  • “Making Embedded Systems” — Elecia White (O’Reilly). The engineering mindset for embedded: hardware/software interface, state machines, optimization, debugging. Excellent for judgment-level skills.

Control Theory and Robotics

  • “Feedback Control of Dynamic Systems” — Franklin, Powell, Emami-Naeini. Standard undergraduate controls textbook. Transfer functions, root locus, frequency response, state space, PID design.
  • “Probabilistic Robotics” — Thrun, Burgard, Fox. Kalman filters, particle filters, SLAM, path planning. The theoretical foundation for autonomous systems.

Online Courses and Tutorials

CourseFocusURL
Nand2TetrisBuild a computer from NAND gates to a compilerhttps://www.nand2tetris.org/
CS:APP LabsBinary bomb, attack lab, cache lab, shell labhttps://csapp.cs.cmu.edu/3e/labs.html
MIT 6.006Introduction to algorithms (video lectures)https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/
Ben Eater’s ComputerBuild a breadboard computer from scratchhttps://eater.net/8bit
MIT 6.S081 (xv6)Operating systems engineering with xv6https://pdos.csail.mit.edu/6.828/2023/
Brian Douglas (Control Systems)Control theory explained visually (YouTube)https://www.youtube.com/@BrianDouglas

Tools and Software

Programming and Build

  • GCC / Clang — C/C++ compilers
  • Make / CMake — build systems
  • GDB — the GNU debugger. Essential for systems-level debugging
  • Valgrind — memory error detection (leaks, use-after-free, uninit reads)
  • AddressSanitizer (ASan) — compile-time memory error detector (faster than Valgrind)

Embedded

  • arm-none-eabi-gcc — cross-compiler for bare-metal ARM
  • OpenOCD — open-source flash and debug tool for MCUs
  • PlatformIO — embedded development plugin for VSCode
  • PulseView / sigrok — logic analyzer software
  • KiCad — open-source schematic and PCB design

Simulation

  • LTspice — free analog circuit simulator (SPICE)
  • MATLAB / GNU Octave — numerical computing for control systems
  • Gazebo / Webots — robot simulation environments
  • scipy.signal — Python signal processing and control system design

Networking

  • Wireshark — packet capture and protocol analysis
  • tcpdump — command-line packet capture
  • netcat (nc) — TCP/UDP connection utility
  • strace / ltrace — system call and library call tracing on Linux

Standards and References

ReferenceWhatURL
ARM Cortex-M4 TRMCPU technical reference manualhttps://developer.arm.com/documentation/ddi0439/latest/
POSIX.1-2024The standard for Unix-like OS interfaceshttps://pubs.opengroup.org/onlinepubs/9799919799/
RFC IndexInternet protocol standards (TCP, IP, HTTP, DNS, TLS)https://www.rfc-editor.org/rfc-index.html
IEEE 754Floating-point arithmetic standardhttps://ieeexplore.ieee.org/document/8766229
Beej’s Guide to Network ProgrammingThe classic sockets tutorialhttps://beej.us/guide/bgnet/

Communities and Forums

  • r/embedded (Reddit) — embedded systems discussion, projects, career advice
  • r/learnprogramming (Reddit) — beginner-friendly programming help
  • EEVblog Forum — electronics engineering discussions by professionals
  • Embedded Related (https://www.embeddedrelated.com/) — forums + blog aggregator
  • Stack Overflow [c], [embedded], [algorithms] — specific technical Q&A
  • Hacker News (https://news.ycombinator.com/) — tech industry discussion and articles

Key Papers

PaperWhy It Matters
”A Mathematical Theory of Communication” — Shannon (1948)Founded information theory: entropy, channel capacity, source coding. Underpins everything from compression to cryptography
”Go To Statement Considered Harmful” — Dijkstra (1968)Structured programming. Why control flow matters for correctness
”Reflections on Trusting Trust” — Thompson (1984)Demonstrates that you cannot fully trust software you did not compile yourself. The supply chain problem
”The UNIX Time-Sharing System” — Ritchie & Thompson (1974)The design philosophy behind Unix: simplicity, composability, text streams
”An Introduction to the Kalman Filter” — Welch & Bishop (2006)The clearest practical introduction to Kalman filtering for state estimation