Answers.Body: <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>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-09-25T20:37:10.687Z
Answers.Text: 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.
Answers.UserDisplayName: Sean Houlihane
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-17T19:41:02.280Z
Answers.LastActivityDate: 2017-06-17T21:46:38.827Z
Answers.LastEditDate: 2017-06-17T21:46:38.827Z
Answers.UserDisplayName: Peter
Body: <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>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T16:14:04.420Z
Comments.Text: Note: [relevant meta post](https://cseducators.meta.stackexchange.com/questions/129/a-student-on-the-educators-site/130#130)
Comments.UserDisplayName: auden
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T17:49:59.683Z
Comments.Text: 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.
Comments.UserDisplayName: Aurora0001
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T18:10:57.130Z
Comments.Text: 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.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T19:04:20.230Z
Comments.Text: It feels to me that the experts on this site may not be really too familiar with this topic.
Comments.UserDisplayName: Sean Houlihane
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T19:32:55.037Z
Comments.Text: 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.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T21:06:43.183Z
Comments.Text: @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.
Comments.UserDisplayName: auden
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T21:11:33.780Z
Comments.Text: 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.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-17T21:19:24.303Z
Comments.Text: @Peter, good point, I edited to change that aspect to make it more fulfillable.
Comments.UserDisplayName: auden
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-18T04:09:37.513Z
Comments.Text: This question seems to be about learning CS, not teaching it.
Comments.UserDisplayName: thesecretmaster
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-09-25T21:19:35.120Z
Comments.Text: 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.
Comments.UserDisplayName: Sean Houlihane
Tags: <resource-request><self-learning><architecture>
Title: Undergrad level computer architecture course
ThreadText: # 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.  
  
  ---
  
  