A collection of academic projects completed during the AI Masters program at Umeå University.
| Project | Description | Technologies |
|---|---|---|
| Answer Set Programming | Logic programming for argumentation frameworks | ASP, Clingo, Python |
| Deep Learning 1 | CNN-based facial emotion recognition on AffectNet with training and evaluation scripts | Python, TensorFlow, Keras |
| Deep Learning 2 | Manual backpropagation and gradient descent in JAX for regression and classification models | Python, JAX, matplotlib |
| Machine Learning 1 | Supervised learning assignment with classification and regression | Python, scikit-learn, Jupyter |
| Machine Learning 2 | Neural networks, PCA, and clustering across California Housing, Wine, and MNIST | Python, scikit-learn, TensorFlow, Jupyter |
| Machine Learning 3 | Human activity recognition with classical models and raw-signal deep learning | Python, scikit-learn, TensorFlow, Jupyter |
| Fashion Article Classification | Image classification using k-NN and neural networks | Python, scikit-learn, TensorFlow |
| Othello | Game AI engine with Alpha-Beta pruning | Python, Minimax, IDS |
| Reinforcement Learning | Bandit benchmarking and multi-agent Pong with Q-learning | Python, pytest, ma-gym |
| Spin the Wheel | Full-stack web application prototype | Spring Boot, Angular, Firebase |
| Statistics | Statistical inference analysis | R, tidyverse |
| LLM Backend | FastAPI backend for educational game with LLM-powered hints | Python, FastAPI, Hugging Face |
Course: AI-2 (5DV181) – Logic Programming
Implementation of argumentation semantics using Answer Set Programming (ASP). Includes conflict-free sets, admissible sets, stable extensions, and preferred extensions. Features both declarative ASP encodings and an imperative Python solver for performance comparison.
Course: Deep Learning
Facial emotion recognition using a Convolutional Neural Network (CNN) trained on the AffectNet dataset. Includes:
- Custom CNN architecture implemented in Keras
- Four-class emotion recognition: Happy, Sad, Surprised, and Mad
- Training, validation, and test evaluation on AffectNet emotion data
- Visualization of loss and accuracy curves
- Provided environment YAML for reproducibility
Model file: affectnet_emotion_cnn.keras
Course: Deep Learning (5DV236)
Backpropagation assignment implemented with JAX and the course jaxon library. The project focuses on composing layer Jacobians into full gradients and then training models with manual gradient descent.
- Manual backpropagation through model layers
- Gradient descent for a linear regression example
- Gradient descent for a feed-forward multiclass classifier
- Learning-curve generation and written report
Course: Machine Learning
Classification of fashion items from the Fashion-MNIST dataset using:
- Custom k-Nearest Neighbors (k-NN) implementation
- Dense Neural Network (Multilayer Perceptron)
- Hyperparameter tuning and model evaluation
Course: Machine Learning (5DV238)
Foundational supervised learning assignment covering:
- Classification on the Breast Cancer Wisconsin (Diagnostic) dataset
- Regression on the California Housing dataset
- Model training, evaluation, and comparison using scikit-learn
Course: Machine Learning
Second machine learning assignment covering neural network regression on California Housing, PCA on Wine and MNIST, and custom/scikit-learn K-Means clustering analysis.
Course: Machine Learning (5DV238)
Third machine learning assignment focused on human activity recognition using the UCI HAR smartphone dataset. The project compares classical models on engineered features with raw inertial-signal experiments, including a 1D CNN for sequence modeling.
♟️ Othello
Course: Artificial Intelligence (5DV243)
A competitive Othello (Reversi) game engine featuring:
- Alpha-Beta pruning with iterative deepening search
- Custom position-weighted heuristic evaluation
- Transposition tables and move ordering optimizations
- Time-controlled search within specified limits
Course: Reinforcement Learning
Hands-on reinforcement learning project with two parts:
- Multi-armed bandit evaluation against an epsilon-greedy reference baseline
- Multi-agent Pong (
PongDuel-v0) using a tabular Q-learning style agent - Optional rendering, recording, and GIF export for episode analysis
Course: Software Engineering / Prototype Development
A full-stack "Spin the Wheel" application with:
- Backend: Spring Boot 3.x REST API with OpenAPI documentation
- Frontend: Angular 19 SPA with slot machine UI components
- Firebase integration for data persistence
Course: Statistics for Engineers
Statistical analysis investigating the impact of structured micro-breaks on workplace productivity. Includes hypothesis testing, paired t-tests, effect size calculations, and data visualization.
- Python 3.10+ (for ML, ASP, and Othello projects)
- Java 17+ (for Spin the Wheel backend)
- Node.js 18+ (for Angular frontend)
- R 4.x (for Statistics project)
- Clingo 5.x (for ASP project)
- Gym/ma-gym + Pillow (for RL Pong environment and GIF export)
Michail Pettas
Umeå University – AI Masters Program
These projects are academic assignments. Please respect academic integrity policies if referencing this work.
Standalone Project
Backend API for an educational game platform, built with FastAPI. Provides endpoints for curriculum, game logic, user modeling, and AI-powered hint generation using large language models (LLMs) via Hugging Face. Designed to support a frontend for interactive learning experiences.
- RESTful API for game and curriculum management
- Integration with Llama-3-8B-instruct via Hugging Face Inference API
- In-memory session storage for local development
- Docker and local run support
See project README for API details and usage instructions.