-@enumerate 1
-@item
-@b{What extra credit opportunities are available for this assignment?}
-
-@itemize @bullet
-@item
-We'll give out extra credit to groups that implement Unix-style
-support for @file{.} and @file{..} in relative paths in their projects.
-
-@item
-We'll give some extra credit if you submit with VM enabled. If you do
-this, make sure you show us that you can run multiple programs
-concurrently. A particularly good demonstration is running
-@file{capitalize} (with a reduced words file that fits comfortably on
-your disk, of course). So submit a file system disk that contains a
-VM-heavy program like @file{capitalize}, so we can try it out. And also
-include the results in your test case file.
-
-We feel that you will be much more satisfied with your cs140 ``final
-product'' if you can get your VM working with your file system. It's
-also a great stress test for your FS, but obviously you have to be
-pretty confident with your VM if you're going to submit this extra
-credit, since you'll still lose points for failing FS-related tests,
-even if the problem is in your VM code.
-
-@item
-A point of extra credit can be assigned if a user can recursively
-remove directories from the shell command prompt. Note that the
-typical semantic is to just fail if a directory is not empty.
-@end itemize
-
-Make sure that you discuss any extra credit in your @file{README}
-file. We're likely to miss it if it gets buried in your design
-document.
-
-@item
-@b{What exec modes for running Pintos do I absolutely need to
-support?}
-
-You also need to support the @option{-f}, @option{-ci}, @option{-co},
-and @option{-ex} flags individually, and you need to handle them when
-they're combined, like this: @samp{pintos -f -ci shell 12345 -ex
-"shell"}. Thus, you should be able to treat the above as equivalent to:
-
-@example
-pintos -f
-pintos -ci shell 12345
-pintos -ex "shell"
-@end example
-
-If you don't change the filesystem interface, none of this should
-require any special effort on your part. They are already implemented
-properly in @file{threads/init.c} and @file{filesys/fsutil.c}.
-
-You must also implement the @option{-q} option and make sure that data
-gets flushed out to disk properly when it is used.
-
-@item
-@b{Will you test our file system with a different @code{DISK_SECTOR_SIZE}?}
+@table @b
+@item How much code will I need to write?
+
+Here's a summary of our reference solution, produced by the
+@command{diffstat} program. The final row gives total lines inserted
+and deleted; a changed line counts as both an insertion and a deletion.
+
+This summary is relative to the Pintos base code, but the reference
+solution for project 4 is based on the reference solution to project 3.
+Thus, the reference solution runs with virtual memory enabled.
+@xref{Project 3 FAQ}, for the summary of project 3.
+
+The reference solution represents just one possible solution. Many
+other solutions are also possible and many of those differ greatly from
+the reference solution. Some excellent solutions may not modify all the
+files modified by the reference solution, and some may modify files not
+modified by the reference solution.
+
+@verbatim
+ Makefile.build | 5
+ devices/timer.c | 42 ++
+ filesys/Make.vars | 6
+ filesys/cache.c | 473 +++++++++++++++++++++++++
+ filesys/cache.h | 23 +
+ filesys/directory.c | 99 ++++-
+ filesys/directory.h | 3
+ filesys/file.c | 4
+ filesys/filesys.c | 194 +++++++++-
+ filesys/filesys.h | 5
+ filesys/free-map.c | 45 +-
+ filesys/free-map.h | 4
+ filesys/fsutil.c | 8
+ filesys/inode.c | 444 ++++++++++++++++++-----
+ filesys/inode.h | 11
+ threads/init.c | 5
+ threads/interrupt.c | 2
+ threads/thread.c | 32 +
+ threads/thread.h | 38 +-
+ userprog/exception.c | 12
+ userprog/pagedir.c | 10
+ userprog/process.c | 332 +++++++++++++----
+ userprog/syscall.c | 582 ++++++++++++++++++++++++++++++-
+ userprog/syscall.h | 1
+ vm/frame.c | 161 ++++++++
+ vm/frame.h | 23 +
+ vm/page.c | 297 +++++++++++++++
+ vm/page.h | 50 ++
+ vm/swap.c | 85 ++++
+ vm/swap.h | 11
+ 30 files changed, 2721 insertions(+), 286 deletions(-)
+@end verbatim
+
+@item What extra credit opportunities are available?
+
+You may implement Unix-style support for @file{.} and @file{..} in
+relative paths in their projects.
+
+You may submit with VM enabled.
+
+@item Can @code{DISK_SECTOR_SIZE} change?