Category | Difficulty |
---|---|
HW | 5 |
Exams | 6 |
Labs | 6 |
This course builds up from the lower levels of computer hardware with gates and boolean logic, to eventually cover higher levels of abstraction such as CPU's and basic computer architecture.
This essentially bridges the gap between the physics of transistors and the machine code that gets generated by compilers.
The main instructor is Bill Nace, who is one of the few Teaching only professors at CMU. This means he's actually interested in helping students learn, and lectures can seem like a lot of hand-holding through the material (which can be really nice at times).
- Boolean Algebra
- Boolean Experience Manipulation(k-map)
- System Verilog
- Combinational & Sequential Logic
- Finite State Machine
- Hardware Design
- Assembly Language
- Basic Computer Architecture
-
Lab: In general, Labs aren't too stressful as long as you get a good lab partner (they're randomly assigned) and it is highly recommended that you get started before your actual lab time. Most people just come in around 5 - 5:30 for their 6:30 labs and that sets them up nicely to leave before 9:30. The last two labs (lab5 and lab6) are more like small projects that summarize all the content covered in the class so far, so they can be a bit challenging and time-consuming. You and your lab partner, together, should expect to spend at least 10-15 hours for each of two labs. Since lab partners are randomly assigned, you can never truly rely on your partner and have to take the responsibilities yourself. Start early! It can be very useful to use a code-sharing platform such as VS Code Liveshare so that you can more effectively collaborate on the labs. This way you can better encourage your partner to do some work and collaborate at the same time. Most of all though, start early!
-
HW: Homeworks are good practice for the material. One thing good about 18240 is that as a student you can always feel different parts of the course tightly related to one other. Homework usually includes two parts, written and codes. The written part is usually the easier one, but in 18240 it can include many boolean algebra problems (math problems that only involve logic and 0 & 1) that are seemingly easy but in fact very error-prone. It's always a good practice to double check your answer before turning it in. The code part is more time consuming. 18240 uses the hardware language
system verilog
, which is very different from all common languages used in software development like python and java. There is no way for you to write test cases that automatically check for the right answer. All you can do is to display your program results and check manually. Many things can fail silently if there is no tests. In the second half of the course when real hardware design problems come to play, not only will you need to have your hardware generate the correct result but also in the right timing. -
Exams: There are 2 midterms and one final which is optional if you already have an A in the class. Empirically, the final is very difficult, and we rarely see people who take the final and still end up with an A. Even if you are not targeting an A in this class, you should still be careful of the final as it may further lower your letter grade. Besides, 18240 exams are graded very harshly, meaning that even though there are many intellectually difficult problems in exam they are still going to take off 0.5 out of 80 for every syntax error you make. Also, the exams can be a little bit time-crunch, so make sure you are familiar with the basics.
- Don't slack off in the beginning b/c this class is like one big snowball of topics building off of each other
- Always check Piazza - there are lots of clarifications on assignments that can save you a lot of time
- Go to lab early, at least earlier than 5:30
- Pay attention in lecture (even if you think you already know it)
- Read lecture slides carefully, make sure you understand every detail. 18240 slides are well-written and you should be able to understand the logic flow.
- Look at the homework before recitation
- Practice Hardware-Threading Problem
- Write test bench for every module
- Pad up your grade so you can skip taking the final exam
- It takes a while to go through the process for handing in Homeworks and Lab documents. Make sure to leave yourself extra time to figure this out
- Hardware Threading is known as one of the toughest topics