UNIVERSITY PROJECTS

CAPSTONE

WarningApp

Type:
Mobile Application
Language:
Java
Platform:
Android Studio

The Project

WarningApp is a mobile application where the users will post natural disasters
or human caused incidents in order to notify other users about these cases.

The users can search a location to find out if it is safe, they will be able to view
the cases location either from the case’s information or using the map in the
application to check if they are close.

They can browse all the recent cases and comment on them if they have any
feedback to offer. Furthermore, they can be notified if they have cases that
are near theirlocation.

Photos

Project Document

In order to access the code of this project or the full analysis document, click here (Password Protected Page).
Contact me to receive the password.

HUMAN COMPUTER INTERACTION

Youtube Theater Mode:
Redesigned

The Project

As a product designer, I had to redesign the Youtube Theater Mode according to a user's
input that was obtained through an interview.

Interview

Some questions and answears from the interview:
So why you stopped using it? Can you explain to me what makes you frustrated on this Youtube’s feature?
A: I stopped using it because I find not beneficial for me as it does not display the whole page in a dark/black layout (to make it more cinematic). Also, for the reason that it is the feature makes the video in widescreen it hides content that i would like to see. 
You mentioned that it hides content, what content does this mode hides that you would like to see? 
A: It hides comments, recommended videos, and the description of the video. I find really annoying to have to switch from the screen down to comments. 

WAAD

User needs transformed into a Work Activity Affinity Diagram (WAAD)
Video Playback Screen
doesn't feel Cinematic
A
>
Not all page is
in black layout
A1
>
White layout of
the title/Description
is annoying to the
eye (Bottom Part)
A2
Video Playback Screen
doesn't feel Cinematic
B
>
Hidden content such as comments
and suggested videos when watching a video
B1
>
Losing the sight of the video when switching to view the comments or suggested videos
B2
>
Cannot make/ respond/ like comments while watching the video
B3

Redesigned

Project Document

In order to access the document with the full analysis of the project, click here (Password Protected Page).
Contact me to receive the password.

AI PRINCIPLES

AI Game

Algorithms battle: Greedy vs MinMax

Language:
Java

The Project

The AI Project is a board style game played between two computer agents.
Each agent will be playing accordingly to their employed strategy:
- The black player's strategy is the Min-Max algorithm.
- The white player's strategy is the Greedy algorithm.

Each player plays after the other’s turn. In addition to the AI agents, the min-max
algorithm and the greedy method will use heuristics to determine how each agent
behaves in the game.

The board size is 8x8.
The goal of each agent is to capture more pieces of squares.
The player can capture the other player’s pieces if they are between a line formed
by the player’s pieces.

Pseudocode

 Function minmax (node, depth, maximized) is
          if depth = 0 or node is a terminal node then
             return
evaluation heuristic value        

          If (maximized) then
             
value = -∞
              for each possible node of the board do
                     value = max(value, minimax(node, depth-1, FALSE))
               return value
          Else
              
value = +∞
               for each possible node of the board do
                       value = min(value, minimax(node, depth-1, TRUE))
               return value
MinMax
 Function greedy (board) is
          best_value = 0
          move = null
          
for each possible node of the board do
          value = all the open squares that the can move
          
if (value > best_value) then
                best_value = value
                move = move that produces the found value
           
return move
Greedy
 Function alphabeta (board, depth, maximized, a, b, evaluator) is
       
if depth = 0 or node is a terminal node then
           
return evaluation heuristic value        
        
if maximized then
           value = -∞
           
for each possible node of the board do
          (*recursive*)
          best_value = max (value, alphabeta (node, depth – 1, FALSE, a, b, heuristic))
         
if best_value > value then
          value = best_value
          (* a = max(a, value) *)
         
if value > a then
          a = value
         
if b <= a then
         
break 
      
Else
          value = +∞
          
for each possible node of the board do
          best_value = min (value, alphabeta (node, depth – 1, TRUE, a, b, heuristic))
          
if best_value < value then
          value = best_value          
          (* b = min(b, value) *)
          
if value < b then
          b = value
          
if b <= a then
          
break
      
return value
Alpha Beta Min Max
gameboard = [8][8]
for each i,j in the matrix = equals 0
[3,3] & [4,4] = 1
[3,4] & [4,3] = 2
for each [i][j] that equals 1 do
      increase score1 (*1st player’s score*)
for each [i][j] that equals 2 do
      increase score2 (*2st player’s score*)
if (black player) then
    player1 = MinMax_BlackPlayer( piece(1), depth(integer))
    (*min max or min max alpha beta pseudocode*)
    print gameboard
else
    player2 = Greedy ( piece(2) )
    (*greedy pseudocode*)
   
print gameboard
if possible_moves = FALSE then
   
if score1 > score2 then
          print “Winner: Black Player”
   
else if score1 < score2 then
          print “Winner: White Player”
   
else
         
print “Draw”
Game
Function Evaluator_for_hueristic is
gameboard =  [][]
BlackCorner = 0
WhiteCorner = 0
if corner [0,0] has black piece then
    BlackCorner++
if corner [0,0] has black piece then
    WhiteCorner ++
if corner [7,0] has black piece then
    BlackCorner++
if corner [7,0] has black piece then
    WhiteCorner ++
if corner [0,7] has black piece then
    BlackCorner++
if corner [0,7] has black piece then
    WhiteCorner ++
if corner [7,7] has black piece then
    BlackCorner++
if corner [7,7] has black piece then
    WhiteCorner ++
boardCorners = 100 * (BlackCorner – WhiteCorner) / (BlackCorner + WhiteCorner + 1)
return boardCorners
Game

Winner

The winner of the game was black using Min Max search (even after the implementation of alpha beta cutoffs). It performed better than the white obtaining a high profit on all runs. The greedy method was somehow good
in the beginning but the end was devastating for this agent.

Project Document

In order to access the code of this project, click here (Password Protected Page). Contact me to receive the password.

3D METHODOLOGIES

Type:
3D Animation
Platform:
3ds Max