CS3022 Programming Paradigms

There are a vast number of available programming languages. Is the most popular or recent language the right one for the job? Students in this course will learn about the different families of languages (functional, imperative, declarative) and learn how to code algorithms in different languages. The will learn about how programming languages are developed and specified. They will learn about features such as garbage collection, type systems and object orientation, that can be implemented in different languages. Students will learn how different programming paradigms are suited to different problems. This will enable them to choose the most appropriate language to solve a problem, optimizing effort and efficiency whether working as an individual developer for their thesis work, or supervising teams of developers or structuring contracts for software development. Our warrior scholars will be equipped to choose a software development environment that is secure, efficient and optimized for the task at hand.

Prerequisite

CS3021, CS3040

Lecture Hours

3

Lab Hours

2

Course Learning Outcomes

Students will understand the major components of a computer language and how they relate to each other – syntax, semantics, compiling, memory management - and how these are implemented in different languages

Students will be aware of the major classes of languages (functional, imperative, declarative), their applications, the strengths and weaknesses of major languages

and how to choose the right language for the job

Students will be able to start writing basic code in each major family of languages and understand how to muster resources for becoming fluent in any language that a task requires.