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.
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
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.
REDESIGNED
Comments