Compilers
CIS*4650 (W10)
Course Outline
General Information
| Regular classes: |
January 11, 2010 to April 9, 2010 |
| Final Exam: |
April 15, 2010 @ 1900h (MACK 227) |
Overview
This course will provide an overview of programming language paradigms
and formalism followed by a detailed study of the compilation process for
a procedural language. Students will develop an understanding of compiler
design by considering fundamental issues such as as parsing, building and
manipulating intermediate representations of a program and code generation.
These principles will be put into practice through the construction of a
fully functioning compiler or interpreter for a small procedural language
using widely available tools for compiler construction and a general purpose
programming language. Assignments are designed to reinforce various concepts
that are typically abstracted by tools during compiler construction in order
to provide the student with a complete picture of the compiler design and
implementation process.
Students entering this course are expected to have a solid grasp of modular
programming and familiarity with assembly language and basic computer
architecture (i.e. registers, memory organization, etc.). Experience with the
development of a large software project such as that provided by CIS*3750 or
CIS*3760 is also beneficial.
See
calendar description for additional information (including prerequisites).
Note that I do not consider CIS*3620 to be an important pre-requisite in
order to succeed in this course.
Evaluation
- Assignments : 20% (2 x 10%)
- Quizzes : 20% (4 x 5%)
- Project: 40%
- Final exam : 20%
NOTE:
- Note that steps will be taken to screen all submitted assignments for
cheating (all screening takes place on campus, using department hardware).
All cases of suspected academic misconduct will be agressively
pursued following university guidelines (see note below regarding
the expectation of independent work).
- There is a strict policy of considering regrades for only seven (7)
calendar days from the date a quiz or assignment is returned to students
(see assignments or exam page for additional details). Regrade requests
will not be considered after this period.
- You must achieve a passing grade on both the assignment and quiz/exam
sections in order to obtain a passing grade in the course. Should you
fail one or both of these sections your final grade will be no higher than
44%.
- Assignments submission requirements must be followed exactly. Where
submission requirements are not satisfied a grade of 0 will be assigned
without exception.
- Students are expected to be familiar with all course policies posted on
the various web pages for this course, as well as university policies with
respect to students rights and responsibilities.
Required Text
Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques and Tools (2e). Addison-Wesley, 2006 (ISBN 0-321-48681-1).
Recommended Text
One of:
- John R. Levine, Tony Mason and Doug Brown, lex & yacc (2e).
O'Reilly & Associates, 1992 (ISBN 1-56592-000-7).
- John Levine, flex & bison. O'Reilly & Associates, 2009.
(ISBN 0-596-15597-2)
Academic Misconduct in
Computing
It is the policy of this department to treat cases of academic misconduct
seriously. This statement is intended to clarify our policies with regard to
academic misconduct in courses taken in the Department of Computing and
Information Science, and to clarify penalties for offenses as outlined in the
document, Penalties for Academic Misconduct: Dean's Guidelines, dated February
13, 1996 (all factual information and quoted material herein is based on this
document; students are free to review these guidelines by contacting the
Dean's Office). It is policy that all suspected cases of academic misconduct
are referred to the Chair of the department for consideration and referral to
the Dean of the college.
The Dean's Guidelines identify four offenses: plagiarism, misrepresentation,
examination cheating and impersonation. The most common forms of misconduct
exhibited in Computing are misrepresentation, and to a lesser extend
plagiarism.
Plagiarism: is the "verbatim copying or close paraphrasing of another person's
work without full and formal acknowledgement". Specificially, this involves
material from a book, research paper or other source being used without
acceptable referencing of the source material. This includes the use of
segment of code or non-standard algorithms that were obtained by a student
from a third party source, and used without permission and/or proper
references. Penalties for plagiarism range from 0 on the assignment in
question for minor first offenses to debarment and expulsion for subsequent
offenses.
Misrepresentation: refers to the submission of material created by someone
other than the student. This includes the copying of another students' source
code, in part or in whole, or submitting assignments from previous offerings
of the course. The Dean's Guidelines make it clear that "A student producing
work in the knowledge that it will be submitted by another student as that
student's work is also subject to penalty". Misrepresentation is a very
serious offense, with penalties ranging from 0 for the course "...if a student
submits material created by someone other than the student, whether purchased
or not, the intent being to pass off that work as one's own", to expulsion for
subsequent offenses.
Examination Cheating and Impersonation are less common, however carry
similarly serious penalties.
Note that we encourage students to collectively discuss design issues or
strategies for problem solving related to assignments. What is expected
however is that the written work and implementations resulting from these
discussions be independently produced by each student. Note that both the
student who gives their work to another student, or leaves work where others
may find it, and the student who uses the work are implicated to varying
degrees. Please take care not to leave your work around, or leave a
workstation without logging off. It is ultimately your responsibility to
protect the integrity of your own work.
Last Modified: 2009 / 03/ 29