CS 7301002: Recent Advances in Computing
Programming Languages and Software Engineering
This course will examine the role of programming languages
in engineering of reliable software. Throughout the course
we'll study an advanced concept in programming languages followed
by how it has been applied in software engineering research. Essentially
we'll see how theoretical concepts in programming languages can be applied
in practice to software development.
This cousre is meant for advanced graduate students (read Ph.D.).
MS students may
be allowed, but only if you talk to me first. Should have an appreciation
for formal stuff. Should have taken automata theory (CS 5349)
AND one of graduate level Algorithms Analsysis course (CS 6353), Programming
Languages course (CS 6371), or Software Engineering course (CS 6354).
There is no textbook, but a collection of tutorial articles will be made
available. There will be programming assignments, student presentations,
as well as a term paper.
Topics covered include:
 Fixpoint Semantics of Programming Languages
and its applications to:
 Temporal Logic and Mu calculus
 Model Checking of Finite State Systems
 Verification of infinite State Systems
 Abstract Interpretation and its applications to:
 Aspect Oriented Software Engineering
 Static Analysis of Programs
 Abstract Model Checking
 Program Transformation & Partial Evaluation and its applications to:
 Provably Correct Compilation
 Constraint Programming and its applications to:
 Verification of Realtime Systems
 Architecture Description Languages and their application to:
 Pi Calculus and its applications to:
 Verification of Concurrent Systems
 Miscellaneous:
 Intro to theory of types and objects
 Component based Software Engineering
 Proof carrying code (pertains to security of mobile code)
Partial Bibliography
 J. Lloyd. Foundations of Logic Programming. Springer Verlag. 2007.
 S. Abramsky and C. Hankin. Abstract interpretation of declarative languages:
Ellis Horwood; Halsted Press, 1987. Chapter 1.

David Schmidt. Denotational Semantics: a Methodology for Language
Development. W.C. Brown, 1986. Chapter 6 (Domain Theory II). 1986.

Z. Manna. Mathematical Theory of Computation. McGraw Hill. NY. 1974.
Chapter 5 (The Fixpoint Theory of Programs).
 J. MullerOlm, D. Schmidt, B. Steffen. Model Checking: A Tutorial Introduction.
Static Analasis Symposium, 1999.
 Edmund Clark, Doron Peled and Orna Grumburg. Model Checking. MIT Press. 2000.
 More to be added