Week 5: Hash, Hash. Thinking About Code-Collaboration and Nodes
07 Aug 2025![]() |
---|
The Gradebook - Looking at Progress |
So after submission of Week 5 Problem Set solutions, the above is my current progress. Now just a little over the halfway mark of the course. I foresee of course that the Final Project (FP) will take longer than a week. The week’s lecture material was quite comprehensible, relaxing almost. Dr Malan has a way of explaining complicated concepts from basic building blocks, from the ground up. The video clip aids, such as the t-shirts from a box and those from hangers, really drove home the concepts of Stacks, FIFO and LIFO.
The previous week on memory, was a bit intense as the code became more complex. Had the motivation for studying not been strong, Week 4 was a good time to quit. But, as I have learned from Learning Hard Topics, some topics are challenging like that. With the content of Week 5, It’s clear now that was necessary foundation. The week is a culmination of C and will veer off to Python in Week 6 (looking forward to that). It feels truly like a peak of the course and I am expecting to now plateau.
From so much use of loops and defaulting to ‘i’ as a loop variable I concluded that the i stands for any of - integer, iterate, initialise, index.
![]() |
---|
The ‘i’ |
Being Practical with C
Going over the Inheritance (Problem Set 5), one really appreciates how everything learnt up to this point - assignment (now of pointers), arrays, memory, loops, conditionals, truth checking and more, ties together. The utility of the C Programming language is demonstrated through implementation of a practical biology ‘problem’ - determining permutations of Blood Type.
I couldn’t help pondering though, the experience by someone encountering this computer science material for the ‘first time’, in my limited time circumstance would fare. A week-by-week tempo, is manageable for someone who can spare a few hours a day delving the content and not necessarily a full-time worker without a burn of midnight oil.
What I learnt About Complex Problems
Problem Set 5, Part 2, Speller was the most challenging, yet, of the course. It has so many ‘moving parts’ i.e. functions and also incorporated a lot, if not all, of the concepts learnt so far. I perceive the objectives I set out at the beginning of the course are gradually being met. Some take-aways:
-
I learnt (again) and got reinforcement that breaking a problem into sub-problems should be a default approach when tackling a complex task. For each of the 5 functions to be completed, I could independent apply the most appropriate logic to each.
-
Benchmarking is a fascinating way of improving one’s code and algorithms. I found the exercise of improving the efficiency of my already functional code exciting. The Ideas of good program design, I was experiencing in practice.
-
The many functions and and code files other people had written which I had to work with, made me understand better the concept of code collaboration.
-
Walking away from a challenge and coming back later seem to be working for me versus banging my head on the keyboard until I get it. There are instances though where once you get a ‘scent’ to cracking the problem, you can’t detach until you get it done, then only walking away with the delight of success.
![]() |
---|
Benchmarking - How good is your implementation? |