Contributing

This is a collaboratively written book, and it should be so. If you wish to help, ask for permission to edit the book. If you want to submit feedback (thoughts, criticisms, typo reports, etc.) go to this Google form. Ask anybody and it will get to somebody who can give you access rights. There are formatting rules so watch out. We appreciate all the help we can get in writing this book.

Formatting

There are three sections of training. Each training sections contains articles which describe some concept. These are texts. Then articles that say PROBLEM at the beginning are problems. These also have a sub article containing a written solution (you may also a similar problems sub article if you wish, just link to other gitbook pages). These go in order of difficulty and many rely on previous concepts.

Beginning training is up to late AP Computer Science A. This means some of the last topics are basic recursion, arrays, and arraylists.

Intermediate training includes data structures, basic algorithms such as sorting and maze solving, big O notation, and higher math concepts.

Advanced training includes concepts beyond that. This includes DFS, BFS, Dynamic Programming, Minimum Spanning Trees, Recursive Complete Search, Shortest Paths, Graph Theory, Trees such as Segment and Fenwick Trees, Union Find Disjoint Sets, Computational Geometry, Advanced Number Theory and Discrete Mathematics, and any other difficult topics. Even though not all of these will be present because it's a ton of topics hopefully the advanced section will be a place to start for many of theses. Really basically anything that's not in the previous sections descriptions, feel free to add in advanced (assuming it's an advanced topic though and you feel it belongs there). Also it's important to remember that the first two sections are more important as they teach the foundation. The advanced stuff listed above can just be found online if needed. Always remember that this book will most likely never cover everything and is only a start. Hopefully we'll cover as much as possible though as this book continues to grow.

Page Formatting

Each page will contain a Heading 1 equal to the article title. This includes problems although the word problem is removed. All sub-headings are in Heading 3. Don't make paragraphs excessively long. You're speaking to the reader through the text. Remember, don't scare them off with long sentences and excess fluff.

Problems will contain 5 sub-headings of 'Description', 'Input', 'Output', 'Sample Input', and 'Sample Output'.

You can also add problem classes and data files at the top of the file right below the title. Feel free to link to external files for sample input as long as you also write it in the problem. If the problem is on UVa just put the title and then a link to the problem right below.

Make sure you write solutions to as many problems as possible. You may leave some blank, but create the file so it can be filled in at some point. Also solutions are not just code. Explain your thought process and insert comments. If it's a hard problem feel free to only include the main computational method instead of the entire class. For all beginner problems remember to include the entire file and not confuse them with methods not inside a class.

Thanks for all the help you add to this book and good luck! Remember to use the book as your guide to formatting as examples are best.

results matching ""

    No results matching ""