Information Technology 380

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


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


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.  


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.


Other Course Information

None


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