Problem Set 4 Frequently Asked Questions

Q: When is problem set 4 due?

A: Friday, October 31, 6:59 pm


Q: What types and operators should my code handle?

A: You can follow the pattern of optimize0. Do not worry about the following types and operators:

 

Char_t

Undef_t

Ref_t

String_t

 

Cons

Append

Concat

Assign


Q: What expressions should my code handle?

A: As above, you can follow optimize0.


Q: What style should my code be written in?

A: We recommend that your code resemble optimize0 as closely as possible.


Q: Do I have to support Real_t for algebraic simplification?

A: No.


Q: Does optimize1 need to handle AndAlso or OrElse?

A: These operators short circuit, so they are not commutative, so optimize1 should not change them.


Q: Should alpha-renaming eliminate shadowing?

A: Yes.


Q: In optimize5, what variables should I propagate?

A: Only those bound to a constant.


Q: Can my optimization code depend on other optimizations?

A: We prefer that you do not introduce dependencies between optimizations (because this makes grading easier and avoids cascading of errors). But if you choose to do so and are confident that your optimizations work correctly then you can do so (we won't penalize you for this). However, in such a case if your optimizations contain errors and they propagate, you are likely to lose credit for all dependent optimizations as well.