CPSC 333: Organization of Programming Languages (Spring 2007)Lecture 3:00 - 3:55 (period 7) Mon/Wed/Fri, Room Lansing 301Web: http://math.hws.edu/mcorliss/spring07/cs333/index.html Newsgroup: http://math.hws.edu/mcorliss/spring07/cs333/phpBB2/ Class schedule: http://math.hws.edu/mcorliss/spring07/cs333/schedule.html |
|
Announcements
StaffInstructor: Marc Corliss (corliss at hws dot edu)Office hours: Mon/Wed 12:15-1:15, Thu 10-12, Fri 1:30-2:30. Course SummaryThis course explores the implementation of modern programming languages by looking at compiler design and construction. This course covers major topics in compilation including scanning, parsing, semantic analyis, and code generation. This course also covers some advanced topics including optimization, garbage collection, and compiling object-oriented languages.In addition to studying the design of compilers, students will build a working compiler for Cool (Classroom Object-Oriented Language), a simple, object-oriented, programming language written by Alex Aiken (while at Berkeley). This project is a substantial part of this course (both in terms of time and grade). It will give students practical experience in constructing a compiler and provide students with invaluable software engineering experience. Although the focus of this course is on programming language implementation it will also briefly explore the design of programming languages. The course will focus on the Cool programming language, however, it will also discuss issues that have arisen in the implementation and design of many modern and historical programming languages including Java, C++, C, Pascal, Basic, Lisp, APL, Algol, PL/1, and Fortran. The prerequites for this course are CPSC 225 (intermediate programming) and CPSC 229 (foundations of computation). Students must have taken these two courses and received a grade of at least a C-. If that is not the case, the student should meet with the instructor before enrolling for the course. Textbook"Engineering a Compiler" by Cooper and Torczon (errata).ScheduleThe tentative class schedule is online. The schedule is split into several topics that usually make up one chapter of the textbook. The readings for each day should be done before that class. Projects and homeworks are due at the start of each class they are due. Exams (both the review and the actual test) and vacation days are indicated on the schedule.NewsgroupThis course has a newsgroup for discussions on the projects, homeworks, exams, or lectures. The newsgroup will be the most helpful for the projects. Students should post all general questions to the newsgroup rather than emailing the instructor as the entire class can benefit from the answer. In general, the instructor will answer most posts, however, students may also answer posts in some cases. However, no code should be posted to the newsgroup without permission of the instructor. In addition, students should use caution when answering questions. The purpose of the newsgroup is to eliminate ambiguity and provide general help not to provide solutions. In some cases, where many students are having trouble with a specific problem, the instructor may provide a partial solution. However, students are prohibited from posting solutions (the instructor will closely monitor the newsgroup).Students in the first week of the course must log in to the newsgroup using the username and password handed out on the first day. Using the newsgroup will be briefly shown on the first day of class. Each student must post some information about the themself to the Test forum. They should reply to the "about myself" topic posted by the instructor. This exercise will make sure that each student knows how to use the newsgroup as it will be an invaluable tool when working on the projects. Course WorkProjects. This course will be project based. There will be five substantial projects. The first project will be written in the programming language Cool (manual, official website), a slimmed-down, Java-like language, for which students will eventually build a compiler. This first project will give students exposure to the Cool programming language and give them experience with some aspects of compilation. The remaining four projects will implement various components of a Cool compiler: a scanner, a parser, a semantic analyzer, and a code generator. These will be written in the Java programming language. Documentation is provided for the internal classes for each project: project 2, project 3, project 4, and project 5.The projects will require a significant amount of time, so students should start early. In addition, students will have to meet with the instructor once a week to discuss their progress (see progress reports below). As for late projects, there are three "grace" days to use to hand in late projects with no additional loss in points. These "grace" days are per semester not per project, so if a student uses all three for one project, they will have no more "grace" days for any subsequent projects. Weekends count as "grace days", so for example, if a project is due on Friday and is handed in on the following Monday, then all three "grace" days are used up. Once a student runs out of "grace" days, they will lose 10% of the grade of the project per day. Progress Reports. Once a week, each student will need to meet with the instructor for up to a 1/2 hour. This meeting will give the student a chance to ask questions about the class in general, although the focus will be on the projects. In addition, each student will be evaluated based on how much progress they have made on the project over the last week. The student will be given a grade of 1 to 5 (or 0 if the student misses the meeting) with 5 indicating the student has made significant progress since the last meeting and 1 indicating the student has made very little progress. At the beginning of the semester each student is expected to set up a weekly time to meet with the instructor. There will be no meetings during spring break. Homeworks. In addition to the project their will be some short homeworks that will help make sure that students keep up with textbook reading. Exams. There will be one midterm exam and a final exam. The midterm exam will be in-class, written (no programming on the computer), and closed book/notes. It is tentatively scheduled for 3/21/07. The final will be cumulative, but will emphasize aspects of the material covered in the second half of the course. The final exam will be held on Tuesday, May 8th from 8:30am to 11:30am in Lansing 301. Making up exams will only be allowed for *compelling* circumstances, i.e., with documentation from an appropriate person (doctor, dean). Arrangements must be made in advance for non-emergencies. Attendance/Participation. Due to the small size of this class, attendance is essential. To get full credit for participation, students can miss, at most, two lectures, unexcused (try to let the instructor know in advance). If a student needs to miss more than two lectures, then they must have a *compelling* reason and they must notify the instructor ahead of time. Otherwise, the student will lose 10% of their attendance/particpation grade per day missed. GradingProjects: 40% (8% each)Progress reports: 10% Written assignments: 10% (approximately 2% each) Midterm exam: 15% Final exam: 15% Participation, attendance, etc.: 10% Academic IntegrityThe Principle of Academic Integrity (see the HWS Catalogue, p. 33) governs the work completed in this course. The following outlines specifically how this principle applies.Exams. All exams are to be completed solely by the student whose name is on the paper. Unless otherwise specified, these are closed book/notes, which includes any materials not provided as part of the exam. Homework. Homework assignments are to be completed solely by the student whose name is on the paper. Projects. The projects are also to be completed solely by the student submitting the project for credit. Excluding any interactions via the newsgroup (which are monitored by the instructor), students may not work with other students, including discussing ideas, offering debugging help, or looking at their programs. Students may consult the book, their notes, any course materials provided in class or on the course website, and reference books found in the lab. Use of other materials (including websites) is not allowed. It is never acceptable to be in possession of another student's program, either hardcopy or electronic. Each program submitted for credit will be checked by a plaigarism detector called MOSS (http://theory.stanford.edu/~aiken/moss/) to determine if it was copied. MOSS is highly accurate at detecting plagiarized software (changing a few variable names, comments, etc., will not help). In addition, any student that submits a suspicious project will have to explain their code to the instructor. If they are unable to effectively explain the code, then they will not receive credit for the assignment (and the case may be taken to the committee on standards). Summary. The moral of the story is students should not cheat in this course. For each case of cheating, the student will receive a 0 on the assignment, and the case will be pursued with the HWS committee on standards. It is better to submit an incomplete solution rather than submit a plagiarized solution. Center for Teaching and LearningHobart and William Smith Colleges encourage students to seek the available academic collaboration to demonstrate their best work. Students who would like to enhance their study skills, writing skills, or have any academic inquiries can contact the CTL. A Student with an identified disability who would like to receive accommodations, should provide the instructor with the necessary documentation from the CTL at the start of the semester (students with disabilities have to register at the Center), so that the instructor can best accommodate the student's needs. CTL staff encourages each student to stop by Harris Hall to learn what is available to HWS students at this academic resource. Students should contact the CTL at 781-3351 to make an appointment or stop by Harris Hall (on South Main, next to Merritt Hall) to meet with Center Staff.Resources
|