The importance of lifelong learning has been widely discussed in so many websites that it would be just pointless if I tried to explain it once again. Instead of that, I would like to dedicate this post today to list just a few online courses that I find extremely interesting which cover different aspects of digital design and delve into advanced topics on computer architecture. I’m aware that some of them are already closed, but these portals usually give you the option of emailing you with a reminder once a new edition of the course is available, which happens often enough.
This is my list of interesting and exciting MOOCs on Computer Architecture and Digital Design. If you know any other course, please feel free to share the link in the comments section!
- Computer System Design: Advanced Concepts of Modern Microprocessors (ChalmersX on edX)
This course starts overviewing the basics of pipelining, out-of-order and static scheduling, and then delves into advanced topics such as dynamic instruction scheduling, speculative execution, advanced memory hierarchy (cache and memory coherence), and multicore systems. If you have studied Computer Engineering most of these topics will already be familiar to you, but it never hurts to refresh them.
- Computer Architecture (Princeton Univ. on Udacity)
This course focuses mostly on high performance architectures, paying special attention to superscalar and multithreaded processors, VLIW and vector processors, also taking some time to explore the cache hierarchy and parallel programming. It’s worth mentioning that the course also looks into the interconnect between processors in multicore systems, something very interesting to consider as well.
- Computation Structures 2: Computer Architecture (MITx on edX)
There is a principal difference between this course and any of the other ones on Computer Architecture that appear in this list. While the others are mainly focused on the design of the pipeline, the memory hierarchy and/or the opportunities for improving performance, this course by the MIT is more interested in how to build an ISA and how to tailor it to specific needs, it considers compilers, procedures and stacks, and only then explores the memory hierarchy a little bit. All of this guided by the construction of a processor of their own, the Beta. A really interesting course, if not only from the reputation of the institution behind it, for the different approach they take to CompArch.
- High Performance Computer Architecture (Georgia Tech on Udacity)
The number of HPCA topics discussed in this course is simply jaw-dropping. 27 teaching units that cover so many different aspects of High Performance Computer Architecture make this course a total must. Branches, predication, VLIW, reordering buffers, memory hierarchy, fault tolerance… You name it, it is available in this course. Also, this course is not restricted to specific dates in the calendar, so you can take it, stop, and resume it whenever you want, and the progress is saved.
- Hardware Security (Univ. of Maryland on Coursera)
The two previous courses cover topics that, up to some extent, are ofter studied in advanced courses in university. But topics related to hardware security are not so often found in the syllabus of CE degrees around the world. And yet, security is becoming a key aspect in Digital Design nowadays, making this course particularly interesting. The course presents information of different types of attacks and best practices for secure digital design. A very interesting course indeed, which can open many doors to digital designers in the near future.
- Functional Hardware Verification (Cadence on Udacity)
To be honest, I’ve been conflicted on whether to add this course to this list or not. On the one hand, the contents of the course are extremely interesting for digital designers, as they cover an area of knowledge that is seldom studied in the university. But on the other hand, the videos are not available online anymore and I believe that it is no longer run the examples online, as the licenses have been removed from the system. Which is a shame, because of how interesting the course is. In the end I’ve included the course here for two reasons. First, just like the HPCA one, the course is not date-bounded. And second, all the videos are still available for download and viewing them off-line. Which serves their purpose just right.
- Quantitative Formal Modeling and Worst-Case Performance Analysis (EIT Digital on Udacity)
Let’s go a little bit abstract here. In this course, systems are studied as dataflow graphs, and their behaviour and characteristics are studied in order to extract certain features such as (as the title of the course points out) the worst-case performance case. Despite being listed in the Software Development category, knowing how to carry out this type of analysis will definitely benefit hardware digital designers when designing their pipelines and looking into the desired and projected performance of their designs.
- Learn to build OVM & UVM Testbenches from scratch (Independent engineer on Udemy)
This course may come as complementary to the Functional Hardware Verification one I listed earlier. While the former gives a general overview of the methodologies for HW verification, this course gets on the specifics behind OVM and UVM tesbench creation, which is most useful as particularly UVM has lately been positioning itself as the standard for the industry, and it is extremely useful to understand how [O|U]VM testbenches work, and how to navigate our way around them. In which case this course can serve as a very useful introduction.