CIS 341 - Compilers
Fall 2008
Topics    
Reading    
Projects    
Grading    
Schedule    
Policies
Time: MWF 11:00 - noon
Room: Towne 321
Instructor:
Steve Zdancewic
      e-mail: cis341 (AT) seas.upenn.edu
      office hours: Tues. 9:30-10:30
(and by appointment) Levine 511
Teaching Assistant:
  Luke Zarko
      e-mail: cis341 (AT) seas.upenn.edu
      office hours: Mon. 3:30-4:30
(and by appointment) Moore 100
Course contact information:
  Class mailing list: CIS341-001-08C (AT) lists.upenn.edu (open
to all members of the class)
Prerequisites: CIS 121 and CIS 240
Topics:
- Lexing/Parsing
- Code generation
- Semantic analysis
- Optimization
- Run-time support
Reading and References
The following books contain useful course material, and much of
the lecture content is derived from them (and other sources). Copies
of these books are on reserve in the Penn Engineering Library.
- Compilers (2nd edition) by Aho, Lam, Sethi, and Ullman
- Advanced Compiler Design and Implementation by Muchnick
- Modern Compiler Implementation in ML by Appel
In addition, the following papers and web sites provide supplementary
material. Reading selections from these sources will be announced in class.
Projects: The Quaker OAT Compiler
There are a total of 8 projects. Project 0 is an individual project.
The rest of the projects are group projects -- students may work alone
or in pairs for them.
Here are instructions for getting access to
the tools you need to complete course assignments.
Grading Criteria
- 10% Midterm I - tentative date: 10/20/08
- 10% Final exam - date to be determined by registrar
- 80% Course projects (group projects)
Lecture Slides and Notes
Note: The following schedule is tentative!
Many of the slides in these lectures have been adapted from course materials by Andrew Myers at Cornell University and Greg Morrisett at Harvard University.
Course Policies
General Project Guidelines
- Groups:
Teams for group projects will consist of one or two students.
- Late Projects:
All projects are due at 11:59pm on the due date. Each student has 3
"grace days". Projects may be turned in until 11:59pm on the day
after the due date at the expense of one grace day per group
member. Projects using grace days must clearly indicate that fact
in the README document.
(If a group has a member with no grace days, that group may not submit
the project late.) Projects may be turned in late for a legitimate
reason with prior approval of the course instructor.
- Regrade Policy:
Regrade requests should be sent to the TA. Only reasonable requests
will be considered. The entire project or exam will be regraded.
Note that this means that the score on a regraded project might
decrease.
Submission Policy
Academic Integrity
This course will abide by the University's Code of Academic
Integrity. In particular, for individual projects and group
projects, the following guidelines should be followed:
- For individual projects, you must type in and edit
your own code, documentation, and any other materials submitted
for grading.
- Copying someone else's file is not allowed.
- Allowing someone else to copy a file of yours, either explicitly or
implicitly by leaving your code unprotected, is not allowed.
- Editing each other's files is not allowed
- Regarding the ethics of what you may or may not discuss with
others:
-
If there is any doubt about the use of external
sources or collaboration, please ask for clarification by the
course staff.
|