CS 352 Syllabus

Organization of Programming Languages

Revised: February 2014 (Andrew Scott)

Course Description

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 languages may be chosen from (but not limited to) C++, JavaScript, Haskell, Prolog, Python, Scheme, Prolog, BASIC, and machine code. A competent knowledge of the Java language is assumed.

Prerequisites and Notes

  • CS 151.
  • 3 credit hours.


  • 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 Procedure

Grading procedures and factors influencing course grade are left to the discretion of individual instructors, subject to general university policy.

Attendance Policy

Attendance policy is left to the discretion of individual instructors, subject to general university policy.

Course Outline

  • 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 and linkers.
  • 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, and lifetime.
  • The Functional Programming Paradigm: An introduction to the functional programming paradigm using the Javascript and Python programming languages and the jQuery Javascript library.
Office of Web Services