CS365 -- Programming Language Design and Implementation

Brad Vander Zanden


Where to Find Things


Overview

This course is designed to give you an introduction to a variety of modern programming languages and techniques and to show you how compilers implement such languages. In particular, we will examine object-oriented languages, event-based languages, scripting languages, functional languages, and logic programming. Because of the large number of languages we will cover and the short amount of time we have, you will not be an expert in any of these languages when you complete the course. However, you will have a good rudimentary understanding of these languages, an idea of the strengths and weaknesses of each language, and an idea of how programs written in these languages get transformed into object code.

You will be assigned both weekly and bi-weekly homework assignments/short programs to help you better understand the material. The course will also have a semester-long, team-based project that involves creating a spreadsheet application and that will give you actual experience with many of the topics discussed in this course. During the last week of the semester and during the final exam period you will be asked to provide a 20 minute project presentation. The project will provide you with exposure to:

  1. Java: The application will be written in Java.

  2. functional programming: Believe it or not, when you enter formulas into a cell, you are using functional programming.

  3. event-based programming: As you create the graphical interface for the spreadsheet, you will develop experience using event-based programming and using a graphical interface builder.

  4. lexical analysis and parsing: You will need to parse and interpret a simple expression language in which users write formulas.

  5. working in teams.