CS365 -- Programming Language Design and Implementation

Brad Vander Zanden

Where to Find Things


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, and functional languages. 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. The project will provide you with exposure to:

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

  2. functional programming: when you enter formulas into a spreadsheet cell, you are using functional programming.

  3. event-based programming: As you create the graphical interface for the spreadsheet, you will need to handle keyboard and mouse events. This input handling will help you 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.