This course will explore several different programming languages and paradigms. In particular we will explore logic programming, functional programming and object oriented programming. We will also explore hybrid languages that combine two or more of these paradigms. Students will gain programming and problem solving skills in these paradigms and will develop an understanding of what each of these paradigms contributes to our problem solving models. We will also study some of the current issues of the day, such as strong vs weak typing, lazy vs eager evaluation, dynamic vs static typing, and the role of untyped languages.
A similar course will be offered in the spring that allows students to take either the winter or spring course or both. We will adjust the breadth and depth of the languages studied to meet student interest and preparedness.
Students should have the equivalent of one year of programming experience and ideally be familiar with at least two programming languages.
Students should have one year of programming experience or classwork.
Course Reference Numbers
Computer science, mathematics, and technological support for the sciences.
This course awards upper division computer science credit.