COMP 524


The objective of this course is to introduce students to the fundamental concepts that differentiate programming languages. We will study the different programming styles that are supported by different languages: imperative, functional, logic, and scripting. We will discuss the different aspects that differentiate languages, including names, scope, bindings, data types and type systems, control flow, objects, subroutines, and concurrency. We will look at each of these features in terms of how they affect the language and the implementations. Throughout the semester, students will be exposed to a wide range of different languages.

The course will start with a quick introduction to a small number of languages that most students will not have used. This is a “warm up” to start you thinking about languages outside your comfort zone and introduce you to different programming paradigms. The first assignment for this module will be to write the same short program in multiple languages and styles.

From there, we will move on to the key characteristics that differentiate languages: names, storage, binding, control flow, data types, concurrency, objects and abstractions. We will look at both the language and implementation implications of each topic. This model will cover the bulk of the semester. During this time there will be two sets of assignments: language discussion and programming assignments.

The language assignment will be done in teams of 6 (teams will be assigned). At the end of the Tuesday lecture, which will cover key components of the characteristic being developed, the teams will be given the language that they are responsible for this week. There will be resources posted on the class website to provide the information needed. Team members will be expected to learn the basics of the language by Thursday. At the beginning of class on Thursday, a set of questions will be given related to the week’s topics that the team is to answer about the language and post on the class wiki. The first 45 minutes of Thursday’s class will be devoted to that activity. For the last half hour, 5 teams will present the information about the language to the rest of the class. The teams that are presenting will not be revealed in advance. You can assume that teams will not present more than 3 times. The grade for this work will be based on the accuracy and clarity of the wiki content and the presentation.

• Approximately every two weeks, there will be a programming assignment in a different programming language. The assignment will be designed to have you use a feature that has been studied. These assignments may be done in pairs or individually. We encourage, but do not require, pairs

Class Meetings

Office Hours