Projects

Browse through a collection of open source computer science projects I have worked on.

2
android
1
biopython
3
bootstrap
1
c-plus-plus
2
c-sharp
6
css
2
cv2
2
firebase
1
flex-lexical-analysis
6
fontawesome
2
game
2
google-maps
3
hobby
6
html
1
jasypt
8
java
1
java-spark
6
javascript
3
jquery
1
jstl
1
laravel
3
matplotlib
1
mockaroo
2
multithreading
3
mysql
1
neat-algorithm
3
netlify
1
networkx
1
neural-networks
6
numpy
2
pandas
1
php
2
pillow
2
postgresql
9
python
3
react
1
reinforcement-learning
1
scikit-image
2
scikit-learn
1
scipy
2
servlets
7
sql
2
sqlite
3
tailwindcss
2
tomcat
19
university
3
visual-studio
6
web-app
2
website

Airline Reservation System

A simple console based airline reservation system written in C++. Users are able to select existing flights determined by unique flight codes, view the list of direct and connecting flights, create and manage flight routes and make passenger seat reservations. Sample flights are included from and to Athens, Thessaloniki and Patra cities. The project has been developed with data structures in mind, using object oriented programming and utilizing data structures such as Linear Lists and Linked Queues.

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.

Bioinformatics

Involved in this project: Panos Ioannidis
A Python project that was developed as a university assignment for the subject of Bioinformatics. The goal of this assignment was to process hypothetical sequences of nucleotides on seven different scenarios. The Biopython library is used for biological computation. The Needleman-Wunsch algorithm is utilized for sequence alignment along with Hidden Markov Models with the Viterbi algorithm.

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.

Cryptography

An experimental Python project that illustrates basic cryptography techniques. It features implementations of the Caesar and Vigenere cipher with their respective unit tests. The Caesar cipher is initialized with a key integer value ranging from 0 to 25. The Vigenere cipher is initialized with a key string value that is preferred to be a large sequence. Both ciphers have encrypt and decrypt methods that accept plain strings of text.

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.

Hamop Social Network

Hamop (from ham radio operator) is an advanced social networking application created as a hobby project of mine. It uses Google's Firebase for the backend and the React framework for the frontend. The styling is based on Tailwind CSS utility-first framework. Visitors are able to sign up using their Google account and create a public profile to interact with others on the website. Registered users can make posts, comments, like other people's posts and earn reputation on their profile. The frontend was hosted on Netlify, so no custom servers were needed. Using free and open source tools, there is no essential cost for the project to be alive.

Image Processing

Involved in this project: Panos Ioannidis, Dionisis Nikas
A Python project that was developed as a university assignment for the subject of Image Processing. The program takes an input image and a reference dataset of photos. The goal is to colorize the greyscale image using a trained support vector machine. To achieve that, we have implemented a variety of image processing techniques. First, we change color spaces from RGB to LAB. Then, we apply the SLIC algorithm to find the group of superpixels for each image. These segments along with SURF and GABOR features are given as input for the SVM. Using scikit-learn, we use machine learning techniques to predict the color of a superpixel using the dataset superpixels as reference. The output of the program returns the colorized version of the input image.

Marketing Mind

Involved in this project: Maria Mavrommati
The source code that powers Marketing Mind, a marketing consultancy agency that offers integrated marketing solutions based on your business special needs.

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.

Multimedia Systems

Involved in this project: Panos Ioannidis
A Python project that was developed as a university assignment for the subject of Multimedia Systems. The program first implements Run-length encoding (RLE) for a sample image of Mona Lisa. Then, Differential pulse-code modulation encoding (DPCM) is applied on a sample TV advert. We perform motion prediction for that advert and object removal on a video scene that features moving characters on a stage. For the error frame calculations, we use the sum of absolute differences (SAD) metric and macroblock techniques.

Pattern Recognition

Involved in this project: Panos Ioannidis
A Python project that was developed as a university assignment for the subject of Pattern Recognition. The program uses the "MovieLens 100K" dataset that includes movie ratings of random users. The data included is processed using the Pandas library. We implement three algorithms: Basic Sequential Algorithmic Scheme (BSAS), K-means and hierarchical clustering. Finally, we use a neural network with multilayer perceptron and least squares linear regression to make predictions on movie ratings.

Personal Website

The source code that powers my personal website using HTML, CSS and JavaScript. The React framework is used to build an interactive user interface and the Tailwind CSS library for utility-first styling. The project is open source on GitHub and is currently hosted on Netlify. The website is accessible from two domains: thanos.dev (primary) and thanosparavantis.com (alias).

Rapidsay

This web application was my first full fledged social network I created in PHP using the Laravel framework. Inspired by features found on Facebook and Twitter, it includes an authentication system, user profiles, topic based post creation with comments and user ratings. Users are able to search for content and receive notifications when others interact with their content. A custom administrative support system is also included, with a functioning report system, knowledge base and account restrictions.

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.

Relational DBMS 2

Involved in this project: Panos Ioannidis, Dionisis Nikas
A SQL based project that was developed as an assignment for the subject of Databases. This project uses the "UK Road Safety: Traffic Accidents and Vehicles" dataset that is available on Kaggle. We designed optimized SQL queries for looking up accident information in the dataset. We created indexes to speed up queries. We broke up tables into partitions based on specific ranges and database relations. Finally, we have written a program in Java using Spark that executes the designed SQL queries and calculates related statistics.

Shannon Fano

Involved in this project: Panos Ioannidis, Dionisis Nikas
A Python project that was developed as a university assignment for the subject of Code and Information Theory. The program features a client-server implementation using sockets. It simulates a simple exchange of an image between the client and the server. Once the user inputs a specific parameter on how the image should be compressed, the Shannon-Fano coding is applied. The image is compressed and sent from the client to the server, which then applies decompression to reconstruct the image.

Social Networks Analysis

Involved in this project: Panos Ioannidis
A Python project that was developed as a university assignment for the subject of Social Networks. The program uses the "Stack Overflow Temporal Network" dataset and is processed using the Pandas library. We partition user interactions based on timestamps. We then create a graphical representation of the network as it progressed through time. Finally, we compute Degree Centrality, In-Degree Centrality, Out-Degree Centrality, Closeness Centrality, Betweenness Centrality, Eigenvector Centrality and Katz Centrality using the NetworkX library.

Student University Information System

Involved in this project: Panos Ioannidis, Dionisis Nikas
A Tier 3 Java web application that was developed as a university assignment for the subject of Object Oriented Application Development. The app features a custom authentication system with roles including students, instructors and secretaries. Students are able to view details about their courses and assigned grades. Instructors are able to grade students per course. Secretaries are able to create, edit or delete courses and assign instructors to courses.

Thesis

Involved in this project: Dionysios Sotiropoulos
On this project, we study applications of the NEAT algorithm in deterministic and non-deterministic game environments. First, we look at an overview of the NEAT algorithm, how it works, design principles and the challenges that come with implementation. Next, we introduce a custom two-dimensional game in Python for two players: blue and red. We lay down the basic rules and structure, in order to create an environment suitable for neuroevolution. Finally, we study five training cases, where the blue and red player are given several tasks that must be achieved through the evolution of neural networks.

Tic-Tac-Toe

A simple Tic-Tac-Toe game implementation in C# using window based components. The user is greeted with the game setup form to select the blue or red player. Then, the game starts off in a five by five grid of clickable elements, similar to the traditional Tic-Tac-Toe setup. The user is tasked to beat a naive computer player that is configured to make random moves by selecting empty spots on the game board. As the game progresses, we check whether our win conditions are satisfied by checking diagonal left, diagonal right, horizontally and vertically. Depending on each player's moves, the game can end in a win or draw state.

e-Bookstore

Involved in this project: Panos Ioannidis
A C# application that was developed as a university assignment for the subject of Human Interaction with Computers. The app includes sign in and registration features for employees and customers. We setup a virtual coffee shop interface with the ability to order items from a menu. We further include a virtual photocopy machine interface with several photocopying options to choose from. We also implement a complete online bookstore with book overviews and shopping cart features. This software was developed in phases based on RUP with detailed UML diagrams.

e-Career Office

Involved in this project: Panos Ioannidis, Dionisis Nikas, George Theofilopoulos
A Java web application that was developed as a university assignment for the subject of Software Technologies. The app features a custom authentication system with roles including super admins, admins, students and HR members. Students can upload and manager their resumes. HR members appointed from companies can create classifieds. Administrators can assign students to classifieds, manage accounts and update job categories. Super administrators have complete control over the platform and are able to create new departments and add new companies. This software was developed in phases based on RUP with detailed UML diagrams.