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-93
that 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.