First of all, in my opinion your criteria 4 cannot be achieved easily because there are a lot of cycles in the documentation and you find a lot of references and back-references in help-pages.
Otherwise, I agree that it is very helpful to have a linear way to go through all of the material of Mathematica. When you study the literature about how to read books and speed-reading, you often find that starting to really read the book is not the best option. A better way is to carefully study the index and afterwards skim through the material to get an overview because this helps the brain to classify the information.
What I like is to just read through the list of all Mathematica functions and if I encounter something that I didn't know yet (and which sounds interesting), to read through its documentation. If you want to do this, then there is an easy way to create an alphabetical list of all system functions and their link to the documentation directly within Mathematica:
docPath = FileNameJoin[{$InstallationDirectory, "Documentation", "English", "System"}];
Column[
OpenerView [{Style[#1, "Item"], Column[Function[sym,
Button[sym, Documentation`HelpLookup[sym],
Appearance -> "Frameless"]] /@ #2]}] & @@@ ({#,
Names["System`" <> # <> "*"]} & /@
Prepend[CharacterRange["A", "Z"], "$"])
]
This gives you read through all function names and have their documentation by just clicking on them
Additionally, and this might be of equal importance, there is a way to display all guide pages, tutorials and how-to's in the same manner:
{guides, tutorials, howtos} = Map[FileBaseName,
FileNames["*.nb", {FileNameJoin[{docPath, #}]}]] & /@ {"Guides", "Tutorials", "HowTos"};
Column[OpenerView [{Style[#3, "Item"],
Column[Function[page,
Button[page, Documentation`HelpLookup[#1 <> page],
Appearance -> "Frameless"]] /@ #2]}] & @@@ {{"guide/",
guides, "All Guides"}, {"tutorial/", tutorials,
"All Tutorials"}, {"howto/", howtos, "All Howto's"}}
]
This is a lot to read and I recommend that you really skim through the lists first and not just start reading. For instance, I see about 50 tutorial about DSolve
alone... To answer your questions with regard to my code:
- Going through the lists should not be convoluted at all.
- The reference pages are not complete, because I have only included everything from the system context which starts with a letter or with
$
. Therefore, you will skip for instance \[FormalS]
. The tutorials, the guides and how-to's are extracted from the installation and should be complete (although it does not include add on packages).
- If you read from start to end, you should not see any page twice
- You will see functions in the documentation pages that you haven't see yet.
I hope you find this helpful.