





Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A syllabus for the qualifying exam on Programming Languages and Compilers at the University of Wisconsin-Madison. It lists the topics and concepts that the exam may cover and provides general references for each section. The document also includes information on the required courses for the exam and where to find study materials. The topics covered include programming paradigms, features and properties of languages, translation and implementation, and formal methods for describing languages and reasoning about programs.
Typology: Study notes
1 / 9
This page cannot be seen from the preview
Don't miss anything!






The course requirements are CS 536, CS 701, CS 704, and CS 706. You should consult the syllabi for these courses when you study for the exam. If you did not take these courses, please ask the faculty for copies from recent offerings of the courses. (Required material is also sometimes covered, or covered in more detail, in CS 703; however, the topic of CS 703 varies from offering to offering.) This document lists topics and concepts that the exam may cover, and is provided as a study aid. The general references that are provided in the different sections are places where you should be able to find a discussion of the majority of the topics listed in that section. In many cases, several general references have been given so that you have a number of different options (e.g., to find a treatment of a particular topic at a level that you find accessible). Many of the references are books. You do not have to read the entire book; consult the table of contents and the index to find where particular topics are discussed. Most of the books are available at Wendt Library; some may be available only at the reserve desk.
General References: [Sethi 1989]
General References: [Pratt 1983; Sethi 1989]
General References: [Aho et al. 1986; Fischer and LeBlanc 1988; Muchnick 1997; Waite and Goos 1985; Wilhelm and Maurer 1995]
General References: [Aho et al. 1986; Field and Harrison 1988; Nielson and Nielson 1992; Schmidt 1986]
Note: you should not need to pay to access any documents on this list. “Online copy available at” notes link to free copies of some readings. Many resources are free when accessed on campus, or from within the Department of Computer Sciences. See https://csl.cs.wisc.edu/services/remote-access/department-vpn for instructions on how to take advantage of this from non-departmental machines. The campus library offers free access to many resources at http://ezproxy.library.wisc.edu/menu#ezproxy-testing-menu. If you find that any links given below no longer work, or you cannot find any online copies of some paper, please contact the faculty members listed at the top of this document for help.
S. Abramsky and C. Hankin. An introduction to abstract interpretation. In Abstract Interpretation of declarative languages, volume 1, pages 63–102. Ellis Horwood, 1987.
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: principles, techniques, and tools. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1986. ISBN 0-201-10088-6.
A. Aiken. Introduction to set constraint-based program analysis. Sci. Comput. Program., 35(2-3):79–111, Nov. 1999. ISSN 0167-6423. doi: 10.1016/S0167-6423(99)00007-6. URL http://dx.doi.org/10. 1016/S0167-6423(99)00007-6. Online copy available at http://www.cs.berkeley.edu/~aiken/ publications/papers/scp99.ps.
T. Apiwattanapong, A. Orso, and M. J. Harrold. A differencing algorithm for object-oriented programs. In Proceedings of the 19th IEEE international conference on Automated software engineering, ASE ’04, pages 2–13, Washington, DC, USA, 2004. IEEE Computer Society. ISBN 0-7695-2131-2. doi: 10.1109/ASE.2004.5. URL http://dx.doi. org/10.1109/ASE.2004.5. Online copy available at http://www.cc.gatech.edu/~orso/papers/ term.orso.harrold.ASE04.pdf.
K. Ashcraft and D. Engler. Using programmer-written compiler extensions to catch security holes. In Proceedings of the 2002 IEEE Symposium on Security and Privacy, SP ’02, pages 143–, Washington, DC, USA, 2002. IEEE Computer Society. ISBN 0-7695-1543-6. URL http://dl.acm.org/citation.cfm?id=829514.830533. Online copy available at http://www.stanford.edu/~engler/sp-ieee-02.pdf.
J. Auslander, M. Philipose, C. Chambers, S. J. Eggers, and B. N. Bershad. Fast, effective dynamic compilation. In Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation, PLDI ’96, pages 149–159, New York, NY, USA, 1996. ACM. ISBN 0-89791-795-2. doi: 10.1145/231379.231409. URL http://doi.acm.org/10.1145/231379.231409. Online copy available at http://www.cs. washington.edu/research/dyncomp/Papers/pldi96-abstract.html.
T. Ball and J. R. Larus. Efficient path profiling. In Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture, MICRO 29, pages 46–57, Washington, DC, USA, 1996. IEEE Computer Society. ISBN 0-8186-7641-8. URL http://dl.acm.org/citation.cfm?id=243846.243857.
T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In Proceedings of the 8th international SPIN workshop on Model checking of software, SPIN ’01, pages 103–122, New York, NY, USA,
K. Beck. Embracing change with extreme programming. Computer, 32(10):70–77, Oct. 1999. ISSN 0018-9162. doi: 10.1109/2.796139. URL http://dx.doi.org/10.1109/2.796139. Online copy available at http: //faculty.salisbury.edu/~xswang/research/papers/serelated/xp/rx070.pdf.
B. W. Boehm. Human-computer interaction. In R. M. Baecker, J. Grudin, W. A. S. Buxton, and S. Greenberg, editors, Human-computer interaction, chapter A spiral model of software development and enhancement, pages 281–292. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1995. ISBN 1-55860-246-1. URL http: //dl.acm.org/citation.cfm?id=212925.212952.
D. P. Friedman and D. S. Wise. CONS should not evaluate its arguments. In ICALP, pages 257–284, 1976.
E. Gamma, R. Helm, R. E. Johnson, and J. M. Vlissides. Design patterns: Abstraction and reuse of object-oriented design. In Proceedings of the 7th European Conference on Object-Oriented Programming, ECOOP ’93, pages 406–431, London, UK, UK, 1993. Springer-Verlag. ISBN 3-540-57120-5. URL http://dl.acm.org/citation.cfm? id=646151.679366. Online copy available at http://citeseer.ist.psu.edu/gamma93design. html.
H. Glaser, C. Hankin, and D. Till. Principles of functional programming. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1984. ISBN 0-13-709148-6.
P. Godefroid, N. Klarlund, and K. Sen. DART: directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI ’05, pages 213–223, New York, NY, USA, 2005. ACM. ISBN 1-59593-056-6. doi: 10.1145/1065010.1065036. URL http://doi.acm.org/ 10.1145/1065010.1065036.
M. J. C. Gordon. The Denotational Description of Programming Languages: An Introduction. Springer-Verlag New York, Inc., Secaucus, NJ, USA, 1979. ISBN 0387904336.
S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, PLDI ’02, pages 69–82, New York, NY, USA, 2002. ACM. ISBN 1-58113-463-0. doi: 10.1145/512529.512539. URL http://doi.acm.org/10.1145/512529.512539.
C. A. R. Hoare. An axiomatic basis for computer programming. Commun. ACM, 12(10):576–580, Oct. 1969. ISSN 0001-0782. doi: 10.1145/363235.363259. URL http://doi.acm.org/10.1145/363235.363259.
G. J. Holzmann. The model checker SPIN. IEEE Trans. Softw. Eng., 23(5):279–295, May 1997. ISSN 0098-5589. doi: 10.1109/32.588521. URL http://dx.doi.org/10.1109/32.588521.
D. Jackson. Boolean compilation of relational specifications. Technical report, Massachusetts Institute of Technology, Cambridge, MA, USA, 1998.
T. P. Jensen, D. Le Métayer, and T. Thorn. Verification of control flow based security properties. In IEEE Symposium on Security and Privacy, pages 89–103. IEEE Computer Society, 1999. ISBN 0-7695-0176-1.
N. D. Jones, C. K. Gomard, and P. Sestoft. Partial evaluation and automatic program generation. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1993. ISBN 0-13-020249-5. Online copy available at http://www.dina. kvl.dk/~sestoft/pebook/jonesgomardsestoft.ps, http://www.dina.kvl.dk/~sestoft/ pebook/jonesgomardsestoft.pdf.
R. Jones and R. Lins. Garbage collection: algorithms for automatic dynamic memory management. John Wiley & Sons, Inc., New York, NY, USA, 1996. ISBN 0-471-94148-4.
Y. Kataoka, D. Notkin, M. D. Ernst, and W. G. Griswold. Automated support for program refactoring using invariants. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM’01), ICSM ’01, pages 736–, Washington, DC, USA, 2001. IEEE Computer Society. ISBN 0-7695-1189-9. doi: 10.1109/ICSM.2001.972794. URL http://dx.doi.org/10.1109/ICSM.2001.972794. Online copy available at http://homes. cs.washington.edu/~mernst/pubs/refactoring-icsm2001.pdf.
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented pro- gramming. In ECOOP, pages 220–242, 1997. Online copy available at http://www.cs.ubc.ca/~gregor/ papers/kiczales-ECOOP1997-AOP.pdf.
M. Kim, V. Sazawal, D. Notkin, and G. Murphy. An empirical study of code clone genealogies. SIGSOFT Softw. Eng. Notes, 30(5):187–196, Sept. 2005. ISSN 0163-5948. doi: 10.1145/1095430.1081737. URL http://doi.acm. org/10.1145/1095430.1081737.
B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. SIGPLAN Not., 38(5): 141–154, May 2003. ISSN 0362-1340. doi: 10.1145/780822.781148. URL http://doi.acm.org/10.1145/ 780822.781148.
B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. SIGPLAN Not., 40(6): 15–26, June 2005. ISSN 0362-1340. doi: 10.1145/1064978.1065014. URL http://doi.acm.org/10.1145/ 1064978.1065014.
S. S. Muchnick. Advanced compiler design and implementation. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1997. ISBN 1-55860-320-4.
G. C. Necula and P. Lee. Safe kernel extensions without run-time checking. In Proceedings of the second USENIX symposium on Operating systems design and implementation, OSDI ’96, pages 229–243, New York, NY, USA, 1996. ACM. ISBN 1-880446-82-0. doi: 10.1145/238721.238781. URL http://doi.acm.org/10.1145/238721.
G. C. Necula, J. Condit, M. Harren, S. McPeak, and W. Weimer. CCured: type-safe retrofitting of legacy software. ACM Trans. Program. Lang. Syst., 27(3):477–526, May 2005. ISSN 0164-0925. doi: 10.1145/1065887.1065892. URL http://doi.acm.org/10.1145/1065887.1065892. Online copy available at http://www.cs. berkeley.edu/~necula/Papers/ccured_popl02.pdf.
F. Nielson, H. R. Nielson, and C. Hankin. Principles of Program Analysis. Springer-Verlag New York, Inc., Secaucus, NJ, USA, 1999. ISBN 3540654100.
H. R. Nielson and F. Nielson. Semantics with applications: a formal introduction. John Wiley & Sons, Inc., New York, NY, USA, 1992. ISBN 0-471-92980-8. Online copy available at http://www.daimi.au.dk/~bra8130/ Wiley_book/wiley.ps, http://www.daimi.au.dk/~bra8130/Wiley_book/wiley.pdf.
S. Park, S. Lu, and Y. Zhou. CTrigger: exposing atomicity violation bugs from their hiding places. SIGPLAN Not., 44(3):25–36, Mar. 2009. ISSN 0362-1340. doi: 10.1145/1508284.1508249. URL http://doi.acm.org/10. 1145/1508284.1508249.
C. Parnin and A. Orso. Are automated debugging techniques actually helping programmers? In Proceedings of the 2011 International Symposium on Software Testing and Analysis, ISSTA ’11, pages 199–209, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0562-4. doi: 10.1145/2001420.2001445. URL http://doi.acm.org/10.1145/ 2001420.2001445.
S. L. Peyton Jones. The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science). Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1987. ISBN 013453333X.
T. W. Pratt. Programming languages: design and implementation (2nd ed.). Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1983. ISBN 0-13-730580-X.
T. Reps. Program analysis via graph reachability. In Proceedings of the 1997 international symposium on Logic programming, ILPS ’97, pages 5–19, Cambridge, MA, USA, 1997. MIT Press. ISBN 0-262-63180-6. URL http:// dl.acm.org/citation.cfm?id=271338.271343. Online copy available at http://www.cs.wisc. edu/wpis/papers/tr1386.ps, http://www.cs.wisc.edu/wpis/papers/tr1386.pdf.
J. B. Rosser. Highlights of the history of the lambda-calculus. In Proceedings of the 1982 ACM symposium on LISP and functional programming, LFP ’82, pages 216–225, New York, NY, USA, 1982. ACM. ISBN 0-89791-082-6. doi: 10.1145/800068.802153. URL http://doi.acm.org/10.1145/800068.802153.
W. W. Royce. Managing the development of large software systems: concepts and techniques. In Proceedings of the 9th international conference on Software Engineering, ICSE ’87, pages 328–338, Los Alamitos, CA, USA, 1987. IEEE Computer Society Press. ISBN 0-89791-216-0. URL http://dl.acm.org/citation.cfm?id=41765.
D. A. Schmidt. Denotational semantics: a methodology for language development. William C. Brown Publishers, Dubuque, IA, USA, 1986. ISBN 0-697-06849-2.