Skip to content

Latest commit

 

History

History
41 lines (30 loc) · 1.62 KB

README.md

File metadata and controls

41 lines (30 loc) · 1.62 KB

Programming Languages II, ECE NTUA

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 for Befunge-93 (a BrainFuck like language).

  • gc: Implemented a garbage collector for an extension of Befunge-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.