Current Catalog Description

Use, structure and implementation of several programming languages. Prerequisite: CSE 17 or CSE 18.

Instructor: Michael Spear (Fall 2022)


Michael L. Scott, "Programming Language Pragmatics", 4th ed., Morgan Kaufmann, 2015, ISBN 978-0124104099



Students will have:

  1. Understanding of the design, implementation, and use of different programming languages.
  2. Ability to choose the best language for any programming task.
  3. Ability to more easily learn new languages independently.

Prerequisites by Topic

  1. Top-down design
  2. Primitive data types
  3. Repetition and selection
  4. Recursion
  5. Object-oriented programming
  6. Fluency with JAVA

Major Topics Covered in the Course

  1. Syntax
  2. Lexical and Syntactic Analysis
  3. Names and Bindings
  4. Data Types
  5. Logic Programming
  6. Semantics of Expressions, Assignment Statements and Control Structures
  7. Functions
  8. Functional Programming
  9. Memory Management
  10. Imperative Programming
  11. Object-Oriented Programming

Assessment Plan for the Course

The students are given four homework assignments, three programming assignments, a midterm, and a final examination. Each homework assignment typically covers a single topic. The first programming assignment involves constructing a simple lexer and parser in JAVA. The other two programming assignments introduce students to working in the logic and functional programming paradigms. The midterm and final include vocabulary, short answer questions, and short programs. When I grade homeworks, programs and exams, I look for common errors among students, and point these out in class.

How Data in the Course are Used to Assess Program Outcomes:(unless adequately covered already in the assessment discussion under Criterion 4)

Each semester I include the averages and standard deviations for each graded item my self-assessment of the course. I also provide a matrix that relates these items to the curricular objects. This report, in turn, by the Curriculum Committee.