<p>My go-to answer for this topic is <a href="http://nand2tetris.org/" rel="nofollow noreferrer">Nand2Tetris</a>.</p>

<p>There are 2 Coursera courses (<a href="https://www.coursera.org/learn/build-a-computer" rel="nofollow noreferrer">Part I</a> and <a href="https://www.coursera.org/learn/nand2tetris2" rel="nofollow noreferrer">Part II</a>) 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 <code>NAND</code> gate up to a <code>"hello, world"</code> program in a Java-like language.</p>

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

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

<p>The course is typically a lower-division, one-semester, university course. The site contains a <a href="http://nand2tetris.org/about/Nand2Tetris%20syllabus.pdf" rel="nofollow noreferrer">sample syllabus</a>, which might help justify it being rewarded with some form of academic credit.</p>

CC BY-SA 3.0
2017-09-25T20:37:10.687Z
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
CC BY-SA 3.0
2017-06-17T19:41:02.280Z
2017-06-17T21:46:38.827Z
2017-06-17T21:46:38.827Z
Peter
<p>Is there a good online course that covers computer architecture at an undergrad level?</p>

<p>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. </p>

<p>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.</p>

<p>Any recommendations would be appreciated. Thanks!</p>

CC BY-SA 3.0
2017-06-17T16:14:04.420Z
Note: [relevant meta post](https://cseducators.meta.stackexchange.com/questions/129/a-student-on-the-educators-site/130#130)
auden
CC BY-SA 3.0
2017-06-17T17:49:59.683Z
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](https://www.class-central.com/courses/recent?subject=cs&sort=rating-up&lang=english) 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
CC BY-SA 3.0
2017-06-17T18:10:57.130Z
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
CC BY-SA 3.0
2017-06-17T19:04:20.230Z
It feels to me that the experts on this site may not be really too familiar with this topic.
Sean Houlihane
CC BY-SA 3.0
2017-06-17T19:32:55.037Z
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
CC BY-SA 3.0
2017-06-17T21:06:43.183Z
@Peter I'm sorry but it's rather important that it's cheap, and really preferable that it's likely to count towards my transcript. I didn't roll back, but simply added those two back in.
auden
CC BY-SA 3.0
2017-06-17T21:11:33.780Z
Fair point on the former. As for the latter, I simply don't know think that that's a question appropriate for SE. You need to talk to your local school district about that issue.
Peter
CC BY-SA 3.0
2017-06-17T21:19:24.303Z
@Peter, good point, I edited to change that aspect to make it more fulfillable.
auden
CC BY-SA 3.0
2017-06-18T04:09:37.513Z
This question seems to be about learning CS, not teaching it.
thesecretmaster
CC BY-SA 3.0
2017-09-25T21:19:35.120Z
Not a course, but this ARM document covers an implementation of architecture from a mainly software perspective. Skim through it, and it may give you a feel for the scope of the problem. http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/DUI0552A_cortex_m3_dgug.pdf Questions on the details might be on topic on EE.SE.
Sean Houlihane
<resource-request><self-learning><architecture>
Undergrad level computer architecture course
# Undergrad level computer architecture course

(Asked by: username_0 on 2017-06-17)

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!

**Tags:** resource-request, self-learning, architecture

> **Comments:**
> **username_0**: Note: [relevant meta post](https://cseducators.meta.stackexchange.com/questions/129/a-student-on-the-educators-site/130#130)  
> **username_1**: 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](https://www.class-central.com/courses/recent?subject=cs&sort=rating-up&lang=english) 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.  
> **username_2**: 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.  
> **username_3**: It feels to me that the experts on this site may not be really too familiar with this topic.  
> **username_2**: 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.  
> **username_0**: @username_2 I'm sorry but it's rather important that it's cheap, and really preferable that it's likely to count towards my transcript. I didn't roll back, but simply added those two back in.  
> **username_2**: Fair point on the former. As for the latter, I simply don't know think that that's a question appropriate for SE. You need to talk to your local school district about that issue.  
> **username_0**: @username_2, good point, I edited to change that aspect to make it more fulfillable.  
> **username_4**: This question seems to be about learning CS, not teaching it.  
> **username_3**: Not a course, but this ARM document covers an implementation of architecture from a mainly software perspective. Skim through it, and it may give you a feel for the scope of the problem. http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/DUI0552A_cortex_m3_dgug.pdf Questions on the details might be on topic on EE.SE.  

---

## 1 answers

### Answer by username_2 on 2017-06-17. Score: 5 | Accepted answer

My go-to answer for this topic is [Nand2Tetris](http://nand2tetris.org/).

There are 2 Coursera courses ([Part I](https://www.coursera.org/learn/build-a-computer) and [Part II](https://www.coursera.org/learn/nand2tetris2)) 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](http://nand2tetris.org/about/Nand2Tetris%20syllabus.pdf), which might help justify it being rewarded with some form of academic credit.

> **Comments:**
> **username_3**: 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.  

---

