# Serial Code for Project due

At this point the code does not need to be optimized. If you have time, it would be best to include the results of benchmarking and/or profiling in the README, to help both you and the reviewer identify which sections are ammenable to optimization.

• Code performs proposed tasks (1 point)
• Comprehensive set of unit tests, at least one integration or regression test (1 point)
• Code passes tests (1 point)
• Student code uses a version control system effectively (1 point)
• Repository includes many regular, small commits (1 point)
• Documentation for functions’ purpose and design (1 point)
• Comprehensive set of assertions (1 point)
• Variable/function names consistent, distinctive & meaningful (1 point)
• Useful & consistent code formatting & style (1 point)
• Code is modular, rather than having chunks of same code copied and pasted (1 point)

## Preparing Your Own Code for Review

### Provide overview to help reviewer

Please provide your reviewers with a README or other instructions to help them figure out how to spend their time reviewing your code in a way that is most likely to be helpful to you.

### Make sure code is in plain text files (i.e., not only Jupyter notebooks)

Jupyter and Pluto notebooks are great to document how to use your code. As functions mature, it’s nature to move well tested functions into ‘.jl’ files. If your code is in the form of julia code (.jl files) or markdown (.jmd) or a Pluto notebook (also a .jl file), then reviewer can already comment on your code directly in GitHub. If you’ve been developing code inside a Jupyter notebook (.ipynb file), then remember to create (and commit and push) a .jl or .jmd version for your reviewers to comment on, just as you’ve been doing for homework assignments.

julia -e 'using Weave; convert_doc("NOTEBOOK_NAME.ipynb","NOTEBOOK_NAME.jmd")'


If you only have a few functions, then (for now) it’s reasonable to have just one file for your main code and one file for tests. If you already have a larger code base, then organize your functions into multiple files .jl and place them in a src directory. Similiarly, use test, and optionally examples and docs directories to make it clear where user/reviewers can find tests, examples and additional documentation.