Starting with the outer dimension, proper communication is vital wherever you go and whatever you end up doing. If you wish for people to do as you want, you need to write properly and concisely. Being vague or confusing will get you in a lot of trouble! Imagine that you want a specific method to be created, but you were not clear about the arguments that would be involved, then the person working with you will probably spend ours elaborating something with the wrong arguments. When it is time to patch things up, more time needs to be spent. It could be worse if a lack of communication leads to calculations going wrong. For example, when NASA decided to send a probe to Mars in 1999, an asymmetrical use of units in its systems lead to the probe crashing. Some part of the system used imperial units, while the other used metric units.
However, communicating with other people is not the only useful aspect behind writing. When you write in prose, you are sharing information step by step. That is similar to how programming works, since the compiler does exactly that when reading your code. Hence, getting into the habit of writing logically sound sentences in prose could lead you to have a clearer mind when writing and reading code. Furthermore, when writing code you need to be precise about what you are trying to execute: there are no middle grounds! If you learn how to write concisely in English, how far would you be from writing concisely in code?
Finally, writing and expressing ideas properly also enhances your ability to read and understand ideas correctly. There is no better art critic than an artist himself since he has first hand knowledge about the techniques employed. If you are having a hard time understanding English instructions, then you should start writing yourself. You will see how, by improving the elements of your written words, you will be able to understand better the elements of someone else's written words.
So it is clear that everyone should write, specially people working with code! The effort you put into understanding higher level languages will be reflected once you move on to lower level languages. I guarantee that!
The Course Challenges
Besides the normal post secondary education challenges, this course brings some new challenges, completely different from the ones from CSC108. Since we already know the basics (AKA terminology and all the basic objects that we can play with), it is time to kick it up a notch with new classes, created by us, that will allow us to do some interesting things. I am looking forward to learning about the new data structures we will see, particularly linking nodes and binary search trees. I do not think they will be complicated to learn, yet there are two aspects surrounding them that might bring some trouble:
On the other hand, mutations offer a different challenge. Making changes inside these data structures involve recursion of a higher level. Honestly, I haven't got a clue of how to do this!
This course will be interesting, challenging, and hopefully fun! Lots of attention to detail and algorithm building will be necessary.