A big part of my data & AI course is getting to know Microsoft Azure. This week I started learning the MS fundamentals course (part 1 – 6). It’s a crash course on server terminology, such as virtual machines, containers, VPN gateways and virtual networks. It’s a lot to take in and I’m not sure how much use I’ll have of the ins and outs of Azure, nonetheless it gives me a better understanding of it all so I can become a better translator between real server and data nerds and those who are not.
Now that I’m a student again, and subject to a substantial online course which has some elements that feel to me like a waste of time, I got curious about the latest insights in how we learn best. I spent my first year at university studying educational science and I still have some fascination for the design of courses and workshops, both online and offline.
The element that I found (very) inefficient was watching a teacher code in SQL for a full day, without much interaction other than asking questions via chat. During that same week we got assigned three modules to practice with SQL in Datacamp, starting from the very basic level and then moving on to more complicated stuff. I felt a bit frustrated with this set up as it seemed to me like first spending a day learning nothing, before the real work could commence in a week where I was already strapped for time.
So last week I spent the whole of Monday watching the teacher. During the morning the speed of all the basics felt too slow. By 14:30 my mind switched off, my body started yearning for movement and fresh air, and the teacher ramped up his speed to show more complex stuff leaving my mind wonder why I signed up for this course anyway. Now I don’t want to sound too critical here, as most of the course is wonderful, despite the use of MS teams to keep track of all the assignments and building a sense of community. But scheduling a session like this felt like backwards thinking, not in line with the things I know about how people learn. Nevertheless, going through the Datacamp modules went much faster than expected (and projected by Datacamp), so perhaps I learned more during that first day than I want to acknowledge.
This made me curious about what recent insights about learning are. How can I help myself over the coming months to not just tick of the assignments and move on, but actually store what I’ve practised in my long-term memory? And give some constructive feedback towards the academy?
I found some interesting resources. For instance this article published by Princeton University.
Most people believe that repeated exposure to material, such as “going over” notes, “re-reading” are the main and most important ways to learn and “absorb” information. In fact, research shows that memorizing in this way has significant shortcomings. Such methods are not only highly time-consuming and less than optimally effective, they are often rather boring. There are not only more effective and efficient methods of learning, but alternative approaches are often more engaging, interesting, and enjoyable.
Learning the basics of programming is all about doing, not memorising the exact code. That’s the message my academy sent out. Rightfully so. However, it is important not to effortlessly sail through the assignments. The article also states that “effortful learning usually signals not only deeper learning, but more durable long-lasting knowledge.” I found the SQL modules in Datacamp easy, as most of the challenges were heavily pre-scripted, stating line by line what to write. That could mean that I learned less than I did with the Python modules, where I sometimes was struggling with some concepts. Fellow students report many more issues in grasping the material and take twice as long to go through the assignments. They might be learning more and better than I am as it’s more challenging to them. I therefore will try to do some of the extra challenges in Datacamp to up the “desirable difficulties” for me.
Rushing through the modules might not be the best strategy either. It is important to “interleave” studying, or leaving space between study sessions. This can be a bit hard to do given the fact that I need to finish certain modules within a week. Nevertheless I could try spreading the work between the days and within the week. If the mandatory online sessions allow me to.
There are more principles in the article, but some of them are less applicable to the practical data science skills I’m learning right now. Or simply impossible due to current restrictions like varying locations where you’re learning.
Elsewhere I read it is important to practise extensively. “overlearning reduces the amount of mental effort required, leading to better performance”, according to this article.
According to that same author the key to learning is knowing how learning works. I’m well on my way to learn more effective then.
One other resource I’d like to mention is The Science of Learning. This is a more practical guide to translate cognitive principles to classroom situations.
None of the articles I read mentioned watching a teacher do something on a screen for a full working day as a good teaching strategy, though. I’m glad it was only one day, not the five day training the teacher mentioned doing too. I guess I just found writing SQL statements easier than writing Python.
If you have any good recent references on learning, please share them with me in the comments. I always have an appetite for learning more.
Today I attended a mandatory online training in SQL. The entire day I watched the teacher write queries. Not my idea of a efficient nor effective learning method. However, it did give me plenty opportunity for drawing while listening.
I’ve finished the first two modules on Python in DataCamp, the tool Techionista Academy uses for learning the basics. So far so good. It really helps that computer language is not completely alien to me. As a teenager I typed in tiny Basic examples from magazines to run silly programs. At university I started building websites form scratch in HTML and I can read and intervene in PHP thanks to years of experience using WordPress.
Getting properly introduced to Python really gives me better understanding of the logic of it. For instance when to use ‘ ‘ and when not. Or learning the difference between an integer and a float. Sometimes though, its logic is not that logical to me. One assignment asked me to select rows from a DataFrame (also known as a table). In this case the dataframe was a list of dogs with some attributes like age, dog breed and dog owner.
Lets call this DataFrame ‘dogs’. First task was to select dogs older than two.
greater_than_2 = dogs[dogs.Age > 2]
From dataframe ‘dogs’, select from column ‘Age’ everything larger than 2.
Next task was to select dogs who’s status was ‘still missing’.
still_missing = dogs[dogs.Status == 'Still Missing']
Easy enough when you know that ‘==’ means equal to.
Then the last task. Select dogs whose dog breed is not equal to poodle. More of the same, I thought. Although I already learned previously that you can’t use ‘dogs.XXX’ for referring to the right column in the table. This column name has two seperate wordes and therefore requires string notation. String notation means that it requires ‘ ‘. So I wrote:
not_poodle = dogs[dogs['Dog Breed' != 'Poodle']]
Running the code gave me an error. I tried many variations, but couldn’t find the mistake I was making. I had to ask for DataCamp to reveal the correct answer to me. It turned out that I had the second to last ] in the wrong place. The correct solution should have been:
not_poodle = dogs[dogs['Dog Breed'] != 'Poodle']
This felt totally unintuitive when I first read it. Now that I’m explaining it here, it starts to feel a bit more logical. I guess that’s what they call the learning curve. All languages have their own logic, which sometimes are in dissonance with the language you hear in your head.
One of Daughter’s new books, kindly gifted by Sinterklaas Grandma, includes the challenge to spot all the letters on one page that put together form a word. Daughter was up for this challenge. We both searched for the letters and Daughter wrote them down. I then spelled the correct order to form the word. Just drawing letters gets a bit boring after a while. Hence the decoration.
I was a bit surprised how easily she recognised all the letters and wrote them down. It’s not something we practiced before. So here you go. Daughter’s first words put to paper.
On to the next stage of learning language.
I’m at the brink of signing up for the data & AI course at Techionista Academy. I’ve been looking for a way to up my skills on the data front for a few years now. So far, the courses I looked at were either too time intensive or too expensive. The one at Techionista I can afford. Due to Covid-19 they do the entire course online, which gives me great flexibility while taking care of Daughter after school. Following the part-time schedule for 22 weeks leaves a bit of time left doing work for clients as well. And a 22 week long course, starting the second week of January, will give me something to focus on during the long winter months while we wait for the salvation of covid-19 through vaccination programs or, in case vaccines are useless, until the weather allows us to meet outdoors again. The only downside: I will have to use Windows because Techionista partners with Microsoft. I can live with that.
The mere thought of going back to school makes me nervous, though. My last exam was sixteen years ago. I was so glad the days of working for grades was over. Nevertheless, if I indeed sign up for the class and pass the exams in June 2021, I will be a Microsoft Azure certified data nerd at the beginning of Summer 2021. How does that sound?