Organization of Programming Languages
Revised: February 2014 (Andrew Scott)
Syntax, semantics, language design and implementation. Language models: imperative,
object oriented, functional, logic, and low level. Language ideas include: history
and evolution, procedural and data abstraction, and lexical and expression analysis.
The course will initially focus on the C language, but then broaden to others. Example
Python, Scheme, Prolog, BASIC, and machine code. A competent knowledge of the Java
language is assumed.
Prerequisites and Notes
- Appreciate and apply programming paradigms other than object oriented.
- Learn and apply multiple programming languages and identify their commonalities, differences,
weaknesses, and strengths.
- Learn the basics of C including: operators, variables, pointers, structs, compiler
directives, arrays, dynamic allocation, and documentation.
- Learn the primary concepts of language implementation including: lexical analysis,
parsing, and recursive descent parsing.
- Understand the inter-relationship between finite state machines and programming logic
including: lexical analysis and regular expressions.
- Learn the vocabulary and notions that enable one to compare the benefits and drawbacks
of different programming languages in terms of its suitability to a particular problem.
- Robert W. Sebesta,
Concepts of Programming Languages, Tenth Edition, Addison Wesley, 2012
- Supplemental book: Charlie McDowell,
C for Java Programmers: A Primer, http://www.lulu.com/product/paperback/c-for-java-programmers-a-primer/1320867
Grading procedures and factors influencing course grade are left to the discretion
of individual instructors, subject to general university policy.
Attendance policy is left to the discretion of individual instructors, subject to
general university policy.
- Foundations for assessment, comparison and categorization of programming languages.
Implementation methods and design tradeoffs.
- Programming language history and evolution.
- C Programming Language: Discussion of the C programming languages, discussion of similarities
and differences between C and Java. Arrays, strings, pointers, preprocessing, compilers
- Language Syntax and Semantics: Regular expressions, finite state machines, context-free
grammars, BNF, parse trees, ambiguity, precedence, and associativity. Lexical analysis,
parsing, recursive descent parsing.
- Naming, Binding, Scope: Naming conventions, type checking, variable scope, type compatibility,
- The Functional Programming Paradigm: An introduction to the functional programming