Skip to content
← Back

Tutoring · 2024 – 2025

ClassBro

Tutoring and mentoring across computer science

Active · 2024 – 2025

Learning by building ↓

Tutoring through ClassBro

Since 2024, I have tutored and mentored university students across computer science subjects through ClassBro. The work spans programming fundamentals and advanced topics: from introduction to programming and data structures, through machine learning and AI, to databases, systems and cloud computing. I work one-on-one with learners to bridge concepts and code, building confidence and independence in problem-solving.

Subjects by area

Programming and software engineering

  • Introduction to Programming
  • Introduction to Programming and Problem Solving
  • Introduction to Python
  • Principles of Programming
  • Programming Fundamentals
  • Programming III
  • Computational Thinking and Problem Solving
  • Introduction to Computer Science
  • Computer Science Fundamentals I
  • Foundations of C Programming
  • C++ Programming
  • Algorithms and Programming in C and R
  • Programming and Computation II: Data Structures
  • Imperative and Functional Programming
  • Machine Organisation and Programming
  • Introduction to Software Development
  • Software Engineering Fundamentals
  • Web Science

Data science and analytics

  • Foundations of Data Science
  • Elements of Data Processing
  • Data Taming
  • Computational Data Analysis
  • Statistical Programming for Data Science
  • Quantitative and Data Analysis in Python
  • Data Analysis for Semi-structured Data
  • Graphical Data Analysis
  • Data Visualisation
  • Visual Analytics
  • Insights Through Data
  • Data Analytics for Business
  • Data Driven Web Technology
  • Data Methods for Health Research
  • Introduction to Data Science and Systems

AI and machine learning

  • Introduction to Artificial Intelligence and Data Analytics
  • Artificial Intelligence
  • Fundamentals of AI, Data and Algorithms
  • Fundamentals of Machine Learning
  • Machine Learning
  • Statistical Machine Learning
  • Statistical Learning for Data Science
  • Multivariate Statistics for Data Science
  • Pattern Recognition
  • Data Mining
  • Generative Artificial Intelligence
  • LLM project work
  • Introduction to Robotics
  • Game Design and Development
  • Foundations of Computing 2

Computer systems, networks and cloud

  • Introduction to Computer Systems
  • Introduction to Computer Systems, Networks and Security
  • Computer Systems
  • Fundamentals of Computer Architecture
  • Logic and Computer Architecture
  • Systems Programming
  • Internet Programming
  • Internet Technologies
  • High Performance Computing
  • Cluster and Cloud Computing
  • Social Computing Techniques

Databases and data engineering

  • Introduction to Databases
  • Understanding Databases
  • Relational Databases
  • Database Principles
  • Advanced Database Systems
  • Big Data Systems, Programming and Management
  • Data Programming Workshop
  • Data Cleansing
  • Understanding Data and their Environment

Mathematics and statistics

  • Engineering Mathematics I
  • Quantitative Methods for Engineers
  • Introduction to Optimisation
  • Optimisation
  • Intermediate Statistical Methods
  • Statistical and Design Considerations in Policy Research
  • Theory and Practice in Science

Business and information systems

  • Business Decision Making
  • Computer Applications for Business
  • Transforming Business with Information Systems
  • Information Technology Management
  • Computing and IT Professionalism

Social science and humanities

  • Text as Data
  • Spatial Planning Analytics
  • Research Methods and Project Preparation
  • Journalism Practicum I

Research and dissertation support

  • Dissertations
  • Project proposals

Career and interview coaching

  • Interview coaching
  • AI engineer interview coaching

Run the lesson: minimax, then alpha-beta

Below is a concept lesson from my teaching work: learning by building, not by watching.

Pick a starting position or play a few moves, then compare the two searches. They always agree on how the game ends with best play. Alpha-beta gets there by visiting fewer positions, and the rows below show where it saves the most.

  1. 01

    Minimax

    Try every move until the game ends. A finished game scores +1 if X wins, −1 if O wins and 0 for a draw. X takes the highest score, O takes the lowest, and the scores pass back up the tree.

  2. 02

    Alpha-beta

    Carry two numbers down the tree. Alpha is the best score X can already count on, and beta is the best score O can already count on. Once alpha reaches beta, nothing left in that branch can change the answer, so the search stops there.

  3. 03

    Order

    Pruning cuts deepest when strong moves are tried first. Switch the search order and watch the alpha-beta count change while the outcome stays the same.

Synthetic positions · written from scratch · runs in your browser

O to move

Choose an empty square to play the next mark. Arrow keys move between squares, and Enter or Space plays.

Best move

Start from

X opened in the centre. O to move, with eight squares to choose from.

Search order

Squares 1 to 9, left to right and top to bottom.

Positions visited from here

Minimax
55,505
Alpha-beta
2,316
Fewer
96%
Branches cut
1,014

Best moveTop left. With best play from here, it is a draw.

Move by move

Each row is one move from this position, in search order, with what it leads to under best play. The top bar is minimax and the bottom bar is alpha-beta, on the same scale.

  1. Top leftDraw

    Minimax6,812
    Alpha-beta703

    New best so far

  2. Top middleX wins

    Minimax7,064
    Alpha-beta166

    Cannot beat top left. Alpha-beta stopped once it knew.

  3. Top rightDraw

    Minimax6,812
    Alpha-beta254

    Cannot beat top left. Alpha-beta stopped once it knew.

  4. Middle leftX wins

    Minimax7,064
    Alpha-beta106

    Cannot beat top left. Alpha-beta stopped once it knew.

  5. Middle rightX wins

    Minimax7,064
    Alpha-beta174

    Cannot beat top left. Alpha-beta stopped once it knew.

  6. Bottom leftDraw

    Minimax6,812
    Alpha-beta282

    Cannot beat top left. Alpha-beta stopped once it knew.

  7. Bottom middleX wins

    Minimax7,064
    Alpha-beta311

    Cannot beat top left. Alpha-beta stopped once it knew.

  8. Bottom rightDraw

    Minimax6,812
    Alpha-beta319

    Cannot beat top left. Alpha-beta stopped once it knew.

O to move. Best move: top left, and with best play it is a draw. Minimax visited 55,505 positions and alpha-beta visited 2,316, 96% fewer.

The code

function minimax(board, player, order, stats) {  stats.nodes += 1;  const score = finalScore(board);  if (score !== null) return score;  let best = player === "X" ? -Infinity : Infinity;  for (const cell of order) {    if (board[cell]) continue;    board[cell] = player;    const value = minimax(board, other(player), order, stats);    board[cell] = null;    best = player === "X" ? Math.max(best, value) : Math.min(best, value);  }  return best;}

Marked lines are where alpha-beta differs from minimax.

Names, cohorts, universities and organisations are withheld. The lesson below is synthetic and written from scratch for this page.

Back