In delivering lectures and writing books, we were most often forced to pay absolutely no attention to a great body of interesting results and useful algorithms appearing in numerous sources and occasionally encountered. It was absolutely that most of these re- sults would finally be forgotten because it is impossible to run through the entire variety of sources where these materials could be published. Therefore, we decided to do what we can to correct this situation. We discussed this problem with Ershov and came to an idea to write an encyclopedia of algorithms on graphs focusing our main attention on the algorithms already used in programming and their generalizations or modifications. We thought that it is reasonable to group all graphs into certain classes and place the algo- rithms developed for each class into a separate book. The existence of trees, i. e. , a class of graphs especially important for programming, also supported this decision. This monograph is the first but, as we hope, not the last book written as part of our project. It was preceded by two books "Algorithms on Trees" (1984) and "Algorithms of Processing of Trees" (1990) small editions of which were published at the Computer Center of the Siberian Division of the Russian Academy of Sciences. The books were distributed immediately and this made out our decision to prepare a combined mono- graph on the basis of these books even stronger.
This introductory text offers a contemporary treatment of computer architecture using assembly and machine language with a focus on software. Students learn how computers work through a clear, generic presentation of a computer architecture, a departure from the traditional focus on a specific architecture. A computer's capabilities are introduced within the context of software, reinforcing the software focus of the text. Designed for computer science majors in an assembly language course, this text uses a top-down approach to the material that enables students to begin programming immediately and to understand the assembly language, the interface between hardware and software. The text includes examples from the MIPS RISC (reduced instruction set computer) architecture, and an accompanying software simulator package simulates a MIPS RISC processor (the software does not require a MIPS processor to run).