Distillery by Micah Rust

High Concept and Goals

  • Summarize simple to complex topics related to computer science
  • Provide google-able refernces/vocabulary for further learning

Audience

  • The Self-Learner: looking for ways to improve their skills but cannot encounter their unknown unknowns.
  • The Explorer: examining new and old ideas they may not have encountered yet.
  • The Innovator: building upon existing designs and ideas with an eye for improvement.
  • The Student: preparing for a challenging interview or test.
  • The Professor: composing class materials for new and evolving courses.

Summary

The main goal of the distillery is to enable the reader to rapidly read through many quick summaries of computer science topics. Each document has a topic. A document contains many sections on that topic which go into ever increasing complexity and detail. The distillery summary sections attempt to be language agnostic, but when needed they tend to lean towards C/C++ to explain some more complex sections.

Each section of a document has a tier level associated with it roughly correlating to its subjective "depth" into the field of computer science. If you know nothing about computer science, you should read the "tiers" sequentially across all documents because they reference material listed in previous tiers of other documents.

In this folder, you will see that there are sub-folders which are programming language names. In these folders are code files which show the specific details on a topic_section that the distillery summarizes. This will likely take a long time to write and may never be fully completed for all languages. These source files are samples which show a particular topic_section's material being used in the language.

How to read

The topics may be read from your browser or other markdown viewing application. If you are reading from a text editor, it is recommended that you enable word-wrap and use a monospace font. If you plan to read the samples, it is recommended that you download/clone the repository for your convenience.

It is recommended that if you are a:

  • Veteran Programmer (2+ years, systems-level programming): You likely know everything below tier 3. Skim topics which are tier 3 and above and read sample code as needed.
  • Intermediate programmer (college grad, self-taught): Skim topics starting at tier 1. Knowing the many names for certain terms/concepts will be helpful for later tiers even if you know the concepts by a different name. Read the sample code as needed.
  • New programmer: Read everything in each tier of every document before proceeding to the next tier. Read the sample code for every topic when available/applicable.

Topic Summary

  • Control.md : Programming methods/designs/systems related to static and dynamic control of your program.
  • Memory.md : Programming memory layout and features
  • Pointer.md : Programming access patterns/designs/systems for your memory.
  • Types.md : Programming types as a CPU instruction interface and program design.
  • Containers.md : Programming container concepts and a brief explanation of their function.

Tier Explanation

  • Tier 1.xx-2.xx : Foundational knowledge
  • Tier 3.xx-7.xx : Situationally useful and domain-specific knowledge

Sample Code:

  • C/C++: Use Visual Studio 2017 or text editor of your choice
  • CSharp: Use Visual Studio 2017 or text editor of your choice
  • Jai: Pending Release

Note: If you have never written code before in any language, the distillery is not a good resource for you. Find and do a beginner tutorial series in any language then come back once you have at least +5 hours of personal coding time.

Detail

Programming languages I'd like to see code samples for:

  • C/C++
  • Jai
  • C#

Operating Systems I'd like to see code samples for:

  • Windows (win32 API)
  • Posix

Contributions

Contributions are welcome and wanted. I do not have the will nor knowledge to write samples in every language, nor am I an expert in all things computer science. If you find something factually incorrect, feel the need for a new section, or want to write some source samples please feel free to email me at micahtim@gmail.com and we can see about adding you as a contributor.

Summary NOT

  • The distillery is NOT a tutorial series. But does have source samples on a per-language/per-Operating system basis when applicable.
  • The distillery is NOT an in-depth source of information. It is a compilation of summaries to expose computer science ideas and concepts rapidly to its audience.

Credits

Special Thanks

  • Elijah Rust