Answer from cs61c-am (Michael Moeng 16464697) for Question 1 The C preprocessor loads the libraries that are specified by #include statements, and also replaces code that has been #define'd. This is almost exactly what the linker does, so the C preprocessor is included in COD's linker step. Its purpose is to speed up the program since linking/patching the program is faster than recompiling it. It receives and outputs machine code. As a separate step, the linker would not really be a linker, but the preprocessor step would come before the files were linked because it needs to be run so that the program knows which libraries to include.