Compilers (CSC-362 98F)


Evaluation for Development

Due: Noon, Thursday, Dec. 17.

I will not accept your final exam unless you have turned in both the written and electronic evaluation forms!

As you may know, there are two primary reasons we do end-of-class evaluations: (1) for evaluation of the instructor and course and (2) for development of the instructor and course. The first kind of evaluation is typically used in determinations of tenure, promotion, and raises. The second kind of evaluation is used to make the course and instructor better. It appears that Grinnell has decided that the standard end-of-course forms are used for the first kind of evaluation and that instructors are to prepare their own forms for the second kind. I also have many course-specific questions that are not covered on the standard form.


I ask for your name primarily because many comments make more sense in the context of the particular person giving them. For example, those of you who I know do the prereading are likely to respond differently to the questions on readings. Hence, I ask you to give your name, but you are not required to give one. Note that neither positive nor negative comments will affect our future relations.

Name (optional)

Prerequisites

At many other institutions, compilers is an upper-level course with many prerequistes and co-requisites, including

Because of the structure of our course offerings, we have fewer prerequisites. We also were particularly lenient this semester, because of the rearrangement of the schedule. What requirements/recommendations should we make for CSC362? If you have no opinion on some courses, leave those blank.

Architecture: CSC211

Require
Recommend
Optional

Software Design: CSC223

Require
Recommend
Optional

Algorithms: CSC301

Require
Recommend
Optional

Languages: CSC302

Require
Recommend
Optional

Automata: CSC341

Require
Recommend
Optional

The Project

How useful would you say the project was in helping you learn the course material?

1: Not at all
2: Somewhat
3: Extremely

Because of time constraints, you were not required to generate actual assembly code. Among other things, this meant that you did not need to worry about writing code for frames, instruction selection, lifetime analysis, or register allocation. You also did not have to worry about the specifics of a particular architecture. How valuable do you feel that having to code these components would have been?

Frames?

1: Not at all
2: Somewhat
3: Extremely

Instruction selection?

1: Not at all
2: Somewhat
3: Extremely

Lifetime analysis?

1: Not at all
2: Somewhat
3: Extremely

Register allocation?

1: Not at all
2: Somewhat
3: Extremely

Details of a particular architecture?

1: Not at all
2: Somewhat
3: Extremely

Suppose we decided that you had to do the full Tiger compiler. How could I help you get through it?

I decided to allow you to choose which language you wrote the compiler in. This meant that some of you used Java and some of you used C. It also meant that many of my discussions had to be somewhat generic and that at times I had to focus on a particular group. Should I have required a particular language?

Require C
Require Java
Require something else
Allow any

Knowing what I do about Appel, I find it likely that he first wrote the text with ML in mind as the implementation language (that is, using ML instead of Java or C) and then ``translated'' to the other versions. I expect that none of you know ML. ML is an impure functional language, with some similarties to Tiger. If we stick with Appel and Tiger, should we consider using ML as the implementation language?

Permit or use ML
Avoid ML
I'm not sure

We wrote a compiler according to some fairly tight specifications that Appel gave us. The advantage is that he had worked out many of the design details and was able to provide some utility files. The disadvantage is that you had to figure out how to fit into his expectations (and what those expectations were). Should we continue to use this fairly fixed design for the compiler?

Use a fixed design
Use a more open design

There will be some more lead time on the next course (or so I hope). It might be possible to follow Mr. Yin's suggestions and develop a design for a compiler for a subset of Java. This means that we'd rely much less on the book, and more on my own notes. Among other things, the Java compiler would neither permit nor require you to do all the work for scoping rules. Would you prefer this project?

Sure, make the next group compiler Java
No, make the next group do Tiger
I have no preference

Any other thoughts on the compiler?

Written Assignments

After the first few weeks of the term, I stopped requiring written assignments. This was primarily because many of you already seemed overburdend by the coding requirements for the class. However, I expect that you learned less about general issues than you would have if you'd had more written assignments.

Did you find the lack of written assignments appropriate?

Yes, I feel that I still learned a great deal
No, I would have learned much more by doing written assignments

Any other thoughts on written assignments in this course?

Readings

I think it's safe to say that few of you did the readings on a topic before we discussed the topic (Jamal and Rachel being the primary exceptions). As I said at the beginning of the term, we would cover more material in better depth if you did the readings in advance of class.

How could I have gotten you to do more pre-reading? Some ideas I've toyed with include more quizes (which count toward your grade, rather than to extra credit), moving faster and assuming you've done the reading anyway, and requiring students to lead class.

Any other thoughts on the readings?

Oral Work

The department has decided that CSC362 and CSC223 are courses in which you are expected to exercise and work on your presentation skills. As such, I have required you to participate in debates and to develop topical presentations.

What did you think about the debate exercise?

What did you think about the presentation exercise?

The Course Web

I'm interested in when and how students use the course outlines.

Did you use or look at the outlines before class?

1: Rarely
2: Sometimes
3: Almost always

Did you use or look at the outlines during class?

1: Rarely
2: Sometimes
3: Almost always

Did you use or look at the outlines after class, for example, to check or extend your understanding of the material?

1: Rarely
2: Sometimes
3: Almost always

Did you use the outlines when working on the project?

1: Rarely
2: Sometimes
3: Almost always

Did you use the outlines as a substitute when you missed class?

1: Rarely
2: Sometimes
3: Almost always

Did you use the outlines as an excuse to miss class?

1: Rarely
2: Sometimes
3: Almost always

Is there anything else you'd like me to know about the outlines? This might include comments, crititicisms, suggestions, other ways you used them, whatever.

Did you use the search facility?

1: Rarely
2: Sometimes
3: Regularly

What should I know about your use of the search facility (other than that it didn't work for the first few weeks of the course)?

If it were possible for me to include everything I wrote on the whiteboard (in readable form, rather than ``Sam Scrawl''), would you expect to find that useful or not?

1: Not very useful
2: Sometimes useful
3: Very useful

If you were able to add short notes to yourself, to me, or to fellow students to the course web (e.g., on outlines or assignments), do you think you would choose to do so?

Yes
No

Any other thoughts on the course web?

Miscellaneous

Is there anything else you'd like to tell me about the course, my teaching, or anything else?


Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.

Source text last modified Mon Dec 7 10:22:42 1998.

This page generated on Mon Dec 7 10:24:45 1998 by SiteWeaver.

Contact our webmaster at rebelsky@math.grin.edu