Friday, November 13, 2009 2:51 AM,



This message from a student is not for today.  In fact, feel free to delete or 
at the very most, put it on the stack for reading after the semester is over 
and you are at home suffering from withdrawal pains of no EE 306 to do.

A student writes:



	 Hello again Dr. Patt
	
	         In class, you have suggested more than a few times to look 
	 into Donald Knuth's series of volumes titled The Art Of Computer 
	 Programming. Do you have any other suggestions as well or does Knuth 
	 do the job? Also are there more books on how the computer works 
	 (something similar to your book)? Something that goes over other types 
	 of computer processes that you weren't able to cover in your book due 
	 to limiting the material to one semester. Or do I just need to wait 
	 until my upper division classes?
	
	 Thanks for the help,
	 <<name withheld to protect the student who has not had enough>>



Certainly you could wait, but you do not have to wait until your upper 
division classes.

Knuth is excellent for what it covers.  It is called The Art of Computer 
Programming, and deals with issues in programming.  I certainly strongly 
encourage everyone serious in computer science and engineering to have copies 
of it on their shelves.  Whether you do so now, or wait and get the series as 
a graduation present is up to you.

Our textbook should give you a strong foundation on the topics it covers 
(number representations, digital logic, computer organization, assembly 
language, and intro to high level programming in C), but then of course I am 
hardly objective when it comes to my own book.  We have tried to make the book 
solid and rigorous on each element, but certainly not complete with respect to 
all the ramifications.  But, as you clearly understand from your comment on 
"upper division classes," there is much more to deal with as you get into each 
of these elements.

With respect to digital logic, my preferred book is the one by John Wakerly.
I don't have the complete citation off the top of my head, but Google these 
days seems happy to fill in the blanks.

With respect to other high level languages, that will depend on the language.
Because C is a language that exposes the most to the programmer, I think you 
will find chapters 11-19 in our book useful when you study these concepts with 
some other language.  At least I have been told that by former students who 
have gone on to 312 and 322C.  For example, the notion of functions which is 
an important component of most programming languages is pretty clearly spelled 
out I think in our book.  Pointers are simply LDI and STI revisited.

With respect to computer organization and architecture, that depends on the 
particular ISA.  Right now I do not have any recommendation, but I hope to 
change that soon.

With respect to 319K, which you will get next semester, you should check with 
Professor Valvano.

With respect to operating systems at the undergraduate level, Bryant and 
O'Halloran seems to be a good choice, but that is something for a couple of 
years from now.

OR, again, you can wait for your upper division courses.

Good luck as you proceed through the curriculum.  And, please start by earning 
an A in EE 306.

Yale Patt