CSCI 344 Programming Languages
Time/Place
This section of the course (Spring 2009) meets Tuesdays and Thursdays from 2:15PM-3:30PM in Ritter Hall 128.
General Description
This course looks at programming languages as objects of study in of themselves. There are three main topics in the course, which are interwoven with one another to a certain extent. We begin with a substantial amount of theoretical material on languages in the abstract sense, context-free grammars, automata, and parsing. We then focus in on language design and implementation: types, bindings, scopes, mechanisms for program flow, etc. Finally, we look carefully at some programming paradigms that you do not generally encounter in your other undergraduate courses: functional programming (via LISP) and logic programming (via Prolog). Tying in with the earlier topics, we explore the theoretical underpinnings of these paradigms (lambda calculus and first-order predicate calculus, respectively), and also issues related to their implementations.
Here is the course schedule where I will place announcements of exams, homework assignments, and other date-sensitive material.
The course prerequisite is a passing grade in CSCI 290 (Object-Oriented Software Design).
Textbook Information
The required text for the course is Programming Language Pragmatics by Michael L. Scott. Supplemental material is available from the book's web site, maintained by the author. Students can buy the book from the SLU Bookstore or Amazon.
Homework and Exams
There will be an in-class midterm exam given Tuesday, March 3rd which accounts for 20% of your final grade. The final exam is scheduled for Thursday, May 7th from 2:00-3:50PM; it is comprehensive and is worth 40% of your final grade. Participation in the in-class discussions and performance on the related homework assignments is worth 40%, thus attendance at every class meeting is mandatory and essential if you want to keep up. Make-up exams will not be given. The College of Arts and Sciences has a policy concerning academic honesty with which you should be familiar.