I was involved in a interesting thread on the msdn forums (http://forums.microsoft.com/msdn). It is about value types in .NET and how it relates to the ValueType class and its base class Object.
I started with BASIC programming and had no idea what a pointer was to later learn assembly language where I knew if a memory location hold a value (value type) or a address to another memory location where the value was (reference type).
It has really helped me alot to have this computer assembly language knowledge in the base to understand higher level languages and how expensive ceratain operations are. Imagine allocating and discarding memory inside a loop compared to resusing a buffer.