CS 333: Programming Languages

Course Information for Fall 2009

Time: MWF 11-11:50am
Place: Roberts 221

Instructor Information

Prof. Bruce A. Maxwell
Office: Roberts 224B
Phone: 859-5854

Office hours: TBA, or just stop by

Course Description

This course is a survey of programming languages and paradigms. We will focus on the design of programming languages and compare and contrast different language familes including imperative, object-oriented, functional, and logic paradigms. Topics include syntax, context-free grammars, parsing, semantics, abstract representations of programming processes and structures, memory management, and exceptions. Students will undertake small programming projects in various languages and more extensive projects in two languages of their choice. Students will present the characteristics of their chosen languages to their peers at the end of the term.

Prerequisite: CS 231

Textbooks

Useful Links

Languages

Programming Language Tools

Source Code Examples

  • sumthread.c: Example of using threads to sum an array. Includes code for timing the operation. To compile, use
    gcc -o sumthread sumthread.c -lpthread
  • mutex-simple.c: Example of a mutex lock to control access to a counter variable. Compile with the pthread library, as above.
  • prodcons.c: Example of using a mutex lock to implement producer and consumer threads. Compile with the pthread library, as above.
  • mygate.vhd: VHDL example of a simple gate.
  • testswap.vhd: VHDL testbench for the simple gate.
  • swap.vhd: VHDL example of two 1-bit registers.
  • testswap.vhd: VHDL testbench for the swap example.