| ||||||||||||||
| |
Objectives
|
Objectives
Course Outline
ProfessorDr. Christine ShannonOlin 115 Phone: 5406 (Office) 238-7422 (Home) e-mail: shannon@centre.edu You might also be interested in visiting my home page at http://web.centre.edu/shannon/. Office hours: I am generally on campus every day between 8 a.m. and 4 p.m. and often later than that.. If I am not in class, I am usually in my office or one of the computer labs. I will try to observe the following office hours and will notify you if I won't be available. I teach in D and G block and have two labs on Tuesday.
Please feel free to come by at other times and you are always welcome to make an appointment. Textbook
AttendanceI expect students to be present for all classes. Please let me know in advance if you must be absent for a scheduled college activity. Illness might prevent you from being present for a couple of classes during the term but anything beyond that will probably have a detrimental effect on your grade. Those of you who must be absent for college sponsored activities should be particularly careful not to miss any other classes. It is very important that you be present for all examinations. In general, more than three absences will result in a significant drop in your grade for the course, regardless of the points you have accumulated. Documentation will be required before you are allowed to make up a test and in some cases the make up will be the appropriate part of the final exam. Only the Associate Dean can make exceptions to the final exam schedule. If you have a good reason to be absent from class, you are still responsible for the homework assignments. Except in the case of serious illness, all assignments are to be turned in on time. There is a penalty on all late assignments. Compiler Project and Other AssignmentsThe major assignment of the course will be the compiler project. You will write a compiler for a subset of C, called C--. This compiler will translate a source document written in C-- into a MIPS program which you will be able to execute using MARS. This is the assembly language you studied in Computer Organization. This course is so "cool" because it uses ideas you learned in your data structures course, the computer organization course, theory of computing, and programming languages to write a big program that does something really neat. All of these courses are not prerequisites and so if you take them later, you will actually be seeing the application before the theory but that can be good too. The project will be written in four large pieces. All deadlines must be met. You should hand in, ON TIME, the closest running version that you have. Attached to the source code should be a report which clearly identifies all of the achievements as well as any shortcomings of your code. Include information on error messages, etc. if you are having problems. Evidence of thorough testing will be very important and should be documented. Documentation and testing will be a significant portion of the grade for each phase of the project. Because of the nature of this course, you will not be able to give up on a project -- although in extreme cases, I may supply my code as a replacement so that you can move on to the next step. Give yourself plenty of time to test and find all bugs. It is in your best interests to find all errors as early in the process as possible. You will be given more directions as each part is assigned. Except for the code generation which may require consultation with friends to refresh your knowledge of the assembler, you must work independently. The compilers should each be quite distinct. You should write code which is well documented, cleanly divided, and easily changed. It is impossible, given the time constraints, to write the compiler in such a way that no changes are necessary. There will also be a number of written exercises from the text which will be graded. Again, all work must be submitted on time. Some exercises will be assigned only for class discussion and you should be prepared to put your solution on the board. Exercises will cover the theory while the project will cover the practice!
EvaluationYour grade for the course will be determined by the following:
Your final grade will be determined both by the total number of points you accumulate out of the 550 possible points and the status of your compiler. Borderline cases will be determined by improvement on the final and participation in class. Students who are ill-prepared, miss class, or otherwise fail to live as responsible citizens will not get the benefit of any doubt, and in the case of excessive absences, will actually receive a lower grade than they might otherwise. Your contribution to the scholarly environment is very important. I will use a 15 point grading scale so that you are guaranteed an A or A- if you score 85 or above and have a compiler that implements all assigned features, a B-, B or B+ for 70-84 and a compiler that does type checking and correctly translates a program with arithmetic statements, C-,C or C+ for 55-69 and a compiler that correctly translates a program with arithmetic statements, a D for 45-54 and both a lexical analyzer and a yacc specification file which prints the productions being applied as the source program is read, and anything less is failing. ExamsThere will be two exams on Monday, March 3 and Wednesday, April 9 . Each is worth 125 points and will have a take home part in addition to the in class portion. There will also be a cumulative final during the final exam period on Sunday, May 11 from 1:30-4:30 pm .
General Rules for Giving/Getting HelpIf you are seeking help: Another person may read your code if you are trying to find a bug. You must acknowledge their help and indicate that they read your code as part of the documentation. You may not read another person's code but it is permissible to talk about the solution of the problem (not the actual code). Anyone with whom you discuss the problem, must be listed in your documentation.If you are giving help: you may read another person's code if you are looking for an error. It is their responsibility to list you as a resource. You may not allow another student to read your code "to get the idea". It is permissible to talk about your solution but be judicious about the hints you give. Again, the other student is responsible for listing your help in the documentation.
|
||||||||||||