This course is appropriate for students with an interest in programming languages and programming language design, and who have a sound foundation programming in at least one language. During the spring quarter our focus will be on different languages and will explore hybrid languages in more detail. Students who took Comparative Programming Languages in the winter quarter will have an opportunity to continue their studies or to explore these new languages.
We will focus more specifically on hybrid languages that combine two or more language paradigms, such as logic+functional, eager+lazy, functional+object oriented, and imperative+functional. 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 and how they may be used productively in one language. 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, the role of untyped languages, and continuation style programming.
Students who took this course in winter may instead choose to continue their studies of the languages covered during the winter. There are two options:
- A continuation of the winter quarter with a focus on a project in one of the languages.
- A continuation of the winter quarter with more in-depth study of the languages' advanced features.
Students should have the equivalent of one year of programming experience and ideally be familiar with at least two programming languages.
Course Reference Numbers
Computer science, mathematics, and technological support for the sciences.
This course awards upper division computer science credit.