This repository holds resolutions for some of the exercises solved over my last years of university. All of this exercises are related to either formal methods or distributed systems, which are the two major courses I attended during my masters degree.
Some of the projects I developed in university can be found in other repositories:
- Computer Labs I (Haskell) - based on the puzzle game LightBot.
- Object Oriented Programming (Java) - implementation a local auction house.
- Operating Systems (C) - backup system with deduplication using a client and a daemon using pipes and such.
- Progam Calculus (Haskell) - unit testing and quickchecking a graph library.
- Computer Labs III (C) - query an in-memory representation of a supermarket. The input could go up to 5 million lines.
- Computer Labs III (Java) - query an in-memory representation of a supermarket. The input could go up to 5 million lines.
- Distributed Systems (Java) - auction house with multi-threaded server and clients.
- Development of Software Systems (Java) - planning and development of a system to solve expense sharing.
- Language Processing (Gawk) - text processor that parses a XML document into HTML pages for data visualization.
- Language Processing (Flex) - text processor that generates C code from "C with template strings".
- Language Processing (Yacc) - compiler for a simple imperative language we designed.
- Knowledge and Reasoning Representation (Prolog, R) - prolog reasoning system (ternary logic) + neural networks in R.
- Computer Labs IV (C#) - planning and development of a system to find food near you according to your tastes.
- Computer Graphics (C++) - 3D engine with a solar system as proof of work.
- Computer Communications (Rust) - TCP reverse proxy with monitorization and load balancing.
- Paralell Computing (C) - parallelizing a histogram equalization algorithm.
- Specification and Modelling (NuSMV) - modelling and verifying a landing system.
- Specification and Modelling (Alloy) - modelling and verifying some of the monopoly rules.
- Fundamentals of Distributed Systems (Java) - distributed objects API with transactions and 2-phase commit.
- Paradigms of Distributed Systems (Erlang, Java) - stock exchange mixing multiple distributed architectures.