University of West Florida Department of Computer Science Advanced Programming Languages, COP 6025 Prerequisites by Topic: COP4020 or similar Programming Languages survey. Catalog description: Theory and practice of programming language design. Topics include: advanced language constructs, parallel programming, and formal specification and implementation of programming languages, compiler construction tools. Students will design and implement a small programming language. Course Objectives: The goal of this course is to present the theory and practice of programming language design and implementation. This goal will be achieved by concurrent presentation of programming language theory (syntax and semantics) with specification and implementation of a new programming language. This knowledge will allow the student to gain a deeper understanding of the programming languages they currently use, to simplify learning of new languages, and to develop domain specific programming languages. References: Scott, Michael, 2006. Programming Language Pragmatics 2nd Edition: Morgan Kaufmann Publishers ISBN 9-780126-339512. Meyer, B. 1990. Introduction to the Theory of Programming Languages. Prentice Hall. ISBN 0-13-498510-9. Levine, J. R., T. Mason, D. Brown, 1992. Lex & Yacc. O'Reilly. ISBN 1-56-592000-7. Requirements and Grading: - Exams - 40% - Programming projects - 45% - Research Paper/Presentation 15% Student Learning Outcomes. Upon successful completion of this course, students will be able to: 1. Describe basic translation models for execution of computer programs 2. Describe the categories of formal grammars in the Chomsky hierarchy and the automata that process grammars within each category 3. Describe the difference between top-down and bottom-up parsing algorithms 4. Describe and trace execution of LL and LR parser algorithms; describe how to build LL and LR parse tables 5. Implement a recursive descent parser with semantic checks and low-level code generation 6. Use a parser-generator to generate an LR parser from a grammatical specification 7. Identify various local and global code optimizations 8. Describe basic issues pertaining to concurrrency: thread creation, synchronization and termination 9. Implement programs to demonstrate and describe issues pertaining to concurrrent execution of multiple threads on a single kernel process compared to execution of multiple threads in separate kernel processes. 10. Describe the basic categories of programming language semantic representations, their strengths and weaknesses. Test Policy: Tests other than at designated times will be given only when significant extenuating circumstances make it impossible for the student to take the test at the regular time. Tests are typically closed-book, closed note. No makeup tests will be given unless truly extraordinary circumstances arise or students make arrangements in advance. You will be asked to stay in the classroom for the duration of the examination. PLEASE take tests in pencil to avoid having to scratch out unwanted answers. Research Paper and Presentation You will be required to produce a research paper as part of the requirements of this course. You will make an in-class oral presentation of your paper. Course Overheads will be available for download from the regular class website Please note: 1. The overheads were created with PowerPoint 2003 (available in the open computing lab). 2. The overheads will change slightly throughout the semester as I discover and correct errata and as I seek to make them more clear or complete. Programming Project Policies: Projects will be graded on whether they correctly solve the assigned problem, whether they are adequately commented, and whether they adhere to good programming practices. Projects will be submitted to the dropbox for the course. Implementation: All work should be neatly labeled on the outside as indicated under homework.Follow good programming and commenting style and turn You will zip up files and submit them to the dropbox in Elearning.: - The program listing or source code, executable code if it exists, etc. - Design documents appropriate to the assignment (UML diagrams, Structure charts, data flow diagrams, etc). - A User's Manual that provides details regarding how to prepare the program for execution and how to run it. Tentative Schedule Please note: Schedule changes made in class always supercede information that is posted here. Week Topic and Project 1 Introduction to the Course, Translation Review 2 Chomsky Hierarchy, grammar review 3 Template program, (Project #1, Part #1 out) 4 Scanners, Parsers 5 Parsers, Semantic Analysis (Paper Topic due) 6 Semantic Analysis, Symbol Tables (P1, P1 in) 7 Test #1 8 Code Generators (Project #1, Part #2 out) 9 Code Optimization (Paper Outline due) 10 Compiler Construction Tools (P1 P2 in, Project #2 out) 11 Concurrency 12 Semantic Analysis Introduction, Notations (Project #3 out, P2 in) 13 Denotational, Axiomatic Semantics 14 Presentations (Paper due) 15 Presentations, review (P3 in) 16 Final Exam: Thursday, 04/30/09, 5:30-8:00 PM