CSE 6341 Comprehensive Exam
Contact: Atanas (Nasko) Rountev, rountev.1 osu edu. Please contact me with any questions or concerns.
Cheat sheet: 1 page standard size, anything printed/written, on both sides
Primary resources: Lecture notes, as listed below. You are only responsible for material covered in the lecture notes. Some parts of the listed books may be useful as additional reading, but you are not responsible for anything in those books. My course notes are available at this link. Info on textbooks is available at this link.
If you took CSE 6341 before Autumn 2019: please notify Michelle Pitro ASAP, so she can notify me on your behalf (so you can stay anonymous). This study guide is based on the assumption that everyone taking the exam took CSE 6341 in Autumn 2019 or later.
What to study
Attribute grammars: Course notes; Pagan, Formal Specification of Programming Languages, Ch. 2.1, 2.2, 2.3, 3.2; Slonneger and Kurtz, Formal Syntax and Semantics of Programming Languages, Ch. 3.1, 3.2; Stansifer, The Study of Programming Languages, Ch. 2.2, 2.3; Dragon Book (Aho, Lam, Sethi, Ullman, Compilers book, 2nd edition), Ch 5.1, 5.2. Topics: Structure and evaluation of attribute grammars, uses for semantic analysis (e.g., type checking) and for code generation. Exam questions and answers will be restricted to pure attribute grammars (i.e., attribute grammars without side effects).
Informal execution semantics and operation of interpreters: Projects developing interpreters. Basically, you should understand how language implementations work conceptually, e.g., what a language implementation can compute statically vs. at run time.
Types: Rountev's Types slides excluding slides 19–25. Topics: Types, static and dynamic typing, type safety, static and dynamic type checking, static type checking using pure attribute grammars.
Topics from #1 or #2: Students will have the option of choosing from questions involving topics from #1 or #2.
Rountev's 6341: Operational semantics: Rountev's course notes; Slonneger and Kurtz Ch 8.4, 8.6 (big-step semantics only). Abstract interpretation: Rountev's course notes.
Bond's 6341: Concurrency: Bond's course notes; relevant chapters in Scott's book; Chapters 1-4 of Java Concurrency in Practice. Threads, locks, data race freedom, atomicity.