CS 7301-002: 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 Real-time 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. Muller-Olm, 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