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
- Improve the background for choosing appropriate programming languages for certain classes of programming problems
- Increase the ability to learn new programming languages
- Critically evaluate what paradigm and language are best suited for a new problem
- Demonstrate the use of the primary segments for a running program
- Apply the principles of functional programming
- Apply the principles of logic programming
- Program a simple parallel program with threads
- Program in at least five different programming languages
- Program in C to demonstrate architecture details
Course Practicum Requirements
- Implement a parallel program with threads
- Program in C to demonstrate architecture details
- Program in a Functional Programming language
- Program in a Logic Programming language
Course Topics
- The study of programming languages: programming domains; language evaluation criteria; language design trade-offs; language categories; historical perspective; evolution of major programming languages.
- Syntax and semantics: syntax, context-free grammars; BNF; basics of run-time structures; operational, denotational, and axiomatic semantics.
- Names, binding times, and scope: variables and other names; binding; scopes and lifetime; referencing environments; block-structured languages.
- Data types and data structuring: types; type properties; simple types; complex types; pointer and reference types; type checking; strong typing; type equivalence.
- Structuring the computation: expressions; overloaded operators; type conversions; short-circuit evaluation; statements; control structures; subroutines; coroutines; processes.
- Object-oriented programming: abstract data types; classes; inheritance; polymorphism.
- Exceptions and exception handling in different programming languages.
- Concurrency: subprogram-level concurrency; semaphores; monitors; message passing; threads; statement-level concurrency.
- Functional programming languages: mathematical functions; expression evaluation; types; Lisp/Scheme/Haskell.
- Logic programming languages: predicate calculus; unification; resolution; Prolog; Answer Set Programming.
Course Improvement Decisions
(Course improvement decisions or recommendations from past assessments)
- FA19: introduce heap assignment to better understand garbage collection
ABET Outcome Coverage
(Provide Mapping to ABET Student Outcomes)
- TBD
Other Notes
(Any important notes or issues to consider)
- none