Here are some remarks from Hans Schoenemann:
Singular consist of several parts:
- a memory management for small memory blocks (omalloc)
 documented with: 
http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/doc/OMALLOC.ps.gz (gzipped postscript) resp.
http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/doc/OMALLOC.texi.gz (gzipped texinfo)
- factorization of multivariate polynomials (factory and libfac)
 (a quite old but still useful) documentation: 
http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/doc/factory.ps.gz (gzipped postscript) 
http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/Factory/factory-doc.tar.gz (tex sources)
- polynomial arithmetic, Groebner/Standard bases and free resolutions
 (kernel)
 - general overview over prozedures etc.       
http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/singular-anatomy.tgz   (tex source)
 - Data structures for polynomials:
     O. Bachmann and H. Schönemann: Monomial Representations for Groebner
     Basis Computations. In: ISSAC 1998. (1998).    
http://www.mathematik.uni-kl.de/~zca/Reports_on_ca/18/paper_full.ps.gz     (gzipped postscript)
 - Extension to non-commutive polynomials:
   V. Levandovskyy and H. Schönemann: Plural - a Computer Algebra
   System for Noncommutative Polynomial Algebras. In: ISSAC 2003.
- C++-interface to the interpreter: 
http://www.singular.uni-kl.de/DynMod.ps