Taken in AY17/18 Sem 2 under Prof Aaron Tan Tuck Choy.
This module teaches students the basics of how a computer works, with focus on the hardware. Topics covered include fixed-point and floating-point number formats, processor datapath and control, logic circuits, pipelining, and caching; it essentially covers the important parts of a simple single-threaded microcontroller. This module does not cover multithreading or operating systems, which is covered in CS2106. The first few weeks also introduce basic C programming — no prior knowledge in C is assumed. Those who are already fluent in C or C++ will find these lectures to be revision.
There is a mix of content (pipelining, caching, processor datapath and control) and logical reasoning (boolean algebra, Karnaugh maps) in this module.
Prof Aaron is a good lecturer who tries his best to engage students during lectures and tutorials. Weekly tutorials are usually conducted by undergraduate or postgraduate students who have taken this module, but I was fortunate to have Prof Aaron as my tutor. There are weekly lab sessions, which usually require students to prepare something on their laptops before showing it to their lab TA for grading.
Midterms and finals are closed-book (with help sheet). There are no group projects for this module.