Yavar Naddaf
Online Portfolio
Email: yavar[AT]naddaf.name


Bellow is a summary of my personal and academic projects. If you are interested in an overview of my professional software development and data mining work, please contact me.

Data Mining and Machine Learning Projects
Artificial Intelligence and Game Programming Projects
Graphics and Animation Projects
Server-side Programming and Networking Projects
Miscellaneous Projects








Data Mining and Machine Learning Projects

click to see the fullsize screenshot Predicting Preterm Birth Based on Maternal and Fetal Data

The goal of this project was to predict preterm birth (a birth which takes place between 20 and 37 completed weeks of gestation) based on medical, demographic, and lifestyle data. In a team of three, we compared the predictive performance of various classification techniques (such as Naive Bayes, Decision trees, SVM, logistic regression, and associative classifiers).
Show Details...      Project Report (PDF)


click to see the fullsize screenshot Data Mining in Health Informatics (Survey)

A detailed overview of the applications of data mining in administrative, clinical, research, and educational aspects of Health Informatics. The current and potential applications of various data mining techniques in Health Informatics are illustrated through a series of case studies from published literature.
Data Mining in Health Informatics (PDF)      Annotated Bibliography


click to see the fullsize screenshot Hybrid Recommender Systems for the Netflix Prize

An investigation of using additional movie information from the IMDb to make better recommender systems for the Netflix Prize challenge. In a team of four, we developed a number of Hybrid Recommender Systems, and were able to slightly improve the predictions submitted by the University of Alberta "Reel Ingenuity" team.
Show Details...      Project Report (PDF)      Project Slides (PDF)


click to see the fullsize screenshot Using the PageRank Algorithm to Rank Conferences, Articles, and Authors

A method for ranking academic conferences, articles, and authors by applying PageRank (the algorithm that Google uses to rank its search results) on the citation network.
     Background on Journal Ranking Systems and Project Motivation (PDF)      Project Report (PDF)      Project Slides (PDF)





Game Programming and AI Projects

Click to watch a demo video Masters Thesis: A Generic Learning Agent for the Atari 2600 Console (Work In Progress)

The goal of my Masters thesis is to build an agent that can learn to play arbitrary Atari 2600 games. The agent receives screenshots from the screen, and is able to move a virtual joystick. The agent should learn to play a new game by moving around the game and learning desirable and undesirable states. We are currently experimenting with computer vision techniques and Reinforcement Learning methods with promising results.

You can watch a demo video of the gradient-descent Sarsa Lambda algorithm learning to play the game Freeway on Youtube.


Single Agent Search Applied to a Simplified Real-Time Strategy Game

An AI agent that learns to play a simplified Real-Time Strategy game (in particular, a simplified version of Lunticus).

The AI agent finds a plan that builds the required buildings and saves enough money to beat the opponent. To do this, the game space is treated as a search graph, and I apply the Dijkstra algorithm to find the optimal path to a goal state.

You can watch the AI agent (the left player) execute a sample path against its opponent here (2D textures are turned off, so it may be hard to distinguish buildings).


Project Report (PDF)


Lunaticus

Reimplementation of Armor Games: Sea of Fire Real-Time Strategy game in Python. It uses the Opioid2D game framework, which in turn uses OpenGL for rendering. The game graphics are from the GPL strategy game Bos Wars .

The current implementation has no AI player, but if you feel like playing for both sides, it is fully functional.


Download Source (requires Opioid2D to run)


Sand-Wars

A simple strategy game developed in Matlab to demonstrate the application of machine learning and probabilistic modeling techniques in game AI. The AI player uses a Sequential Monte Carlo algorithm to estimate the opponent's strategy in different game settings. It then applies a policy search algorithm to choose its own strategy based on the estimate of the opponent's strategy.

Learning in Games via Opponent Strategy Estimation and Policy Search (PDF)


click to see the fullsize screenshot Evolving Aliens

A Space-Invader style arcade game written in C++ using Open-GL. Using Evolutionary algorithm, the aliens learn how to survive in the game environment as the game goes on. Usually, within about five minutes of playing, the neural networks of the alien brains evolve to avoid the gun and hitting other aliens.
Show Details...      Demo Video: WMV 5MB - WMV 11MB      Windows Executable (ZIP 1MB)


You can download the PowerPoint slides to see the convergance graphs Texas Holdem Poker with Reinforcement Learning

An attempt to learn to play Texas Holdem Poker using Reinforcement Learning. The program is written in C++ and it uses Q-lambda algorithm. The agent does learn some aspects of poker, but generally fails to converge to an optimal policy.
Show Details...      Project Slides (PowerPoint 474KB)


click to see the fullsize screenshot Quad-Learning

An attempt to solve the Grid World problem with an Evolutionary Computation approach, instead of the original Reinforcement Learning approach.
Show Details...      Launch Java Applet      Grid World Description


Partial search tree of possible moves AI for Othello Board Game

An AI agent for playing Othello boardgame using Min/Max tree algorithm with Alpha-Beta pruning. The game is implemented in SML and includes a command line interface, so the user can play against the AI.
Show Details...      Project Slides (PDF 401KB)     





Graphics and Animation Projects

click to see the fullsize screenshot Domino Toppling

A real-time simulation of toppling dominos written in C++ using Open-GL. The user provides a pattern in an image file and the program puts a number of dominos on the desired curve. Using rigid body dynamics simulation, the program then generates a domino effect.
Show Details...      Demo Video (WMV 1,240KB)


click to see the fullsize screenshot Mud Simulation with a Particle System

A non-real-time simulation of a mud-like particle system with frictional collisions. It was an assignment in 'CPSC 426: Computer Animation' course.
Acknowledgement: Some of the code, in particular the code to create and render blobbies from particles, was provided by the instructor.
Demo Video (MPG 330KB)





Server-side Programming and Networking Projects

click to see a sample network graph generated by YaNA on one of UBC's undergrad labs Yet another Network Analyser (YaNA)

A web-enabled network discovery and analysis tool developed in C and Python. It is capable of mapping and analyzing the routes on which data packets flow from a source machine to multiple destination host machines.
Show Details...      Documentation (PDF 40KB)      Source Files (RAR 72KB)





Miscellaneous Projects

Math Handout: Understanding Functions

In summer 2003, while working for Douglas College Learning Centre, I created this handout to help students who were taking pre-calculus math courses develop a better understanding of mathematical functions.
Download the Handout (PDF 110KB)