CSCE 4430: Programming Languages - Fall 2016

Instructor: Paul Tarau, Professor - see my home page for contact info and office hours.

Please fill out spot forms and exit surveys!

Grader: you can contact him via blackboard or directly as KarthikvenkataramanaPemmaraju at

course directory

Midterm exam: Thursday Oct 13

Final exam: Tuesday Dec 13 10:30am-12:30pm cumulative, open net

Description and Objectives:

A comprehensive programming language course, with emphasis on programming paradigms and language processors - and some of their formal models like Predicate Logic  and Lambda Calculus. Hands-on work with implementations of key concepts (recursion, inheritance, unification, backtracking, type inference, infinite and  lazy data objects, threads. The course also provides a glimpse at salient features of  modern object oriented languages and an overview of language implementation techniques, run-time systems, garbage collection, interpreters, compilers with emphasis  on addressing and memory management in efficient procedural languages like C.

Syllabus (L1..Ln) indicate number of the lecture


Scripting and Web Programming Languages

Logic Programming Languages (Prolog)

Functional Programming Languages (Haskell)

Object Oriented Programming (Java+Scala+Swift)

Low Level Imperative Programming (C)

Concurrent Programming

Future Trends in Programming Language Design L26

Prerequisites: Data Structures

Recommended books and online materials:


Software, tutorials and related links:


  1. Understand the concepts of programming languages, with emphasis on programming paradigms and language processors.                        
  2. Have a practical understanding of commonalities and differences between major programming paradigms.   
  3. Understand the key object oriented, logic and functional programming concepts.
  4. Understand the key concepts of event driven and concurrent programming.
  5. Understand the use and implementation of modern programming language concepts like recursion, inheritance, reflection, unification, backtracking, type inference, infinite data objects, and threads. 
  6. Have some familiarity with domain-specific languages with emphasis on Internet programming languages.