ITEC 380 ORGANIZATION OF PROGRAMMING LANGUAGES A. Catalog Entry ITEC 380. Organization of Programming Languages. Three hours lecture (3). Prerequisites: ITEC 320 and ITEC 324. Programming language constructs, run-time behavior of programs, desirable features of languages, design and implementation considerations to obtain those features. B. Detailed Description of Content of Course Topics include: 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 C. 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. D. 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. E. Assessment Measures 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. F. Other Course Information None G. Review and Approval DATE October 1, 1991 May 12, 1994 October 30, 1996 October 13, 2000 Sept. 25, 2001 ACTION Updated for 1991-92 Reviewed for 1994-95 Prerequisite change Updated Updated APPROVAL Ivan B. Liss, Chair Edward G. Okie, Chair Edward G. Okie, Chair John P. Helm, Interin Chair John P. Helm, Chair