NEW COURSE PROPOSAL GRADUATE Level I Level II UNDERGRADUATE SCHOOL, DEPARTMENT, COLLEGE: College of Computing 1. Proposed Course Number: CS 3130 2. Hours: LECTURE X DATE: 2/3/2003 3 LAB/RECITATION 3 SEMESTER CREDIT 4 (Verify with Registrar's Office) 3. Descriptive Title: Foundations of Translation 4. Recommended Abbreviation for Transcript – (24 characters including spaces): 5. Catalog Description – (25 words or less) An introduction to concepts and foundational principles behind machine translation. Emphasis on concepts from regular expressions (specification) to abstract models of computation to practical mechanisms of translation. 6. Basis: L/G X P/F X Audit 7. Prerequisites: CS2200, CS2340, CS3500? Prerequisites with concurrency: Corequisites: 8. Has the course been taught as a special topic? No If YES, When Is this course equivalent to another course (graduate or undergraduate) taught at Ga. Tech? If yes, list course number(s): No 10. Are you requesting that this course satisfy: Humanities No Enrollment 9. 11. Expected Mode of Presentation: Social Science No MODE Lecture % of COURSE 50% Laboratory Supervised Unsupervised Discussion 35%_____________________________ 15% Seminar Independent Study Library Work Demonstration Other (Specify) 12. Planned Frequency of Offering: TERM TO BE OFFERED Fall X EXPECTED ENROLLMENT 200 Spring X 200 Summer X 100 1. Probable Instructor(s) – Please mark with an asterisk any non-tenure track individuals. Santosh Pande, Olin Shivers, Rich LeBlanc, Bill Leahy* 2. Purpose of Course: Relation to other courses, programs and curricula: 15. Required Yes 16. Please attach a topical outline of the course Elective Registrar 10/00c:\document\NEW COURSE.doc Learning Objectives 1. An understanding of specification of languages: Regular expressions, context free grammars, etc. 2. An understanding of abstract models of computation: finite state automata, pushdown automata, etc. 3. An understanding of practical scanning and parsing techniques 4. An understanding of how compilers manage block-structured programming languages, including scope, basic analysis involved to enforce language semantics. 5. Understand the runtime representation and manipulation of values and hardware/software mechanisms involved. 6. Understand relationship between code generation techniques and how they impact an application programmer. Course Outline and Syllabus 1. Regular expressions, NFA/DFA, state optimizations, equivalence classes, introduction to pumping lemma 2. Context free grammars, Chomsky Normal Form, Chomsky Hierarchy, pushdown autoomata (differences between deterministic and non-deterministic in terms of class of languages recognizeed) 3. General algorithms for parsing (CYK) and complexity of parsing for diffferent classes of context free grammars 4. Overview of compilation process: Scanning, parsing, semantic analysis, optimization, code generation 5. Longest match scanning algorithm and handwritten scanners 6. Using a more complex table-driven scanner - concepts of automating scanner generation -- finite state machines and their implementation. 7. Introduction to practical parsing: Expansion vs. reduction in parsing 8. Top down parsing -- recursive descent and LL(1) concepts. Concept of predicting parsing rules to be used and table driven parsing. 9. Bottom up parsing: LR(0) parsing 10. Semantic analysis, implementation of scopes and binding, type compatibility, overloading of functions, parametric polymorphism 11. Code generation, register variables, choice of addressing modes, implementation of if..then..else, case statements, mapping of language constructs and sources of inefficiencies Textbooks 1. Compiler Construction: Principles and Practice by Kenneth C Loudon [ISBN 0-534-93972-4]