This repository points to my main repositories sorted by category.
- Snake languages - an incremental compiler approach, building several compilers for increasingly rich LISP languages. Encompasses all projects from Joe Politz's UCSD 131 compilers course
- Polish to tree (Python) - a script that takes in an expression in polish notation, builds an expression tree, and walks it in different orders to produce polish, infix, and reverse polish expressions.
- Parallel zip - a multithreaded command-line program written in C that compresses files using run length encoding. One of the projects from OS:TEP course.
- Shell - a Unix shell that implements some built in commands, output redirection, and executes binary files. One of the projects from OS:TEP course and one of the labs from CS:APP3e.
- Custom malloc - four different implementations of malloc, free and realloc, using different policies and free-list data structures. One of the labs from CS:APP3e.
- Cache simulator - a simulator of processor's cache implementing LRU. One of the labs from CS:APP3e.
- xv6 lottery scheduller - I've implemented a new scheduler policy for the xv6 kernel. I don't have it saved to a repo. One of the projects from OS:TEP.
- Assembler - an assembler written in Java to convert symbolic assembly to machine code. Capstone of the first part of Nand2Tetris course.
- Lab Medical BD - a CRUD API using Spring. It's meant to complement the Lab Medical frontend project.
- Book API - a CRUD API using Spring centered around books. The main purpose of the project was to work on unit tests and integration tests using JUnit5.
- Flight Ticket API - an API using Spring centered around a flight. The main purpose was to work on unit tests.
- DevInKnowledge - a CRUD using Vanilla HTML/CSS/JS and the browser's local storage for persistence. Does not use any framework.
- Lab Medical - a CRUD using Angular. There's a github pages page.
- Product Stock and Supplier CRUD - an MVP developed for stock control for a local business using Angular. Made for schoolwork only. There's a github pages page.
- LabMedicine - a CRUD using pure Java. I implemented the composite design pattern for the menu system.
- Car tests - an exercise. I implemented all the rules in the Main.java file using the state design pattern.
- Binary Heaps - some implementations of binary heaps in Java, including a "median heap", that always returns the median.
- A* - A* implementation to solve the 8-puzzle game optimally.
- BST - a BST that can perform all kinds of operations based on compare routines.
- CS50AI (Python) - most projects from CS50AI.
- Graphs - many implementations. Includes undirected, directed, and weighted graphs, BFS, recursive DFS, and Kruskal's MST.
- Seam Carver - an image editing application that computes the shortest path in an acyclic digraph using the pixels' energy as the edge's weight.
- Baseball Elimination - an application that checks which baseball teams have been eliminated by computing the maxflow of a graph (maxflow < capacity of all edges leaving source -> eliminated), and finds which teams are responsible for the elimination by computing a mincut.
- Sorting - some sorting interview questions and implementations. Includes a quicksort implementation that's better suited for dealing with many duplicate keys in the array.
- Stacks & Queues - a Deque implementation, a Stack implementation, a Queue implementation that uses 2 Stacks under the hood (not for production), and a Randomized Queue.
- Tries - an application to find all possible words in a Boggle board. It uses a Trie implemented from scratch holding words from a dictionary, and Depth First Search to find all valid words, with a Set holding the words found, to prevent duplicates.
- Union Find - some interesting interview questions answered, and a Monte Carlo simulation of a percolation problem.
- CS50 Final Project (Python/Flask) - my first web application. It's filled with bad practices, but also has some linear programming using python's scipy, as well as frontend/backend integration using flask.