Wednesday, 3 January 2018

Some of My 2018 Learning Goals, and Free Resources to Help in Yours

With us now in January 2018 and the Christmas pies and frivolities becoming a distant memory, it is traditional to see this time as that act of penance and discipline! We enrol for the local gym, take a month off the drinking and increasingly look to improve our skills.

My efforts to eliminate the Christmas gut being beyond the scope of a software testing blog, I wish to detail with you a few of my NY resolutions to develop my skills and achieve my various goals. In the hope that you may find them useful in your learning endeavours, I list various relevant free resources I have come across.

1) Practising Programming

I am studying a part time IT graduate diploma, with the option to articulate to a Masters degree if I choose to. This is already very programming-intensive (and I have used Python, SQL, C, Java, Bash, Prolog and Perl as part of my course), however my last module done in the first half of 2017 was programming-lite and I took the second semester of 2017 off entirely. Not working in an automated testing role at the moment and not having a lot of side projects on, my programming skills are (hopefully temporarily) rusty.

In order to hit the ground running when my course restarts in late Feb, and also to develop my coding generally, I am endeavouring to devote an hour per day to learning coding - for application development and test automation (more on that later).

Whilst there are more online resources for this then I could possibly list, in just about any language existent, I am particularly fond of the professional Massive Open Online Courses (MOOCs) at Pluralsight and Edx.

Pluralsight is my personal favourite of all the various online tutorial sites, and its videos and tutorials are generally of a very high quality. It is not free, however for those with an Office Online email account it is easy to obtain a free 3 month subscription to this via registering on Microsoft's Visual Studio Dev Essentials site.

Edx, a well known academic MOOC provider, contains many courses but I recommend a truly excellent introduction to programming - MIT 6.001x Introduction to Computer Science and Programming Using Python - which is self paced and can be audited (done without certification) for free. Completing it is how I learned and got a grounding in Python. It is not an easy course and the weekly programming challenges and quizzes are quite challenging and need to be completed on time. It is however extremely rewarding. The follow-on course for those who complete the above (and which I have not completed myself), MIT 6.002x Introduction to Computational Thinking and Data Science, uses Python to apply various concepts from Computer Science such as graph optimization and dynamic programming before moving onto statistical methods such as Random Walks and Monte Carlo. I plan to return to MIT 6.002x at some point this year.

2) Test Automation

With respect to test automation resources, I am keen to devote myself to learning API testing before returning to UI automation.

In view of this, since I already have some experience of using SoapUI I will try to learn Postman API. Danny Dainton provides some great tutorials and examples on his Github project, which I plan to work through.

3) Machine Learning

I took an AI module a few years ago and was fascinated by it. It was going to study a machine learning module as part of my degree however am not able to do it this year due to missing a certain prerequisite. I therefore wish to, and coming from a strong maths background should be able to study Machine Learning is my own time this year and see how proficient I can get.

I have been avidly watching and doing a few homework exercises from two courses by Nando de Freitas, a professor of Statistics and Machine Learning at the University of Oxford and the University of British Columbia. His lecture style is engaging and easy to follow and the courses are quite entertaining.

The UBC undergraduate machine learning course from 2012, for which all lectures are on youtube and exercises and projects are available, encompasses material from basic probability theory right up to Bayesian Classification and Deep Learning. With the exercises requiring a knowledge of Python, various tutorials are linked to and included.

As a follow on, de Freitas' Oxford course in Deep Learning goes much deeper into the theory, however whilst the videos are freely available the course notes and exercises are sadly hidden to non-students. It is still worth checking out however.


The above projects are what I plan to work on for the first half of this year, my academic studies permitting. If you have any ideas of other resources or projects that I could learn from, I would be most grateful.