Course Learning Objectives
This course examines the fundamental theory and practice of
implementing
today's programming languages.
Students should emerge with a good appreciation for the implementation
issues and strategies behind making programs in high level programming
languages work correctly
and efficiently on a target machine.
A major part of the course is
the practical experience of implementing various phases of a compiler for
a small object-oriented programming language.
Students learn translation
methodology that is useful in many other situations in addition to compilation, including
command interpreters, report-generating systems, programmable applications,
configuration file handling, preprocessors, debuggers, static program analysis tools, testing tools,
virtual machines, integrated development environments, and many other software engineering
tools.
You should consider taking CISC 471 / 672 if you are curious about:
AND you have the proper prerequisites. Note: There is no assumption of previous coursework in compilers.
Prerequisite: CISC 320: Algorithms and Advanced Programming or permission of instructor.
Meeting Times: MWF 3:35pm-4:25pm Purnell Hall 231.
Important announcements are usually made at the beginning of class.
Quizzes will be given at the beginning of class on some Wednesdays.
Prerequisite: A class similar to CISC 320: Algorithms and Advanced Programming.
Instructor:
John Cavazos, cavazos at cis.udel.edu
412 Smith Hall
Office Hours:
Mondays, 1-2PM and Wednesdays, 12-1PM and by appointment.
Teaching Assistant:
Yuanfang Chen, ychen@cis.udel.edu
103 Smith Hall
Office Hours:
Wednesdays, 1-2PM and Friday, 1-2PM
The project will be written in Java. The project is typically done in teams of 3 (unless otherwise noted), but you are welcome to tackle it individually if desired. If you are not yet verse in this language, it is suggested that you read through an appropriate Java book and familiarize yourself with the language by writing some small programs. The last project will involve learning some of the MIPS assembly language. The testing of the last phase must be done on the SPIM simulator. You will use JLex and CUP.
Each quiz will take about 5 minutes at the beginning of class. It will contain 1-2 short questions based on recent class discussions and readings. There will be a quiz on some Tuesdays, unless announced otherwise. The quizes will focus on the previous week's classroom and reading topics. Each student's lowest two quiz grades will not be counted toward their final grade. Thus, there WILL BE NO MAKEUP quizzes. Any missed quizzes will be counted as zeros in the grading scheme above. Thus, if you miss more than two quizzes, all additional missed quizzes and all other quiz grades will be counted toward your final grade.
The due dates are to be taken seriously and you should not expect them to be extended. The pace of work is implicit in the due dates and necessary if you expect to finish by the end of the semester. Homeworks to be graded should be turned in at the start of class on the specified due date. Programming assignments should be dated before 11:59 PM on the due date. NO late programs or homeworks will be accepted FOR FULL CREDIT without discussion with me prior to the due date. If you can not reach me, leave a message on my voicemail. All other assignments not delivered by the due date are considered late.
My philosophy on late assignments is: (1) Everyone should try their best to complete all assignments by the specified due date. (2) People who work conscientiously to make the deadlines should be rewarded for their promptness and sacrifice of sleep. Thus, allowing others to hand in late assignments without some penalty is not fair to these people. However, there are various circumstances that may prevent you from completing an assignment by the due date. Allowing no late assignments would not give you much incentive to continue to work on the assignment, which is a major source of learning in this course. Thus, I believe late assignments are better than no assignment.
Late assignments will be penalized 5% off the total possible points if turned in within the first 24-hour period after the specified due date and time, and 5% per 24-hour period (or fraction of a day) (including weekends) after that time, up to a week after the due date. Late assignments will be accepted with penalty up to one week after the due date. Assignments submitted at any later time without an approved excuse will not be accepted. It is up to you to determine the version of your assignment to be graded. You must weigh the late penalty against the completeness of your assignment.
If you are dissatisfied with a grade on a homework, programming assignment, or exam, you should consult the instructor directly within a week of the day the graded assignment was returned to you. No regrade requests will be considered after this week period.
With your permission, grades will be posted electronically via a link on the course web site. You will need to give me a secret code name for this posting in order to keep your grade posting anonymous. If no name is given, I will assume you do not want your grades to appear. Questions about accuracy of recorded grades should be addressed to me.
You will be told specifically which assignments are to be done collaboratively in groups, and which ones should be done individually without collaboration. For individual assignments, you should be directing your questions to the instructor, not to other students, unless the question is a clarification question. Any evidence of collaboration other than this kind will be handled as stated in the Official Student Handbook of the University of Delaware. You should not be using or examining any program code used for projects for this course in any prior instantiations of this course. If you are in doubt regarding the requirements, please consult with me before you complete any requirement of this course.
This course requires a significant amount of programming. You are allowed to choose a programming partner for some or all of the programming assignments. This document should make it very clear what is and what isn't considered acceptable collaboration, so there is no ambiguity.
The general premise of this policy is that your submissions must be your own
independent and original work. You should not give or receive any aid which
makes the assigned tasks significantly easier. Discussion and
help is allowed among students, but it is expected that
you document any significant help that you
receive. On my part, I will treat you with trust and will protect the honorable
student's interests by investigating and prosecuting dishonorable behavior.
"Your code is like your boyfriend or girlfriend. It's okay to talk about it on an abstract, high level. But you don't want to go into the specific details, and you certainly don't want to share."For the purposes of the collaboration policy, students choosing to work with a partner are effectively considered as one entity, and are freely allowed to exchange, help, design, and code with one other, but the guidelines below apply outside the partnership (neither of you should be debugging, sharing code, etc. with other people or teams). There are also some specific rules that apply within the partnership.
- Pascal Van Hentenryck, Professor of CS, Brown University, 1997
Two students engaging in a more detailed discussion of the project specifics can cross into the area of collaboration that is acceptable only if documented. I require that you include the name of those whom you received specific assistance from and properly credit their contribution, as you would cite a reference in a research paper. Some examples: