Week 7

Week 7 – CFA and Projects

Readings & Due Dates

Read:

TODOs:

Lecture Materials

Lecture 13 (Tue 05/10) Handout

Lecture 13 (Tue 05/10) Notes

Lecture 14 (Thu 05/12) Handout

Lecture 14 (Thu 05/12) Notes

Project Milestone Code

You will submit a new pull request with all of your code for the milestone you proposed last Friday. (If you’re working on ChocoPy, just submit your code to the Week 2 Milestone submission on Gradescope and don’t submit a pull request).

You might not be able to implement everything you set out to do! That’s fine! It’s very difficult to gauge what “a week of work” on a compiler is.

You should have:

  • Some progress that is automatically testable
  • An updated design.md that describes where you were able to get to and reflects all of your new design decisions you learned about this week as you tried to implement. Indicate especially what we should run/test to see what you produced that’s most interesting.
  • Code that builds and runs when checked out, has passing tests with npm test (including at least some new tests)
  • A working REPL and main IDE
  • No conflicts with the main 2022 branch (the main default branch)

A few guidelines for avoiding bad merge conflicts:

  • Put your tests in their own file
  • Don’t do large reformats of entire files (check your PR for large whitespace differences where you may have re-indented, etc)
  • Don’t rename variables or refactor code unless your code cannot work without those changes
  • Prefer adding new AST/IR forms to changing existing ones (or, if you add fields, add them as optional ? fields like a is optional), and leaving old behavior intact

Your milestone tests from Friday are your goal – go for it, ask lots of questions, and in the following week we’ll all be working on merging, doing some interface updates where we weren’t able to avoid conflicts for good reason, and planning out the next set of tests to pass. To give a sense:

  • Week 7 is implementation of first milestones
  • Week 8 is merging, cleanup of first milestone, and planning the rest
  • Week 9 is implementation of second milestones
  • Week 10 is cleanup and final merging

So expect a Friday deadline for each of the next few weeks along these lines. Emphasize pacing yourself, testing to know where you’re at, always having working code, and making incremental progress.