programming paradigms coursework