This repository contains my solutions to the Programming Languages II course assignments. A brief summary of each exercise follows.
-
vm: Implemented an indirectly threaded virtual machine forBefunge-93(a BrainFuck like language). -
gc: Implemented a garbage collector for an extension ofBefunge-93that also supports linked lists. We implemented the Mark & Sweep algorithm on top of the virtual machine we built for the previous exercise -
haskell-dp: Solved an algorithmic problem using Dynamic Programming in Haskell both in a pure and an impure way. -
quickcheck: Property based testing in Haskell using QuickCheck. We implemented a method to produce random trees and wrote some properties to test BFS, DFS and other graph algorithms. -
type-inference: Implemented Type Inference for Lambda-Calculus with simple types, using the Algorithm W. -
parallel-hs: Experimented with Parallelism and Concurrency in Haskell using the Par Monad and MVars -
typesys: Defined a Type System for a simple stack machine language -
densem: Implemented the Denotational Semantics for the stack machine language defined in the previous exercise -
scripting: Experimented with scripting languages. We implemented a client and plays an online game and a server that hosts the game. -
ax-sem: Experimented with Axiomatic Semantics and Program Verification. We proved the correctness of a given algorithm using the Frama-C library.