Yep. Practically, I learned to program mostly by reading BASIC listings back around 1990-1992 and would have time on my parents' computer in the afternoon/evening to try and type things up. A lot of my code was hypothetical (never executed).
In college at GT circa 2000, this was how the first CS course was also taught (with a pseudocode language). I liked it, I learned the ins and outs of data structures and algorithms (though not a specific language), but most student hated it. I've periodically handwritten substantial (but not huge, think 1-5k lines) amounts of code to good effect. Usually, when typed in the errors were mostly transcription errors. Of course, I also elided large repetitive sections and developed a shorthand (like I'd use indentation rather than noting every curly brace, used min..max notation, etc.).
I originally learned Haskell with this approach (I came across the notebook I'd used while preparing for my move earlier this year) as well, but that language is particularly well-suited to being handwritten compared to many other languages (it's brief, but not imprecise, and promotes algebraic reasoning).
In college at GT circa 2000, this was how the first CS course was also taught (with a pseudocode language). I liked it, I learned the ins and outs of data structures and algorithms (though not a specific language), but most student hated it. I've periodically handwritten substantial (but not huge, think 1-5k lines) amounts of code to good effect. Usually, when typed in the errors were mostly transcription errors. Of course, I also elided large repetitive sections and developed a shorthand (like I'd use indentation rather than noting every curly brace, used min..max notation, etc.).
I originally learned Haskell with this approach (I came across the notebook I'd used while preparing for my move earlier this year) as well, but that language is particularly well-suited to being handwritten compared to many other languages (it's brief, but not imprecise, and promotes algebraic reasoning).