COMP1521 - Computer Systems Fundamentals

3 minute read medium

Difficulty: 5/10 · Time Commitment: 5/10 · Enjoyability: 6/10 · Mark: 90


I did COMP1521 (Computer Systems Fundamentals) in Term 2 2021. It introduced Assembly programming in MIPS and System programming in C. Although the subject was not very well run, there were many interesting elements of learning low-level programming.


  • Concise introduction to MIPS
  • Lots of tutor support
  • Learning about memory management in MIPS was very interesting


  • Didn’t delve into real-life applications
  • Course content and assignments poorly planned



In Term 2 2021, COMP1521 consisted of a few assignments, weekly labs, weekly quizzes and a final exam. There was a focus on low-level programming in MIPS and system programming with functions like posix-spawn in C.

Most of the course was well-handled given the short timeframe to cover a long list of topics, however, the second assignment went well beyond the scope of lecture and tutorial content. Labs and lectures were useful for understanding the course content and even though attending tutorials was not compulsory, it helped consolidate lectures.

Lectures and Tutorials

Lecturers were very theoretical in this course and at several points throughout it, I felt like I knew all the theory but had no clue how to apply it. The way I overcame this was by looking at the provided lecture code and seeing how the theory was applied to the questions. Additionally, in the first few weeks, tutorials were amazing and it was really helpful to be able to ask my tutors whether I could’ve solved each question a simpler way.

Weekly Quizzes

The weekly quizzes in COMP1521 were by far the most stressful weekly component of the course. This was mainly due to the time constraint and lack of information on content matter. They were useful in getting more familiar with exam conditions and learning how to work under pressure but I think there were other ways to implement this with less emphasis on the exam style.

  1. Increase the time constraint - I’m pretty sure I finished all my quizzes with plenty of time to spare but even so, I didn’t like the stress of written mips programs that spit out incomprehensible errors under strict time constraints. By making it slightly longer, even by 30 mins, that would be much less of a problem and the quizzes would still emulate exam conditions.
  2. Have a brief summary of the content covered in each question - Writing something like Question 1 is about this and Question 2 is about that would make these weekly tests much more beneficial as it would allow students to revise the topics needed before the test and consolidate that to memory rather than go into the quiz without any clue or preparation except the weekly labs.


  1. One big mistake I made was putting an unreasonable amount of time into Assignment 2. Although I wanted to achieve full marks, spending an extra 10 hours to attempt the final stage of the assignment for merely 0.6% of my course mark was not a good idea.
  2. Learn by coding. For people who haven’t learnt MIPS before, it is extremely hard to apply what is taught theoretically to the code itself. The best way to learn MIPS is by opening a quick reference guide and experimenting with different programs to get a feel for the language rather than endlessly watching lectures.
  3. Pace your learning. There were many times during the term when I didn’t want to keep coding in MIPS or I wasn’t understanding a concept. The best thing that worked for me was leaving the task for 1-2 days and then revisiting it. It’s much easier to follow along with a MIPS program with a clear mind and full focus!
  4. Look through the code!!! The most important advice I can offer for this course is to read all the code provided in the course. Before starting assignments, read through all the prewritten code and after lectures, have a look at the provided code snippets.