Advanced Programming Topics

Advanced Programming Topics Course Material

Topics

Here’s a list of topics that we can discuss during this course.

Git (approved)

Advanced Design Principles (40%)

Languages (40%)

Coq

Coq is a language whose type system is so powerful that if your code compiles, it is actually 100% correct.

Python

Common Lisp

Common Lisp is an extensible language: you can change its syntax and add any feature you want.

Ruby

More structured (but also more limited) than Common Lisp.

Prolog

A very high level language that is quite different from ‘regular’ languages. The idea behind it is to simply write down the constraints and have the machine find a solution, thereby avoiding the need to write down an algorithm. It is far from perfect, but it’d be nice if programming could actually be done like this.

Rust and Go

Rust is a low level language developed by Mozilla and used for the development of Firefox. It has enjoyed great popularity the last couple of years. The language rivals C++ in speed without sharing the sheer complexity of the C++ beast.

Likewise, Go (by Google) is also a low level language favoring speed. It is a bit slower than Rust, but much easier to use.

Haskell

Purely functional non-strict language. It’s built on top of a strong mathematical foundation, making it very elegant. Tim Sweeney (main developer of the Unreal Engine) described his own idea of the “next mainstream programming language” as a variant on Haskell.

Oz

Theoretical Underpinnings (5%)

Short discussion about a couple of theoretical concepts.

Garbage Collection (5%)

How does garbage collection work exactly?

Concurrency (40%)

Algorithms (50%)

Compilers