Programming from the Ground Up is an introduction to programming using assembly language on the Linux platform for x86 machines. It is a great book for novices who are just learning to program as well as for intermediates who have never learned or mastered assembly language programming. It covers many topics skipped by other similar books, including memory management, debugging, interfacing with C, dynamic libraries, and even a bit on GUI programming.