ITEC 380: Organization of Programming Languages
Prerequisites: ITEC 320 and ITEC 324
Credit Hours: (3)
Programming language constructs, run-time behavior of programs, desirable features of languages, design and implementation considerations to obtain those features.
Detailed Description of Content of Course
1. History of programming languages
2. Brief survey of programming paradigms
3. Functional languages, and functions as values
4. Declarative, non-algorithmic languages
5. Declaration models (binding, visibility, scope, and lifetime)
6. Writing recursive function over recursive data (lists, trees)
7. Parsing (concrete and abstract syntax, abstract syntax trees)
8. Application of context-free grammars in recursive-descent parsing
9. Assigning semantics to a parse tree
Detailed Description of Conduct of Course
A variety of languages will be presented to demonstrate the range of features which can be found in modern programming languages. Students will develop programs in several languages to foster this understanding. Comparisons of features and their interactions with one another will also demonstrate the intricacies of language design. Students may be required to make an in-depth group study of a particular language. Formal and informal in-class writing and problem-solving exercises may also be required.
Goals and Objectives of the Course
Students who complete the course will be able to:
1. Describe the salient characteristics of several language paradigms (procedural, object-oriented, imperative, declarative/logic, functional), and write small programs in each paradigm.
2. Distinguish between syntactic issues and semantic issues in programming languages, use formal techniques (such as BNF) in the specification of language syntax and the construction of language parsers, and explain and modify code that assigns semantics to parse trees.
3. Describe, and discuss the effects of, different forms of variable binding, scoping, and lifetime.
4. Define type safety, static and dynamic typing, explicit and implicit type declarations and coercions, and function types; and describe their roles in program development.
The students will be given several programming assignments in a variety of languages. At least 1 in-class exam and the final exam will also be used to assess students' progress.
Other Course Information
Review and Approval
October 1, 1991 Updated for 1991-92 Ivan B. Liss, Chair
May 12, 1994 Reviewed for 1994-95 Edward G. Okie, Chair
October 30, 1996 Prerequisite change Edward G. Okie, Chair
October 13, 2000 Updated John P. Helm, Interin Chair
Sept. 25, 2001 Updated John P. Helm, Chair
Revised: June 1, 2012