Recommended Reading: ``Programming from the Ground Up'' by Jonathan Bartlett

The book being  recommended is ``Programming from the  Ground Up'' by Jonathan Bartlett.   It may be
found here:
https://savannah.nongnu.org/projects/pgubook

This book is a good choice for anyone  interested in beginning to learn the lower-levels of computer
programming and  development.  Unlike  a great deal  of material  that is top-down  in terms  of the
abstractions, this  book is titularly in  the opposite direction;  a novice will learn  the building
blocks of abstractions  before they use them.   Topics covered include: basic  computer hardware and
terminology,  including  processors,  storage,  and addressing;  assemblers;  algorithmic  thinking;
calling conventions; recursion;  error handling; memory management; optimization;  system calls; and
debugging with GDB.

It  should be  made clear  this book  is introductory  and will  best suit  programmers with  little
experience at this level  or people new to programming entirely.  This book  teaches using GNU tools
and the  machine code  taught is the  x86 machine  language, but  this is not  a detail  that should
concern someone  who doesn't already have  a reason to disagree  with these choices; one  should not
worry about wasting  time with topics one  won't make use of,  as much of the  material is generally
applicable to programming at this level.

A programmer already experienced with the low-levels will find this book a very easy read and so may
want to simply avoid it, but a glance through doesn't hurt.

I recommend to download the source for this work as  well so that you will have easier access to the
example programs.   An avid  reader could expect  to finish this  book within  just a month  or two.