Monday, March 1, 2010

Weeks 9 and 10

I think I forgot to line up a reading for this week. Would anyone object strongly if we take a week off?

That leaves just Week 10 to go. Here's what I propose: Instead of reading a paper, the assignment for everyone is to cook up a new program analysis. You don't have to implement it, of course, but I'd like you to give it some thought with respect both to usefulness and practical application. Try to devise something that ...

  • You would actually use. Is there something you find tedious or error-prone when programming, that could be addressed with a program analysis?
  • Is not currently available, or is not available in contexts where you want it (e.g., the compiler might do it, but when you really need it is in your IDE or editor).
  • Can be practically implemented. While I will not ask you to prove this by actually implementing it, I would like you to think it through far enough to sketch how an implementation would work, and be able to argue that it would be reasonably efficient for its intended purpose. (“Reasonably efficient” can have different meanings depending on context. An analysis that would be perfectly reasonable in an external analysis tool that runs each time you compile your code might be far too expensive to run within the text editor as you type.)

Also consider whether the analysis can or should be static, dynamic, or some combination of the two, what it's scope is (procedure or object? whole program?), and what (if any) extra information it requires of the user.

OK?

No comments:

Post a Comment