Over the last ten years there has been a major shift in programming language design from procedural languages to object-oriented languages. Most universities have adopted an objec...
Design patterns are reusable abstractions in object-oriented software. However, using current mainstream programming languages, these elements can only be expressed extra-linguist...
In many concurrent programming languages programs are difficult to extend and modify. This is because changes in a concurrent program (either through modification or extension) re...
This paper exhibits the power of programming with dependent types by dint of embedding three domain-specific languages: Cryptol, a language for cryptographic protocols; a small da...