Concepts

The concept library captures every concept learned, implemented in every
applicable language, with tests proving equivalence.

Structure

Each concept is a directory under its domain:

concepts/
  math/
    calculus/
      notes.tex         # Standalone LaTeX document
      notes_body.tex    # Body only (for \input into collections)
      calculus.rb       # Ruby reference implementation
      test.rb           # Cross-implementation equivalence tests
    linear_algebra/
      ...
  circuits/
    rc_lowpass/
      notes.tex
      rc_lowpass.cir    # ngspice netlist
      rc_lowpass.rb     # Ruby implementation
      test.rb
  control/
    pid/
      notes.tex
      pid.rb            # Ruby
      pid.c             # C
      pid.v             # Verilog
      pid.comp          # GLSL compute shader
      test.rb

Domains

Domain Directory Primary Tool
Pure math math/ Maxima (symbolic), Ruby (numerical)
Signals & systems signals/ Maxima, Ruby, GLSL
Control theory control/ Maxima, Ruby, Verilog
Circuit theory circuits/ ngspice, Maxima
Digital electronics digital/ Verilog, C
Electromagnetics electromagnetics/ Maxima, Elmer
Physics physics/ Maxima, Ruby, Elmer
Chemistry chemistry/ Maxima, Ruby, Elmer
Programming programming/ Ruby, C
Embedded systems embedded/ C, Verilog
Computer architecture computer_architecture/ Verilog, C
Numerical methods numerical_methods/ Ruby, C, GLSL
Communications communications/ Maxima, Ruby, GLSL

Sparse Matrix

Not every concept maps to every language. Implement where it makes sense.

See Concept Library in the long-term plan for details.