I thought about my failure in the course a thousand times and could not think of any solution that could have helped me to pass the course successfully.
Introduction
In 2017, I was studying a graduate course named "Computer Architecture" (syllabus; overview; sample questions). The prescribed book had 684 pages. The course was divided into lectures and Lab sessions.
Each week, students had to go to labs and had to solve the assigned problems in MIPS and x86 assembly languages. The points were assigned on the basis of the number of problems they could solve in 4 hours out of the given five problems.
The challenges
The first challenge for me was to find appropriate learning materials for learning MIPS and x86 assembly languages.
I learned the MIPS assembly language from this youtube channel (this tutorial was amazing).
For x86, I don't remember which material I used. However, I remember that the challenge was to find a debugger with GUI as GDB was a total inconvenience. It took me almost a week to find SASM debugger GUI.
The final and most damaging hurdle was to find concise reading material, and ultimately I failed to find any. For me, reading a 684-pages book was out of the question. I simply had no time as other courses had a similar amount of loads.
How I failed
I learned the two programming languages very keenly. Solved all of the Laboratory problems, and completed the projects very well. However, I miserably failed the written examination.
The final project was a hard problem (image recognition via MIPS and x86), and it took a lot of time for me to solve the project. I think, other students just solved the problem by seeking help from their elders and friends who passed the course already. And, most of them actually failed to solve the project. Some of them scored partially.
I found out that -
- some other students were solving lab problems by uploading the solutions to the server the previous night. I.e they were cheating all the way. As a result, they saved a lot of time and utilized that time to study for the written examination.
- some other students had been maintaining a database of old questions in a shared online repository. They only solved the older questions and successfully passed the written exam.
Did I talk to the instructor about my problem?
Yes, several times. However, his directions were limited to prescribing a book and referring to some URL links. He even failed to prescribe a proper debugger tool for x86 except for GDB.
Besides, the supplied sample questions were totally different and mostly unrelated to the questions that came in the examination.
My personal opinion
In my personal opinion and tell me if I am wrong:
- if there was not any custom reading material supplied, the course syllabus was too broad for a 4-months semester and MIPS and x86 should have been mutually exclusive;
- the instructor should have provided a concise reading material instead of an entire 684 pages book if he really wanted to teach both MIPS and x86;
- supplied sample questions were absolutely misleading, those shouldn't have been supplied;
- the instructor should have kept a tutorial session for GBD and debugging.
In my opinion, the instructor was indirectly encouraging cheating by throwing a gigantic and unachievable load. Guessing and learning cannot take place at the same time.
The question
What was the appropriate way for me to successfully pass the course?