Skip to content

daviddias99/projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 

Repository files navigation

Projects

This repository is a summary of the projects I've made, mainly for the Integrated Master's in Informatics and Computing Engineering at FEUP. Section C contains projects done during an exchange semester at the Technische Universität München.



Language breakdown

Language Projects*
C++ 1, 2, 5, 24
C 1, 3, 7, 12, 24
Java 8, 16, 17, 20, C.1, C.2
Python 15, 23, A.1 D.1, C.2
Prolog 9, 10
Javascript 6, 10, 13, 14, 18
Typescript 25, A.2, C.2 A.3
SQL 4, 11, 13, 14, 18, 19
Flutter 11
HTML/CSS 13, 14
PHP 13, 14
Laravel 14
ReactJS 18, 19, A.2, C.2
Spring C.2
Ruby 22
MongoDB A.2 C.2
Lua D.1

*Project IDs are from section B unless indicated otherwise


A. Projects

1. Emergent mechanisms to foster social awareness

This project was developed for the New Talents in Artificial Intelligence grant by the Calouste Gulbenkian Foundation, of which I was one of twelve recipients.

This grant served as my introduction to artificial intelligence and machine learning.

My investigation, developed under the tutorship of Prof. Rosaldo Rossetti (PhD), titled "Emergent Coordination Mechanisms to Foster Social Awareness" used Multi-Agent Reinforcement Learning in conjunction with state-of-the-art reward-shaping techniques like Difference-Rewarding and Resource abstraction to study the concepts of sustainability and scalability under two existing literature problems defined with respect to new model for a class of problems dubbed "Resource Appropriation Problems".

The repository will be available soon

2. Sciencemeter

This project is currently under development for the Departement of Informatics at FEUP, under the guidance of professor André Restivo (PhD) and Rui Maranhão (PhD). The Sciencemeter platform is used to aggregate metrics from different sources, regarding scientific productions by the Department's researchers.

Since I was the sole developer of the project I was being given full liberty in it's achitecture and design, which gave me the chance to work on these skills.

Not open source

3. SIMoT

SIMoT is a low-fidelity IoT simulator developed by Tiago Fragoso in order to evaluate different centralized device orchestration techniques. The simulator allowed the author to improve orchestration techniques purposed by Silva et al. for its extension of the Node-RED framework.

For my Master's thesis, I took advantage of this simulator by extending it to support decentralized orchestration using the Consensus-based Bundle Algorithm (CBBA). As such, I contributed to it by converting it to Typescript and performing a general code refactor to improve its extensibility.

Repository not available

B. MIEIC-FEUP

1. PROG - Programming

This course had the goal of introducing us to basic programming concepts like types, input/output, control structures, data structures, etc. using the C/C++ language.

More info on the course.

Both projects were developed with Luís Cunha.

Project 1

Description:

The objective of this practical work is to develop two text processing programs and to create a data file that can be used as the basis for the development of several word games, such as scrabble, hidden words, crosswords, or others. The development of the programs must be made in a modular way, so that some of the functions can be reused in other programs to be developed in the future.

The purpose of the first program is to "isolate" the entries (headwords) in a dictionary, in order to produce a list of valid words.

The purpose of the second program is to implement and test some functions, that can be used in the future development of some word games, for doing common operations like: verify if a given word exists in a word list; verify if a given word can be made using a given set of letters or show all the words that can be made using a given set of letter.

Grade: Ungraded

Link to the project

Project 2

The objective of this practical work is to develop two programs, one to create a crosswords puzzle and save it, in a text file, the other to load a puzzle and let the user solve it. Students were expected to practice the development of programs in C++ language, following the "object-oriented" programming paradigm, selecting suitable data structures and algorithms for implementing the programs and taking advantage of the data structures and algorithms available in the C++ Standard Template Library (STL).

Grade: 20/20

Link to the project


2. AEDA - Algorithms and Data structures

In this course was focused on teaching us different algorithms (searching, sorting, ...) and data structures (lists, heaps, trees, sets, ...) and practicing their use using C++. We also learned about some concepts of UML, algorithm complexity (big-O notation).

More info on the course.

Both projects were developed with Luís Cunha and Gaspar Pinheiro.

Project 1

Description: The goal of the project was to create an information system for a chain of farmacies using the knowledge of algorithms and data structures gathered throughout the course. The system was to be created as a console application with CRUD operations and sorting/listing operations. We had the constraint of using only linear data structures (lists, arrays,...)

Grade: 19.4/20

Link to the project

Project 2

Description: This project was built on top of the first one and the goal was to alter the first solution to use non-linear data-structures (sets, trees,...).

Grade: 19.6/20

Link to the project


3. LCOM - Computer Laboratory

In this course we were taught concepts of low level and device programming. We had weekly lab sessions where we experimented with different devices such as the timer, mouse, keyboard, videocard. For the final project we developed a game called Typing Invaders that used all the devices used in the labs and the RTC, and serial port. This course allowed me to gain knowledge on low level programming, more advanced C, and embedded systems.

More info on the course.

The projects and labs were developed with Luís Cunha.

Labs

Description: During the lab sessions we followed handouts that taught us how to program for difference I/O devices. The handouts were written in a way that incentivized self-learning and researching for achieving the desired outcomes

Grade: Ungraded

Link to the project

Project

Description: For the project we are to propose an application that would utilize all the devices and that showcased our C programming skills. We created a typing game called Typing Invaders that used all the devices. This was one of our first large projects that had no specification, so we were able to train our application design skills.

Grade: 19/20

Link to the project


4. BDAD - Databases

In this course we learned concepts of database design (normal forms, functional dependencies, ...) and of relational database systems. We learned the best practices for designing databases, querying, triggers, ACID, etc.. For the project we were challenged to to design and implement a database using SQLite3 for a given context. We implemented a movie/show database inspired by IMDB.

More info on the course.

The project was developed with Bernardo Santos (bernas670) and Luís Cunha (luispcunha)

Project

Description: The project was split into three checkpoint where we followed several steps to design and implement a database for a movie/show website like IMDB. For the first delivery we created the conceptual model, for the second delivery we refined the model and implemented it using SQLite3, and for the last delivery we created a series of queries and triggers. The project contains UML diagrams and SQL files for creating the database.

Grade: 17.6/20

Link to the project


5. CAL - Algorithm Design and Analysis

During the course we were taught concepts of algorithm design and analysis (duh!). We approached the concepts of greedy algorithms, divide and conquer, dynamic programming, backtracking , graph algorithms (shortest path, MST, flow, search, chinese postman, Euler circuit, matching, stable mariage), string search/compression and NP-complete reduction.

More info on the course.

The project was developed with Joana Ferreira (joanaferreira0011) and Luís Cunha (luispcunha)

Project

Description: For the project we were tasked with creating an algorithm for the concept of ridesharing. By gathering the departure and last arrival times of people in a graph, aswell as the existing cars the algorithm should attribute a path to each car to follow, as awell as the people to pickup. We divised an algorithm to do just that and implemented it.

Grade: 19.74/20

Link to the project


6. CGRA - Computer Graphics

The computer graphics course was focused on teaching us the concepts of 3D modelling and 3D image generation. We learned concepts like lighting, shading, textures, shadow projection, colot, 3D surfaces, meshes, object modelling, rasterization, etc.. During the semester we did 2 projects that allowed us to apply this concepts in the creation of 3D scenes using WebGL.

More info on the course.

Both projects were developed with Luís Cunha.

Project 1

Description: The first project was focused on creating 3D objects and using those primitives to create more complex objects, while also taking into account concepts of lighting and texturing. In the end we had to compose a 3D scene using the created objects.

Grade: 19.1/20

Link to the project

Project 2

Description: The second project delved into more advanced concepts such as animations, user I/O, L-systems and GLSL shaders. Once again we had to compose a scene, this time of an hilly environment where a bird could fly and pickup branches to build it's nest.

Grade: 19.5/20

Link to the project


7. SOPE - Operating Systems

This course was about operating systems and the concepts of low level OS programming in Linux. We talked about scheduling, processes, threads, concurrency, syncronization, memory management, I/O, etc.. The projects done for this course were used to apply and solidify our knowledge on these topics.

More info on the course.

Both projects were developed with Luís Cunha and Tito Griné.

Project 1

Description: For this project we had to created a forensic tool for analysing a given folder. This analysis had to be done using multiple processes and using signals to communicate between them.

Grade: Ungraded

Link to the project

Project 2

Description: The second project had us developing a Banking system to help us practice the concepts of concurrent programming. This communication beetween was done using FIFOs and PIPEs.

Grade: 19.4/20

Link to the project


8. LPOO - Object Oriented Programming Laboratory

During this course we were introduced to concepts of Object Oriented programming and Software engineering. We learned about the SOLID principles, Design Patterns, UML, code smells, good practices, unit testing,... This was also our introduction to the Java programming language.

More info on the course.

Both projects were developed with Luís Cunha

Project 1

Description: For this project we had to create a game using Java, were we applied the concepts we learned during the course. We created a version of the Bomberman game. Unfortunately we do not have access to the repository where we had our project.

Grade: Ungraded


9. PLOG - Logic Programming

In this course I was introduced a new programming paradigm: logic programming. This new approach presented itself as a challenge, but a very powerful skill in some situations. We applied the concepts of PROLOG first in a board game (with computer play) and then in a constraint solving context, for a construction team scheduling problem.

More info on the course.

Both projects were developed with Luís Cunha

Project

Description: This project had us implement the game of Squex using PROLOG. The game was displayed in the console and is fully playable. This includes: listing available plays, checking for game over, executing plays, computer-AI, board evaluation. You can find the specification and final report in project_1_squex/docs.

Grade: 19.4/20

Link to the project

Project 2

Description: For this project we used constraint programming (in PROLOG) to solve a scheduling problem envolving a construction team. The team had the objective of maximizing the profit given the available material resources, workers with different skills (and salaries), construction projects that required different skills and precedences between those skills. We had then to model the problem using prolog and use the constraint solving library to find admissible (ideally optimal solutions).

Grade: 19.7/20

Link to the project


10. LAIG - Graphical Applications Laboratory

The LAIG course was a continuation from the CGRA course. In this course we learned more advanced concepts of 3D computer graphics and were able to apply them in more complex projects. We created more complex 3D objects, used keyframe animations and interfaced with other problems, namely a board game built in the PLOG (Logic programming) course.

More info on the course.

Both projects were developed with Bernardo Santos

Project 1

Description: Much similar to the projects done in the CGRA course, this project had the goal of creating a scene composed of complex objects created from more primitive objects. For this project we also created a Triangle, Sphere, Bottomless cylinder and a Torus. We also created a file type, similar to LXS, which was used to describe the scene graph. We had also to deal with the concepts of lighting, textures, shadows, user I/O and materials.

Grade: 19.8/20

Link to the project

Project 2

Description: The second project built upon the first one and introduced new concepts such as keyframe animations, render to texture using GLSL shaders and 3D surfaces using NURBS.

Grade: 20/20

Link to the project

Project 3

Description: For the last project we had the task of using the developped primitives and classes to create a 3D graphical interface for a board game developed in the PLOG course. We then built an interface for the game Squex. We had a scoreboard aswell as a timer, we also included a undo feature, and a game-movie feature which allowed the user to see all the plays done until that point. It was possible to play PvP or Player v Computer, with different levels of difficulty. We had to build the board and pieces of the game as well as animate the camera do follow the right players perspective (in case of PvP).

Grade: 19.4/20

Link to the project


11. ESOF - Software Engineering

The ESOF course gave us a birds-eye view into the software development pipeline from start to finish. In it we learned different development processes (XP, Scrum, Waterfall...), architectural patterns, documentation (UML diagrams), testing (unit, integration, acceptance), requirements engineering (user stories), product design and marketing (vision, elevator pitch, ...) and project management.

More info on the course.

Developed with Eduardo Ribeiro (EduRibeiro00), José Gomes(JoeMGomes) and Luís Cunha (luispcunha)

Project

Description: As part of a large group of products built for the Open-CX conference, we built the Agenda Mobile App (AMA). This application used BLE (Bluetooth Low Energy) technology to inform users that they might be passing near an interesting talk in the conference. The application allowed the user to mark their favourite events in the conference and to add their own events to the calendar.

Grade: 19.7/20

Link to the project


12. RCOM - Computer networks

During the computer networks course we the basics of the topics following all the layers of the OSI model (Physical -> Data-link -> Network -> Transport -> Applications) along with other auxiliary topics such as MAC and Routing.

More info on the course.

Both projects were developed with Bernardo Santos and Luís Cunha (luispcunha)

Project 1

Description: For the first project we had the task of creating a link-layer protocol that would be used by a test application (created by us) to transfer files between two computeres connected by a serial port. We were able to produce a program that implemented both protocols and that was resistant to errors(disconnecting and reconnecting serial port mid-transmission and introducing electric interference on the connection).

Grade: 18/20

Link to the project

Project 2

Description: For the second project we created a application that was able to download a file by implementing the FTP protocol (using sockets). We then used switches, routers and computers available in the network laboratory to create a small network architecture (with two VLANs, switches, NAT) where the application would be used.

Grade: 18/20

Link to the project


13. LTW - Web technologies

For this course we learned the basis of web technologies like HTML, CSS, PHP and Javascript. We also learned several concepts such as HTTP, regex, XML, basic topics of web security. We applied the learned concepts by building a website.

More info on the course.

Both projects were developed with Mário Gil and Luís Cunha (luispcunha)

Project

Description: To apply the web technologies learned we created a House-rental website named Paguri. The site is built using vanilla HTML, CSS, PHP and Javascript (no frameworks). And features searching, register/login, Google Maps integration and a public API.

Grade: 19.6/20

Link to the project


14. LBAW - Database and Web application laboratory

In this course we applied the concepts learned in LTW and other software development courses by developping a large scale website. The website was developed in a waterfal fashion in order to facilitate the evaluation of all the steps. During the project we learned concepts of design (UI/UX) from a designer from the Faculty of Fine-Arts. We documented each step of the development from the User stories, mockups, database definition (conceptual, SQL, indexes, triggers), API documentation etc. We did this project in a group of 4.

More info on the course.

Developed with Eduardo Ribeiro (EduRibeiro00), Luís Cunha (luispcunha) and Manuel Coutinho (ManelCoutinho)

Project

Description: Creted a News sharing platform called NewsLab: Website/platform where users write and share news and opinions about different subjects, enabling people to interact with the articles by rating or commenting them. The platform was built using Laravel. Please consult the repository for a detailed description of all the development process and features.

Grade: 19.4/20

Link to the project


15. IART - Artificial Intelligence

In this course we were taught the basics of AI, following the Russel and Norvig book. We learned about agents, searching mechanisms, optimization techniques (anneaealing, genetic algorithms, etc.) and heuristics. We later were given an overview of Machine Learning and it's different fields: Supervised Learning, Unsupervised Learning, Reinforcement Learning and NLP

More info on the course.

Both projects were developed with Manuel Coutinho (ManelCoutinho) and Luís Cunha (luispcunha)

Project 1

Description: To implement concepts of classical Artificial Intelligence we implemented a board game (Eximo) that can be played against a computer. The computer implements a Minimax algorithm with configurable depth, use of Alpha-Beta pruning and move ordering.

Grade: 19.5/20

Link to the project

Project 2

Description: This project used NLP techniques to solve the SemEval-2018’s E-c task. The task's goal was to classify a Tweet as ’neutral or no emotion’ or as one, or more, of eleven given emotions (anger, anticipation, disgust, fear, joy, love, optimism, pessimism, sadness, surprise and trust) that best represent the mental state of the tweeter.

We used NLP techniques to pre-process the data and to classify it according to the given classes such as: Näive-Bayes, Logistic Regression, Deep Learning Model using LTSM Neural Network and Word Embeddings.

Grade: 19/20

Link to the project


16. COMP - Compilers

In this course we learned every step that composes a compiler, step by step, starting at a review of automata (from the Theory of Computation course), tokenization, lexical and semantic analysis, code optimization, tree and table representations, and ending in code generation and optimizations. To apply this knowledge we implemented a compiler of a subset of Java.

More info on the course.

Both projects were developed with Eduardo Ribeiro (EduRibeiro00), Manuel Coutinho (ManelCoutinho) and Luís Cunha (luispcunha)

Project

Description: The tool built serves as a compiler of .jmm files, written in the Java-- language, a subset of the Java language. All programs that are valid in the Java-- language are also valid in the Java language.

This compiler implements all the steps of a compiler and generated machine code for the JVM: lexical and syntatic analysis, semantic analysis, code generation and several optimizations such as graph coloring. It also produced meaningful errors on the syntatic and semantic analysis like any other compiler. For more detailed specification visit the repository bellow.

Grade: 19.64/20

Link to the project


17. SDIS - Distributed systems

During this course we learned about issues related to distributed software applications, studied typical solutions to typical problems in that domain (distribution transparency, remote invocations, addressing, information dissemination, consensus, etc.), studied the software technologies needed to build distributed applications, developed the skills to use such technologies and to build concrete applications of small and medium size.

More info on the course.

Project 1 was developed with Manuel Coutinho (ManelCoutinho) and Project 2 was developed with Manuel, Andre Rocha (andrefmrocha) and Mário Gil (gambuzx)

Project 1

Description: For the first project we had the goal of implementing a system that allowed backing up a file in a LAN network. Different computers could request that a file be backed up and it would be divided into chunks (even replicated) that would be transmited to other computers. We had to create a concrete message protocol and use different concepts to ensure the system's fault tolerance and scalability (concurrency through thread pools for example).

More info about the project on the link bellow.

Grade: 19.2/20

Link to the project

Project 2

Description: For the second project we had to implement a protocol analogous to the first project but for the internet. We used Chord to create a distribuited hashtable that allowed the backup of chunks through computers in the internet without the use of a centralized ledger.

More info about the project on the link bellow.

Grade: 17.84/20

Link to the project


18. SINF - Information Systems

In this course we learned about concepts of information systems, talking about the different types of systems that are currently used in enterprises and manufacturing companies. We applied our concepts by developping an application that interfaced with the Primavera Jasmin ERP.

More info on the course.

The project was developed with Eduardo Ribeiro (EduRibeiro00), Filipa Senra (filipasenra) and Luís Cunha (luispcunha

Project

Description: In order to show the learned concepts about information systems, we had the task of creating a system that would implement to business processes of a company. We chose to create a program that allowed the interface between different instances of the Jasmin ERP in order to implement the business processes of buying/selling and returning goods between companies. This system interface with Jasmin through an API.

More info about the project on the link bellow.

Grade: 16.67/20

Link to the project


19. LDSO - Software Development Laboratory

In the LDSO course we were divided into teams of about 7/8 students and were tasked to do a software project for a real company. During the project we were to apply several aspects of real software project development: testing, commiting, branching, SCRUM practices, software quality, ...

More info on the course.

Project

Description: The web-application was developed for the ZeroZero team at ZOS. The system's goal is to receive information about website traffic, and to provide information about possible ill-intended accesses such as web-scrapping bots and XSS/injection attempts. The analysis of these requests is made through an intuitive interface using ReactJS.

The backend service for receiving, analyzing and returning classifications for requests is made using Node/ExpressJS using PostgreSQL.

During this project I had the opportunity of contacting with an Agile Development environment with a team of 7 members. We also had to keep constant attemtion to different software development practices such as Unit Testing, good versioning practices (commits, branches), requirements engineering etc.. Throughout it, I sought to develop my leadership, teamwork, and organizational goals. Unfortunately, since the project was developed for ZeroZero I cannot show the source-code repository.

Grade: 20/20


20. AIAD - Agents and Distributed Artificial Intelligence

In AIAD we learned about several aspects of multi-agent systems and agent-oriented software development. We learned different agent architectures and explored machine learning techniques such as Reinforcement learning. We also explored concepts of negotiation modelling and were given an introduction to game theory.

More info on the course.

Both projects were developed with Manuel Coutinho (ManelCoutinho) and Luís Cunha (luispcunha)

Project 1

Description: For the first project we had the goal of proposing and implementing a multiagent system to simulate any real-life scenario using the JADE framework. We chose to create a 2nd hand marketplace where agents (sellers) would define a price for their products based on the market to try to sell them to other agents (Buyers). The sellers and buyers implemented different negotiation protocols and the sellers also implemented protocols that controlled how they would set their prices based on the market prices for their products.

Additionally, sellers had different probabillities of scamming the buyers, taking their money without giving them the product (which both gave them the chance to sell the product again and made it so that the buyers still needed to buy the product). This effected their reputation. Through this we also saught to measure how this factor would both influence the sellers (honesty vs greed) and how it affected the buyers (naiveness vs cautiousness).

Grade: 18/20

Link to the project

Project 2

Description: For the second project we implemented on top of the first one to use the agent simulation toolkit Repast 3 to conduct large scale experiments on the implemented marketplace scenario. Through it we were able to conduct larger experiments and to study more aspects of the different parametrizations of the agents: price elasticity, scam factor, offer and counter offer strategies, seller picking.

Grade: 19.6/20

Link to the project


21. IOPE - Operations Research

In this course we learned about linear problem formulation and explored different types of problems and algorithms to solve them. We learned about the Simplex Method, Integer programming, Transporation problems, Assignment problems, Network and Graph problems and about decision theory.

More info on the course.

The project was developed with Eduardo Ribeiro (EduRibeiro00), Luís Cunha (luispcunha) and Monika Stepien.

Project

Description: For this project we had the task of modelling a proposed shipping problem. We had to model import and export constreaints as well as other costs associated with travelling to find out the size of the fleet of two different types of boths that the fictious government of the proposed problem would have to acquire. The problem was solved using Simplex.

The report contains a detailed description of both the problem and our efforts at modelling and solving it. We also had the task of answering to some proposed questions that made us analyse our results and do sensitivity analisis to avoid solving the problem again to answer these questions.

Grade: 17.9/20

Link to the project


22. LGP - Project Management Laboratory

During LGP the a collection of programs at FEUP (MIEIC, MIEM, MESG, MESW) and from other faculties (Design @ FBAUP) are split into five companies. Each company must develop their company image and develop 4 projects, dividing the company into 4 teams.

In LGP I was ellected the CEO of one of the companies (Platypus Creative Solutions), and integrated team B of the company as Design Manager. Has CEO I had the change of developping my communication skills and of dealing, delegating and facilitating communication between a company of about 50 students.

More info on the course.

Project

Description:

Our product was developed by request of Jumpseller and was to develop a GPS service similar to Uber Eats that would empower small to medium companies to create their own same-day delivery services. As such we built in top of the app jumpseller already has to create the courier support for that service (geo-location tracking, delivery picking, etc.)

We also implemented the backend service that would manage and store the locations of the couriers and display them on a map on the clients browser so tha they could live track the progress of their package.

Grade: 18/20


23. VCOM - Computer Vision

During this course we started by getting an overview of the classical computer vision pipeline: image acquisition, processing and analysis of acquired images (filtering, segmentation, feature extraction), camera calibration, stereo etc.

Later we learned about machine learning concepts and approaches used in computer vision (Bag of words, SVMs, K-Means,...) and about deep learning (neural networks, CNNs, ...). We explored the usage of deep learning for different computer vision task: object classification, object detection (R-CNN, FAST/FASTER-RCNN, YOLO,...), image segmentation, instance detection, image generation (GANs), style transfer, domain translation, video analysis, ...

More info on the course.

Both projects were developed with Bernardo Santos (bernas670), Laura Majer (m-ajer) and Luís Cunha (luispcunha)

Project 1

Description: In this work we use a structured light technique to implement a system for 3D data acquisition, namely information about the height of objects, using household items. The technique consists of casting a pattern of light/shadow over the objects, capturing an image of said objects and, after detecting and extracting the pattern of the line, using the perspective projection matrix to compute the real world coordinates of the pattern points. With the image coordinate of those points and the projection matrix we are only able to obtain the line of sight of the image point, but by constraining the plane (light or shadow) to which the points of the pattern belong we are able to obtain the real world coordinates of each of the points of the pattern. We explore several computer vision techniques, including edge detection, data acquisition, and camera calibration. We are able to measure objects that do not have significant texture with a satisfactory precision, as well as introduce some degree of automation to the selection of suitable parameters for the algorithms used.

Grade: 18.5/20

Link to the project

Project 2

Description: In this work we explore some common tasks of modern Computer Vision. We apply classic machine learning algorithms (SVMs) with bag-of-words descriptors and state-of-the-art deep learning architectures to a multi-class classification problem of objects in a Museum (the Met). Since the dataset is highly unbalanced dataset, we explore techniques such as data augmentation. The architectures we use are then adapted to use in a multi-label classification problem. Finally we explore the usage of CAMs (class activation mapping) to tackle a painting object detection task.

Grade: 19.3/20

Link to the project


24. CPAR - Parallel computing

In this course we learned about different aspects of parrallel computing and parallel machines. We learned about cache efficency, ways of parallelizing algorithms and ways of modelling and analyse the performance of parallel computer systems.

More info on the course.

Both projects were developed with Luís Cunha.

Project 1

Description: For this project we studied the performance of matrix multiplication algorithms. In order to study cache-efficiency the algorithm was altered to take this concepts into account by switching loop orders and by implementing blocking versions of the algorithm. We studied the behaviour of the algorithms for different matrix and block-sizes as well as different languages (in this case C/C++ and Java). In the C/C++ version we utilized the PAPI library in order to evaluate cache-misses to further confirm the hypothesis.

Grade: 17.7/20

Link to the project

Project 2

Description: For the second project we talked algorithm parallelization. To do this we utilized different algorithms: matrix multiplication and LU factorization. We utilized different frameworks to achieve parallelism: OpenMP (CPU), Sycl (CPU and GPU) and CUDA (baseline for GPU). We measured the performance of these algorithms for different matrix and block sizes.

Grade: 18.4/20

Link to the project


25. ASSO - Software architecture

In this course we learned concepts of software architecture. We learned popular patterns in both systems architecture and more low-level patterns (GoF patterns). We also learned about several types of software documentation and other aspects of the software conceptualization pipeline (requirements, quality attributes, ...).

More info on the course.

The project was developed with Gonçalo Marantes (Marantesss), João Matos (joaonmatos), Luís Cunha (luispcunha) and Ricardo Ferreira (ricardojaferreira).

Project

Description: In this project we had the task of developping a module of a larger system related with the team of live software development. The goal of the project was not so much the dimension and complexity of the project but rather the process of conceptualizing, creating the architecture, requirements, goals, constraints, instantiating possible design patterns, ...

We ended up creating a tool for visualizing the dependencies of software projects, and analysing the resulting tree. We presented a Proof-of-Concept by instatiating the project for Javascript projects.

Grade: 19/20

Link to the project

C. TUM

1. CDB - Cloud databases

This course enabled us to put in practice concepts of distributed systems and systems design. All groups had to develop a system that conformed to the specification split into 4 milestones. For the final part of the course, we were given the liberty of extending the system. Our group chose to make the system fully decentralized by implementing the Chord P2P protocol to replace the centralized configuration server.

More info on the course.

The project was developed with Lukas Bernwald and Krisela Skenderi.

Project

Description: For the course, we had to develop and eveolve a distributed database.

  • The goal of the 1st milestone was to create a simple echo client, that would connect to a network server.
  • For the 2nd milestone, a basic key-value storage server and client were created.
  • The 3rd milestone extended the system by creating a distributed responsability server ring, where each server was responsible for a given interval of keys. The structure of the ring was mantained by a centralized peer (External Configuration Server) which reacted to server joins, fails and departures.
  • The 4th milestone introduced replication to the key-value pairs.
  • For the project, we were given the liberty to extend the created system. We chose to remove the ECS by implementing the Chord distributed hash table protocol.

Grade: 20/20 (converted from 1.0 in TUM Grading)

Link to the project

2. ASE - Advanced Topics of Software Engineering

The course delved into several topics of the software engineering area. We covered software architecture and processes, information and embedded systems, software requirements, antipatterns, safety, security, testability, database-centric archs., message-oriented archs., object-oriented archs., component-based archs., service-oriented archs., microservices, cloud computing, virtualization and more.

More info on the course.

The project was developed with Achraf Aroua, Erem Gülum, Ruilin Qi and Xavier George.

Project

Description: We have implemented a pick-up station (aka. pack station) delivery service as part of the Advanced Software Engineering term project.

In this system, each customer who orders items is assigned a box at a pick-up station. The service then delivers the items from a central depot to the customer’s box at the pick-up stations. There are three user roles in ASE Delivery: dispatchers, deliverers, and customers. Dispatchers are responsible for the management of pick-up boxes and deliveries. Deliverers transport deliveries to the pick-up box assigned to a customer. Finally, Customers collect their delivery from their box. To verify if a deliverer or customer can unlock a box, each deliverer and customer is given an RFID tag for identification. Each pick-up box has an RFID scanner to read the RFID tag from a deliverer or customer and determine if they are authorized to unlock the box. The Customers are informed when their delivery is created, delivered, or picked up successfully

Grade: 0.6/1.0

Link to the project

D. Personal projects

1. Advent of Code

Christmas time is my favourite season, and so it made sense to try to do the Advent of Code calendar each year. The first year was a failure, but the second year I got past the half-way point. Maybe one day I'll reach the end.

Link to the project

About

Descriptions and links to all of my projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published