Missionaries and Cannibals
A Java solution to the Missionaries and Cannibals problem developed as a university assignment for the subject of Artificial Intelligence and Experienced Systems. We start off with the traditional setup of three missionaries and three cannibals, tasked with crossing a river using a boat. The boat may carry at most two entities, independent of their type. The solution is given by first modeling all of the different states and then applying the Breadth First Search (BFS) algorithm on the state space. While the search is active, all states are printed on the console.
Similar to this project
Android Emergency Application
Involved in this project: Panos Ioannidis, Dionisis Nikas
An advanced Android application that was developed as a university assignment for the subject of Software Engineering. The app is based on Google's Firebase platform. Users are able to easily authenticate with their Google accounts. Real time chat with a hypothetical licensed doctor, in-app and system wide alerts on major catastrophic events, a panic button for emergency calls, a driving mode that notifies of speeding violations and a disability mode for fall detection. This software was developed in phases based on RUP with detailed UML diagrams.
Android Speedometer
A simple Android application that was developed for the subject of Software Engineering. The app uses Google's services to determine the phone's location and creates a local database to keep track of speeding violations. The user is able to set the upper speed limit (km/h) and start or pause speed monitoring on demand. When a speeding violation is detected, the app notifies the user with characteristic sounds and text-to-speech messages. The longitude, latitude, speed and timestamp of the violations are stored locally and overlaid on a Google Map.
Compilers
Involved in this project: Panos Ioannidis
A programming project that was developed as a university assignment for the subject of Compilers. This project features three languages: C, Java and Python and the Flex lexical analyzer. We include: a Python solution for the balanced parentheses problem using a pushdown automaton, a Python program that generates random character sequences based on specific grammar, a Java program that implements a top-down syntax analyzer and two lexical analyzers in Flex for sample variable and geometric shape declaration.
Dining Philosophers
A Java solution to the Dining Philosophers problem developed as a university assignment for the subject of Operating Systems. On startup, the user is prompted to enter the number of philosophers in the simulation. Then, the philosophers are initialized with adjacent forks between each other as they "sit" on the lunch table. Each philosopher can be in one of three states: thinking, hungry or eating. As they get hungry and eventually start eating, they lift their forks, thus locking them for the amount of time required to eat. When forks are locked, adjacent philosophers must wait for the neighbor to release them. All state changes are displayed in console as well as the average waiting time for each philosopher.
Relational DBMS 1
Involved in this project: Panos Ioannidis, Dionisis Nikas
A SQL based project that was developed as an assignment for the subject of Databases. The goal of this project is to design a relational database for storing the data of a car dealership company. We generated hypothetical database entries using Mockaroo for random data generation. We designed SQL queries for creating tables, managing records, filtering and defining relationships. We perform database normalization based on Third-Normal-Form (3NF) and Boyce-Codd Normal Form (BCNF). We setup triggers and cursors to ensure data integrity and perform maintenance. Finally, we have written a program in Java using the JDBC client to simulate real world consumption of the database.