Creating an Effective and Enjoyable Learning Experience

Dr Arron Lacey

A little bit about me…

  • 2021: Senior Community Manager at the Alan Turing Institute
  • 2017:2021: Lecturer in Machine Learning at Swansea University
    • Now an Honorary Lecturer
  • 2011:2014 Epidemiologist at the SAIL Databank
    • Mainly epilepsy and cardiology

About this talk …

  • We learn best through doing, not just listening.
  • We will focus on just two themes: Achievement and Action.
  • Achievement
  • Action

About this talk …

  • Achievement
    • Expectations
    • Understand your audience
    • Relevance
    • Accessible Content
  • Action
    • Instant Gratification
    • Learning Environment
    • Collaboration
    • Future Learning

Expectations

  • Onboard the class - we do it in new jobs so why not in a learning environment?
  • Provide a roadmap for the session/course/workshop
    • The class knows what to expect and to prepare
  • You will be able to do / understand this at the end

Understand your audience

  • Course participants will already have their own experience
    • we want to build on that, not teach them what they already know
  • Assess their motivation and needs
    • Try a pre-survey to get participant experience and tailor your delivery.
  • Encourage constant feedback
    • Listen and pivot if needed
    • Direct the audience to what kind of feedback will be helpful
    • If I learn someone is a cardiologist I will try throw in some relevant examples later in the course

Relevance

  • No vague tutorials - embrace abstraction
  • Think of real-world challenges that students might face
  • Is this a health related course?
    • Start scouring the internet for healthcare datsets to use!
    • Although it’s ok to use a really out there example to keep things fresh

Abstraction

Abstraction is a powerful tool to help remember concepts - but are foo, bar and baz?

# Function definition is here
def foo( arg1, arg2 ):
   # Divide and return"
   bar = arg1 / arg2
   return bar;

# Now you can call sum function
bar = foo( 10, 20 );

Abstraction

Use abstraction in function and variable names

# Function definition is here
def epilepsyIncidence( numEpilepsy, Population ):
   # Divide and return"
   RateRatio = (numEpilepsy / Population)*1000
   return RateRatio;

# Now you can call sum function
IncidenceRate = epilepsyIncidence( 10, 5145 );

print "The Incidence Rate Ratio for Epilepsy is : ", IncidenceRate, "per 10,000"
"The Incidence Rate Ratio for Epilepsy is : 19.4 per 10,000"

Abstraction

Action

  • Absorbing knowledge is important, but acting on it re-enforces learned material
  • We should aim to minimize the time between learning a concept and practicing it.
  • Try to jump into an interactive Minimal Working Example (MWE) as often as possible
  • I try to stick to 20 minutes theory with MWEs followed by 30 mins practical

Instant gratification

  • Instant gratification is a powerful vehicle for learning
    • Even after 15 years of coding I celebrate when my code works!
  • (Easy) Practice examples also allows us to fail (gracefully) and learn from mistakes
    • This is why I can’t do DIY…

Learning Environment - build on MWEs

  • A consistent learning environment that is easy to use
  • Keeps a tight focus for you to control the environment
    • I recommend open source cloud based solutions where possible
    • Kaggle, Colab, Binder etc
  • Can self assess and understand how they are learning

Kaggle for Data Science and Machine Learning

  • My favourite cloud solution for teaching Data Science and ML
  • Dockerized notebooks
  • Free GPU
  • Access to many and huge datasets (including those hairy beasts)
  • Version control

Collaboration

  • Set the tone and expectations for collaborative sessions
    • Code of conduct
    • Set clear goals for sessions
  • Try and pair up participants that will learn from eachother
  • Some ideas:
    • Discuss the benefits and potential harms of using digital technology to attempt to detect dementia 20 years early
    • Create a COVID Dashboard that tracks new cases by variant over time
    • GitHub Pull Request Practice

Future Learning

  • Move the participants towards independence in the topic
  • Set them up to succeed
    • Recommend learning materials that will build on the course and challenge them
    • Tailor by discussing their motivations for enrolling on the course/workshop

Introduce relevant GitHub projects

Thank you for your time!

Slides made with Quarto + revealjs