Marcus Olsen
Bachelor of Science in Computer Science

About Me
Hello! I'm Marcus, a computer science student. I'm currently doing my Master's in Computer Science at the University of Southern Denmark.
I have a strong interest in the language processing aspects of programming languages. I'm particularly fascinated by how high-level programming languages are translated into low-level instructions, whether they are executed directly by hardware or interpreted within a virtual machine. The intricacies of this translation process, along with the underlying low-level memory management, are areas that deeply engage me.

Projects
A compiler for Cobra
func myCobraFunc(int y) void {
int x = 2;
}
myCobraFunc:
pushq %rbp
movq %rsp, %rbp
subq $8, %rsp
movq $2, %rax
movq %rax, -8(%rbp)
end_myCobraFunc:
addq $8, %rsp
popq %rbp
ret
A compiler for my own programming language, Cobra, that translates Cobra code into assembly code. Cobra is a general purpose programming language with object oriented features. The compiler is written in Python. This constitutes my Bachelor Project.
https://github.com/MarcusOlsen25/Cobra
Contact
Marcus Aunstrup Olsen
marcus.aunstrup.olsen@gmail.com
+45 42308782
5000 Odense C, Denmark
GitHub LinkedIn
Skills
Through my studies, I have developed proficiency in a wide range of programming languages, including Python, Java, C, C++, Haskell, SQL, and Assembly. I am also experienced with Git for version control, which I’ve used across multiple projects.
For my bachelor’s thesis, I developed a compiler in Python for a self-designed language called Cobra, which translates to Assembly code. This project involved low-level memory management of both the stack and heap in Assembly. As an alternative approach, I also implemented a bytecode interpreter in C that compiles Cobra code to custom bytecode and executes the compiled code in a custom virtual machine.
These projects deepened my understanding of low-level memory management and sparked a strong interest in systems with constrained resources, where efficient use of memory is critical.
Beyond that, I have implemented various data structures and algorithms in C and conducted kernel-level programming by adding a character device driver to the Linux kernel.
On the theoretical side, I’ve studied algorithm analysis throughout my degree, gaining a solid foundation in time and space complexity, including how to derive and apply these metrics across different types of algorithms.