Generated on Tue Oct 25 10:19:18 2022

CS 471: Programming Language Structure I (JSON)

Catalog description: Syntax, semantics, implementation, and application of programming languages; abstract data types; concurrency.

Prerequisites: At least a C- in C S 370 and C S 371.    (Catalog Link)

Credits: 3 (3)

Coordinator: Parth Nagarkar

Textbook: Concepts of Programming Languages, 11th edition, Robert W. Sebesta, ISBN-13: 9780133943061
    (also: online reading)

BS degree role: required

Course Learning Objectives

  1. Improve the background for choosing appropriate programming languages for certain classes of programming problems
  2. Increase the ability to learn new programming languages
  3. Critically evaluate what paradigm and language are best suited for a new problem
  4. Demonstrate the use of the primary segments for a running program
  5. Apply the principles of functional programming
  6. Apply the principles of logic programming
  7. Program a simple parallel program with threads
  8. Program in at least five different programming languages
  9. Program in C to demonstrate architecture details

Course Practicum Requirements

  1. Implement a parallel program with threads
  2. Program in C to demonstrate architecture details
  3. Program in a Functional Programming language
  4. Program in a Logic Programming language

Course Topics

  1. The study of programming languages: programming domains; language evaluation criteria; language design trade-offs; language categories; historical perspective; evolution of major programming languages.
  2. Syntax and semantics: syntax, context-free grammars; BNF; basics of run-time structures; operational, denotational, and axiomatic semantics.
  3. Names, binding times, and scope: variables and other names; binding; scopes and lifetime; referencing environments; block-structured languages.
  4. Data types and data structuring: types; type properties; simple types; complex types; pointer and reference types; type checking; strong typing; type equivalence.
  5. Structuring the computation: expressions; overloaded operators; type conversions; short-circuit evaluation; statements; control structures; subroutines; coroutines; processes.
  6. Object-oriented programming: abstract data types; classes; inheritance; polymorphism.
  7. Exceptions and exception handling in different programming languages.
  8. Concurrency: subprogram-level concurrency; semaphores; monitors; message passing; threads; statement-level concurrency.
  9. Functional programming languages: mathematical functions; expression evaluation; types; Lisp/Scheme/Haskell.
  10. Logic programming languages: predicate calculus; unification; resolution; Prolog; Answer Set Programming.

Course Improvement Decisions

(Course improvement decisions or recommendations from past assessments)

  1. FA19: introduce heap assignment to better understand garbage collection

ABET Outcome Coverage

(Provide Mapping to ABET Student Outcomes)

  1. TBD

Other Notes

(Any important notes or issues to consider)

  1. none