Going into this computational thinking course, my initial understanding of the topic was pretty surface level. I thought it basically just meant learning how to code and read programming languages. But was I mistaken! Through the various assignments and actually coding my own interactive game over the semester, I really came to appreciate how widely applicable these skills and working methodologies are.
Getting hands-on coding experience was eye-opening. At first, building my own game seemed hopelessly difficult with my nonexistent programming background. But using decomposing problems and recognising patterns really helped break it down into manageable chunks. Being able to understand individual functions and reuse code structures seriously sped up the learning curve. By solving small chunks of codes one at a time, before I know it, I am almost done with my game.
Simplifying complex code snippets of the example codes through abstraction allowed me to focus on only the relevant parts which I referenced for my own code. And algorithmic thinking helped me think in a logical way when debugging - it provided a systematic way to trace logic errors. Overall, practicing these concepts in a real project rather than just theoretically discussing them was massively valuable for actually internalising what computational thinking really is.
During my journey navigating the javascript world, I could not have done it without the help of ChatGPT. Part of this course was really about familiarising myself with ChatGPT. Even ChatGPT was a mentor in Computational thinking. As it is an artificial intelligence, to communicate with it, I had to apply computational thinking in the way I gave my prompts. I realised they do not perform that well when I feed a whole chunk of information and expect it to give me a completely functional code. Instead, it worked better when I decomposed the problems into smaller tasks for them to solve. Sometimes the solutions they provided me were good but something was slightly off. I had to analyse what was in my prompt that made it interpret my question wrongly and had to refine the prompt to get better results. Computational thinking helped me understand how ChatGPT "thinks" and made it possible to understand complex tasks through simplified prompts.
Something else I realised is that it complements design thinking methodology very well. Design thinking excels at user empathy, but sometimes after being in someone’s shoes, the problem's complexity leaves you unsure how to proceed. That's where compartmentalising issues into smaller problems using computational thinking principles comes in handy. I can now structure problem-solving in a much more organised fashion.
Looking back on my "P for Planter" platform project really demonstrates computational thinking's importance. After Week 11, all focus shifted to Week 13 presentations with minimal time. I was instantly overwhelmed by the massive workload especially cause I am working with new materials. Panicking, I almost dove in haphazardly with the mindset of “Don’t think just do”. But my friend suggested to plan out what I have to do. That's when computational thinking practices like decomposing complex task and assessing failures truly came through. It brought clarity to an otherwise foggy process and prevented wasted effort. If I hadn't slowed down to evaluate my situation methodically, I doubt I could've completed everything on time.
This experience highlighted computational thinking's relevance for design outcomes. By crafting systematic processes and algorithms for tackling design problems, I can optimise efficiency and effectiveness. Now realising the value of focusing on refining workflows over the works I produce, process refinement is my top priority moving forward as a designer. To refine the way I work rather than the work I produce, as I the works I produce is the result of the way I produce.