# Undergrad level computer architecture course

Is there a good online course that covers computer architecture at an undergrad level?

I just finished 8th grade. I know a bit about computer architecture and logic gates, but not a ton. I know the basics of single-variable calculus and linear algebra, and I program a decent amount, mainly in Python 3, though I have experience with versions of C (used for Arduino, for example). I have looked at Assembly code but never programmed in it.

I'd like the course to be decently cheap, and it would be nice if it has a sense of legitimacy such that I have a shot at getting it to count for credit/go on my transcript.

Any recommendations would be appreciated. Thanks!

• Note: relevant meta post – heather Jun 17 '17 at 16:14
• I feel like this might be leaning on the broad side; I can think of many that might fit your criteria (take a look through this huge list to see what I mean). If you could narrow it down to one or two subjects, and a specific level/objective, it might be easier to give you a concrete recommendation. – Aurora0001 Jun 17 '17 at 17:49
• By counting towards your transcript, are talking about for college admission? If so, that depends in part on what state you live in. The safest bet in that regard is to look out your local community colleges. – Peter Jun 17 '17 at 18:10
• It feels to me that the experts on this site may not be really too familiar with this topic. – Sean Houlihane Jun 17 '17 at 19:04
• I removed what I felt were the truly subjective/impossible-to-answer requirements. Feel free to roll back if necessary, but I think that one question will give you better results. – Peter Jun 17 '17 at 19:32

My go-to answer for this topic is Nand2Tetris.

There are 2 Coursera courses (Part I and Part II) that match the curriculum of the program. The first course does not require any programming background. Its focus is on computer architecture (logic gates, half-adders, full-adders, ALUs, RAM, ROM). The second focuses on a virtual machine and a compiler for a high-level, Java-like language (and thus does require some programming knowledge). The essence is that you understand every level of a computer from the NAND gate up to a "hello, world" program in a Java-like language.

In addition to the Coursera courses, there's a companion textbook and a full suite of software. The list of topics is below:

• Boolean Logic
• Boolean Arithmetic
• Sequential Logic
• Machine Language
• Computer Architecture
• Assembler
• VM I: Stack Arithmetic
• VM II: Program Control
• High-Level Language
• Compiler I: Syntax Analysis
• Compiler II: Code Generation
• Operating System

The course is typically a lower-division, one-semester, university course. The site contains a sample syllabus, which might help justify it being rewarded with some form of academic credit.

• I had a quick scan through the first part. I wouldn't say it's undergrad level, but maybe I missed some detail by not looking at the lab work. It feels to cover too much of the low-level implementation (an add in verilog is '+', not a mess of gates!), none of the interesting parts of an architecture, and really feels quite software orientated. It addresses it's stated aims, but for computer architecture, to the point where you'd understand someone explaining a specific MCU implementation, you need more detail in the middle layer. – Sean Houlihane Sep 25 '17 at 20:37