COURSE DESCRIPTION Department and Course Number: CS2135 Course Coordinator: Kathi Fisler Course Title: CS2135 -- Programming Language Concepts Total Credits: 1/3 unit Current Catalog Description This course introduces the student to the fundamental concepts of programming languages, models of programming languages, and the basic concepts of language translation. Topics include syntactic structure, binding, scope, parameter passing, control structures, and run-time environments. Imperative and functional programming languages will be contrasted. Different programming languages will be examined to illustrate these principles. Students will be expected to acquire competence in functional programming. Intended audience: computer science and computer engineering students, and those desiring a deeper understanding of computer programming. Textbook: The Little Schemer; Daniel P. Friedman and Matthias Felleisen; MIT Press 1996. How to Design Programs; Matthias Felleisen, Matthew Flatt, Robert Bruce Findler, and Shriram Krishnamurth; MIT Press 2001 References The course web page is at http://www.cs.wpi.edu/~kfisler/Courses/2135/A01/ Course Goals By the end of the course, students are expected to develop skills in modeling and implementing simple languages, in understanding the impact of certain key features of programming languages, and in functional programming. Prerequisites by Topic: The first two programming courses (CS1005, CS1006) Major Topics Covered in the Course: Functional Programming (16 hrs) Modeling Programming Languages as Data (2 hrs) Interpreters (5 hrs) Introduction to Program Transformation/Compilers (5 hrs) Laboratory projects (specify number of weeks on each) One 3 week project on viewing web programming through programming languages concepts. Estimate CSAB Category Content CORE Concepts of Programming Languages 3 Oral and Written Communications Every student is required to submit at least __1__ written reports (not including exams, tests, quizzes, or commented programs) of typically __3__ pages and to make __0__ oral presentations of typically __0__ minutes duration. Social and Ethical Issues N/A Theoretical Content Course material is mathematical in flavor, but students don't explicitly work with the mathematics. Problem Analysis All students are expected to learn to analyze problem statements to derive concise mathematical descriptions of the data being used in the problem. Solution Design All students are expected to learn how program design follows from data structure for large classes of smaller programming problems. Student programs are expected to follow the structure of the data used in the problem the program solves. Students also learn how to systematically design (ie, compile) web scripts from traditional, batch-style programs.