Syllabus.html

advertisement
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
Download