Gabrijel Boduljak

HiπŸ‘‹! I am a final year Computer Science and Mathematics student at πŸŽ“University of Edinburgh. This is a place where I (will hopefully) write about topics I find interesting. I plan to write about my personal projects and learning experiences, as well as some random tech topics.
πŸ’»github | βœ‰οΈcontact me | πŸ“šmy reading list | πŸ‘¨β€πŸ’»my projects

πŸ“ all posts | ✍️ mostly math | πŸ–₯ mostly computer science

Theory of the Minimum Spanning Tree Problem [Part 2]

πŸ“…May 24, 2021 | β˜•οΈ25 minutes read
🏷️#algorithms 🏷️#proof 🏷️#theorem 🏷️#theory

In this blog post, I will expand the theory developed in the Theory of the Minimum Spanning Tree Problem [Part 1]. I will focus mostly on the relationships between cuts and cycles which turns out to be a powerful way to analyse and even develop MST algorithms. We will analyse a perhaps (in)famous minimum spanning tree algorithm using the theory developed in the post. The last section is about the analysis of the oldest known minimum spanning tree algorithm.
Read β†’

Theory of the Minimum Spanning Tree Problem [Part 1]

πŸ“…December 30, 2020 | β˜•οΈ25 minutes read
🏷️#algorithms 🏷️#proof 🏷️#theorem 🏷️#theory

In this blog post, I will discuss the inner structure and some theoretical results behind the minimum spanning tree problem in the context of undirected graphs. Firstly, we define a spanning subgraph and a minimum spanning subgraph. After proving some results regarding the structure of the minimum spanning tree problem, we develop two famous algorithms - Prim's algorithm and Kruskal's algorithm using the inner structure of the problem discussed in results proved before.
Read β†’

Writing a compiler for Cool Programming Language

πŸ“…August 15, 2020 | β˜•οΈ20 minutes read
🏷️#algorithms 🏷️#bison 🏷️#c 🏷️#c++ 🏷️#code-generator 🏷️#flex 🏷️#formal-languages 🏷️#lexer 🏷️#parser 🏷️#type-checking

A few weeks ago, I have completed a Stanford Compilers MOOC. After almost two months of learning, I have managed to complete all coursework assignments which were implementing a 'real' compiler in several phases. In the end, it was relatively easy to assemble them into a complete compiler - a topic of this post.
Read β†’

Writing a console calculator using Haskell

πŸ“…August 08, 2020 | β˜•οΈ15 minutes read
🏷️#algorithms 🏷️#calculator 🏷️#expression-tree 🏷️#formal-languages 🏷️#functional-programming 🏷️#haskell 🏷️#lexer 🏷️#parser

Recently, I have been exploring the interesting world of compiling techniques and formal languages. During the last two months, I have encountered many classes of formal language grammars and I have decided to dedicate a bit of time to one of the classical examples of context-free grammars - arithmetic expression grammar.
Read β†’

Context-aware image resizing with seam carving

πŸ“…June 15, 2020 | β˜•οΈ20 minutes read
🏷️#algorithms 🏷️#convolution 🏷️#image-processing 🏷️#python 🏷️#research-paper-implementation 🏷️#seam-carving

Seam carving, known also as liquid rescaling, is an algorithm for 'content-aware' image resizing. Main idea is to resize an image (and thus reduce the image size) by removing only the least noticeable pixels and thus preserving the image context. I have seen this algorithm in the algorithms course at the University and I have decided to explore it to a greater extent.
Read β†’

Built with a lot of β˜•
Β© 2021