I just finished writing a new book which many of you may be interested it. It’s an introduction to programming using assembly language on Linux. This book teaches programming starting from the very basics of moving memory around in registers, and build up knowledge until you are well-grounded enough to learn any part of computer science. The book is called Programming from the Ground Up and the content is licensed under the GFDL.
If anyone has been wanting to get into the programming side of Linux, this is the way to go. Also, if you are a programmer but have never ventured out into assembly language, then this is a good resource for you, too. It covers all sorts of topics that you may have missed, such as virtual memory, memory allocation (includes a basic malloc() implementation), static linking, dynamic linking, calling conventions, etc.