Profs: Wong Weng-Fai, Anandha Gopalan, Aaron Tan
CS2100 dives into the inner workings of a computer, where you learn how pointers in C works, how logic gates make up logic devices and memory units, and how a simplified MIPS instruction set is implemented in the hardware.
There are 4 main topics in this module:
- C: Structs, Arrays, Pointers, 2s Complement, IEEE754
- MIPS: Instructions, Encoding, Datapath
- Logic gates: KMaps, Logic circuits, MSI components, Flip flops
- CPU optimizations: Pipelining, Cache
The lectures were all pre-recorded, and most lectures were more than 2 hours in length, so I would really advise not watching them unless the slides are not clear. There is also a weekly reflection, I have no idea what goes on in there as I have not attended a single one. There are also weekly tutorials and labs, for which attendance is compulsory. Most labs can be done before the actual lab session, in the form of a lab sheet that usually just takes a few minutes, there are only 3 labs where you need to assemble a circuit in person in 1 hour and I found those pretty fun.
Personal opinion
Everything about this module just feels bad. Many parts of the lecture content feels outdated, I echo the sentiments of many others that we should be learning a simplified RISC-V instruction set rather than MIPS. I feel like there should not be so much emphasis on manually encoding MIPS instructions and calculating 2s complement arithmetic in the assessments. (I believe you can hit median for the midterms just purely from being a human computer.)
The learning experience just felt like having to accept whatever arbitrary convention the profs decided on 10 years ago. Fortunately I am quite good at turning my brain off and regurgitating lecture material, but it really felt like I did not learn much. I would say the only things I have learned that is also beneficial for future modules would be datapath, pipelining and cache (aka all the hardware stuff).
After reading week, I stopped reading lecture slides and attending tutorials, and just crammed the lecture contents in a few days of studying before the finals. Evidently it worked well and allowed me to allocate more time to other more important modules.
Workload: 7/10
I would say I spent most of my revision time for finals on this module, usually pulling 12 hours days at home or at COM1.
Enjoyability: 2/10
Difficulty: 4/10
One thing the prof gets right is that this is not a difficult module, there's just so much lecture content you need to study for.
Grade breakdown
| Assessment | Marks | LQ | Med | UQ | Actual |
|---|---|---|---|---|---|
| Tutorial Attendance | 16/20 | 20 | 20 | 20 | 4/5% |
| Labs | 163.5/185 | 180.5 | 183.5 | 184.88 | 7.07/8% |
| Finals | 107.84/109 | - | - | - | 1.98/2% |
| Assignment 1 | 30.5/37 | - | - | - | 2.72/3.33% |
| Assignment 2 | 40/40 | 37.5 | 40 | 40 | 3.33/3.33% |
| Assignment 3 | 40/40 | 40 | 40 | 40 | 3.33/3.33% |
| Midterm | 34/40 | 24 | 28 | 32 | 21.25/25% |
| Final | 92/100 | - | 73 | - | 45/50% |
| Total | - | - | - | - | 88.71/100% |
Excepted grade: A/A+
Final grade: A