- ECE 190 and ECE 290 covered basic programming, logic gates, and the basics of software processor architecture.
- ECE 391 (one of the hardest courses in the school) covered x86 assembly and operating system design. The capstone project for the course was to build a simple OS with terminal input.
- ECE 411 covered processor architecture in detail, and how a modern x86 processor is built.
There should be courses from other universities that cover the same topics. Here's some similar courses I found on MIT's OpenCourseware platform.
- Computation Structures covers logic gates and other standard electronic constructs. https://ocw.mit.edu/courses/6-004-computation-structures-spr...
- Operating Systems Engineering covers fundamentals of operating system design: https://ocw.mit.edu/courses/6-828-operating-system-engineeri...
Best of luck!