Gosh, it’s been 5 days since I did the Artificial Intelligence and Machine Learning Exam.. and I’m still a bit sad that it’s over because this module alongside Applied AI was probably the most enjoyable….namely because of the Slack community where we helped each other throughout but also because it was practical!
Some of you have asked how do you access the Slack community.. well you can only access it if you are a student or have a @york.ac.uk email address. If you are already a student then you can join it here: onlinecompsci.slack.com. I highly recommend it – I’ve connected with many awesome people on there, made friends, gotten a lot of help including people in the industry to review my CV for my first ever tech job! 🥰
Artificial Intelligence & Machine Learning
Like Applied AI, this module starts off by briefly covering the philosophical aspect of artificial intelligence – how does AI make ethical decisions – and what constitutes AI, ethics and a bit about the history it then moves onto breaking problems down, uninformed search, writing logic and different learning models. The content slightly overlaps with both the Big Data Analytics and Applied AI module which Uni do point out. This is great for me as my memory is selective and I need someone drilling the same info into my brain over and over again to get it 😅
Breaking Problems Down / States
One of the core themes of this module is how to break down scenarios/games/problems into the most basic form that a computer or logic can understand. Once we can do that it then makes it easier to compute or find the answer using algorithms or methods to find the answer using a computer; THIS is basically what Artificial Intelligence is.
One of these basic forms can be a state. A state is a representation of the problem in some degree of solution and can be used to determine if is the solution to the problem – which we call a goal state. When you start to see problems in this way it becomes easier to apply computational thinking for example an 8-puzzle has 9!/2 states to search through and 1 goal state. Once we know the goal state we can use one of the uniform search algorithms to search through the state space and find a solution.
In many of our modules, we first learn about uninformed search algorithms such as depth-first search and breadth-first search, A* BFS and iterative dfs and in this module, we use these to search through the state space to find a different solution.
These algorithms can be applied to a variety of problems in computer science as it doesn’t require any domain-specific knowledge. You can use heuristic methods as shortcuts to produce solutions quicker. These may not be optimal but are sufficient given a limited timeframe or deadline. Here’s an algorithm I wrote in python that does a breadth-first search to clean a room with a vacuum. It is a graph search thus each action(parent node) has 2 paths (child node) which you can search through to find a goal state.
We learn these fundamentals in the hope we can join multiple methods in different ways in order to build our own search solutions to a variety of problems.
After learning how to reduce a problem in to such a way we moved on to propositional logic. I found it a really hard concept to grasp for some reason as you have to reduce complex things into basic forms. A proposition is like a statement in its most basic form that can only be true or false. Then you can use these to build relationships between different statements. There were many different ‘rules’ which just blew my mind but the gist of it is our way of connecting language to the formalism of mathematics. Making rules using this logic can aid decision-making as these rules can build arguments to prove something is valid – even though the direct answer is not given we can “figure it out”. These rules can infer relationships, validate an argument or make a decision. Most of our solutions ended up with creating a truth table which is a table used to illustrate and determine the truth value of propositions and the validity of the argument.
Then we learnt how to implement the DPLL and WalkSat algorithm which I still have no idea about 😭 So yano I’ll leave some bits out so you have an element of surprise. 😂
Machine Learning Models
Towards the end, we briefly learn about learning models: neural networks – namely convolutional networks for image recognition, logistic regression and k-means. . This time we learn what these models consist of as in how to calculate and perform each model mathematically. Using WEKA, a data platform we use for Machine Learning, we also uploaded data, configured parameters and press a button and built a basic model. I kind of wish they told us what each parameter meant as there was a lot and I was not bothered enough to go searching myself as I don’t think I will use this tool as I’d rather use Scikit learn with Python or some other library as we did in Applied Ai …. it’s not as fun when all you do is press buttons I rather spend more time writing a program that does the same thing – I find it more flexible as you have more control over each step and you can cater it to your needs – but maybe I just don’t understand the full capabilities of WEKA. Also, the dataset we used was the Iris dataset and we’ve already done the exact same tasks using it in the Big Data Analytics module so it was a big MEH.
You will then learn the basic overview of the models: what the model consists of, when best to use it, and how to do k-means or calculate things like your activation function in a NN or how many nodes there are in CNN etc. Basically how to use the models in the most basic way and working out calculations to prove you understand the theory.
The book we read was the same one as in Applied AI which is actually quite a decent read. Despite it being from like 2016 it’s the core book anyone studying AI will have to read and covers most of the tech, discoveries and prominent research themes over the past 10 years.
What I Thought
I thought the students in this cohort were the best – we helped one another throughout this study period and one lady even held weekly study sessions where she went through the content teaching other students on a Discord channel. It’s slightly appalling that a student has had to take into their own hands to provide the education of others because this course has 0 teaching but yano because the course is so shit it’s bought together all the students and become one of the best most kind, helpful and brightest community I’ve ever come across!
I have also realised that I prefer to learn from a variety of sources rather than 1 in order to cement information. I also struggle with audio learning and need to read something in logical and practical steps in order to truly get it. This means writing my notes in a way that’s like: if this happens, then this happens and it is done by x,y,z. To cement that I need to do something practical or hands-on. So I think I will write my notes and study this way.
This is the first module that I have found I’ve had time to spare and I was able to live life as normal as possible (actually have a social life). I heard a lot of people felt the same in my class thus if you decide to finish early I recommend focusing on the past exam papers and understanding how to work out or calculate things in different ways.
Some of the games they showed us and the ways they can be solved really helped me understand the usefulness of the algorithms on basic things. The worry I have is that I’m still a bit clueless about how to apply these concepts to real-life problems that matter. Solving a game is a bit of fun but how do I implement these search heuristics or propositional logic in a business setting? Maybe I need to read more research papers based on these methods?
I think these days there are so many tools to build learning models you only need to know what each one is best used for and how to configure the parameters at the same time the only experience I got to build a proper model was in Applied AI 🤷♀️.
I enjoyed mostly the practical elements of writing code to look through the state space to find the solution. These aren’t marked and there is not much of it also there is no programming in the exam. We were supposed to use Java in the tasks as the answers are given in this language but I’ve not used Java since the ADS module and I find Python easier – it doesn’t matter really as long as your logic works. Writing the code helped me understand the step-by-step process of the search algorithms much better than reading pseudocode.
The content was actually quite interesting and although we have covered DFS and BFS many times it has only reconfirmed that I freakin’ enjoy writing search heuristics and algorithms!!! My brain can not solve for shit and writing something that does everything for you is like a dream lol. I only hope to be able to learn more about different search algorithms out there. I think my goal before studying this was to build a useful app and but after studying this course and realising that Computer Science is not about building apps or writing code😂 😅😭 my new goal is to build up enough knowledge on search algorithms, pros/cons and efficiency of them all and how to apply them. I wish to be able to see a problem/game, reduce it to logical steps and be able to formulate my own model solution to solve it and eventually one day build something that solves a new problem that can help others, share it and for it be used by many!! For now, my brain does not work like that 😭 and I need to learn step by step how to do this. I think the first do-able step is to try and solve one of the Google Hashcode challenges!!!
I also think it helps when we learn about the same topics but through a 360 lens which is awesome at the same time, we do not go in-depth about any particular topic. We cover many things lightly so if you’re interested in any particular topic I recommend you find your own resources. What’s good is that they provide the order and topic of study you should know about for AI.
In the slack channel, a lot of people said this module was awful and did not cover AI properly as they had done the free edx course Harvards cs50 Artificial Intelligence. I’ve not personally done this one but I started the cs50 intro to computer science which was AMAZING so if you’ve got time then I recommend you go through those. A lot of the students said the lectures covered most of what we were learning but the teaching was 100000x better.
Although I enjoyed this module… I don’t think I did too well on the exam as I ran out of time and panic changed a lot of questions at the end – which I know were wrong. I kept waking up at night in a sweaty panic mess for the first few days after the exam xD
This module was slow-paced and digestible in relation to the others and I was able to formulate some form of schedule. I’ve gathered advice etc from friends I’ve met on the course one which really helped was to use as many work holidays as you can for for prominent times for study like exam/hand in period. It’s worth it! I’ve been taking 2-3 days off before and for doing an exam. This allows me to relax a bit knowing I don’t have work commitments at the same time. I would take a week off for your assignments as these take up so much energy and commitment which requires more focus.
Even though this was a ‘lighter’ module I am still tired from working and then studying straight after but I built a timetable that includes exercise and allows me to have certain nights off and which really does help. Previously I studied every single night after work and the whole weekend but that has lead to burnout. I’ve realised that I have the most brain energy in the morning. Since I wake up at the crack of dawn I’ve started studying early morning before work instead – and it helps to have that 1 hour of focus when your brain is the most energised.
Studying a part-time Masters degree that requires more than 20-30 hours of study a week with constant exams and assignments on top of a full-time job is stressful. You are not only studying and working but you also have other life commitments and for some, it includes raising a family. So it is no surprise that this course can induce mental health problems, exhaustion or overwhelm.
This is why its vitally important to look after yourself. For me it meant having designated nights off per week to look forward to; it made me put in more effort on the actual study days and avoid burnout. I’ve had anxiety but it’s been manageable I think the first 4 months of study were the worst as I hadn’t studied in 14 years and assumed I need to know every single thing to pass..and that I could study everything in the last week (which is what I used to do).
Now I go at a steady pace, study throughout the weeks bit by bit, take breaks if I can’t focus and just learn more about the areas I enjoy rather than focusing on trying to learn every single thing. I’ve realised this course is a choice I’ve made and a hobby and not a necessity. I am studying because I enjoy it and to enjoy it I must feel like I have a choice in what I do with my time. This mindset is helping a lot as I found in order to reduce stress I needed to stop trying to be perfect and allow a balance in my life rather than focusing on studying 100%.
If you suffer with anxiety you may suffer from the same problems; when I introduce something new I naturally dedicate all my energy to that new thing because if I focus on anything else as I fear it will reduce the quality of that new thing, this means housework, cooking, exercising and speaking to all my friends seems like the biggest obstacle. Let me tell you something… that ‘new thing’ does NOT require all of your energy – your natural instinct is lying to you. It took a while to re-adjust and to remind myself that in order to maintain my mental health I have to also allow myself to areas of my life which include socialising, exercise and hobbies. Now, I dedicate around 10% to socialising, 20% to exercise, 20% to studying 50% to work and it’s helping soooo much!!!
The perfect balance is to enjoy life as it is, try your best and know what your body needs to be happy and remember to give it what it needs even in times of high stress.
This course is awful and badly structured and anxiety-inducing but I have learnt a lot from it – not just theoretical Computer Sciency stuff – it has helped me understand my weaknesses, strengths and limits. And anything that helps you understand yourself better is a positive and worthwhile experience. 🙏