CSCI 464, Section 2 - Spring 2006
Required and Recommended Texts

(Last updated on March 28, 2007)


Required Texts for CSCI 464

CSCI 464 Data Structures: Notes and Examples (Course Notes) - updated most recently for Spring 2006; do not use an older edition

The Art of Computer Programming, by Donald E. Knuth;

Volume 1: Fundamental Algorithms, Third Edition; Errata
Volume 3: Sorting and Searching, Second Edition; Errata

IBM Publications

SC26-4940: High Level Assembler V1R4 Language Reference
SC26-4941: High Level Assembler V1R4 Programmer's Guide
GC26-8710: High Level Assembler V1R5 Toolkit Feature User's Guide [for structured programming macro documentation]
SA22-7201: ESA/390 Principles of Operation (or SA22-7832: z/Architecture Principles of Operation)

And for the first two weeks only (we'll use the High Level Assembler after that):

ASSIST Introductory Assembler User's Manual
ASSIST Assembler Replacement User's Guide (This is also in Notes and Examples)


Additional Recommended Information on TAoCP

The following are not required, but may be interesting:

Portions of upcoming volumes of The Art of Computer Programming are being made available early as "fascicles." The first one is on MMIX, an update of MIX. The others are sections from Chapter 7 (which will eventually be published as at least three volumes):

Section 7.2.1.1 Generating All n-Tuples
Section 7.2.1.2 Generating All Permutations
Section 7.2.1.3 Generating All Combinations
Section 7.2.1.4-5 Generating All Partitions

More information about D E Knuth can be found in his Curriculum Vitæ and in his short bio and software-oriented bio.


Additional Recommended Information on Assembler and IBM Architecture

Here are some notes on csect "threading" by John Ehrman.

John Ehrman has also written a note showing unusual uses of the USING instruction. These are NOT to be interpreted as suggestions, but instead as aids to understanding USING.


Here is a presentation on the USING instruction given at the Summer 2004 SHARE meeting. It covers the same material provided in Notes and Examples.


IBM has announced the official end of service dates for all versions of OS/390 and z/OS that run on 31-bit hardware. On March 31, 2007, all 31-bit mainframes will essentially become obsolete and 64-bit mainframes will become the standard. For that reason, it will be increasingly important to understand the differences introduced by the z/Architecture. Some helpful references:

All four of these are highly technical and will take some effort to understand. There is a lot of overlap in the material; my hope is that the different presentations will facilitate understanding. My thanks to both authors for permission to include their presentations.


The STORAGE macro has effectively replaced GETMAIN and FREEMAIN; we will use STORAGE to acquire or release memory (instead of the older macros).


Recommended IBM Publications


GC28-1757: OS/390 V2R10.0 MVS JCL Reference

GC28-1758: OS/390 V2R10.0 MVS JCL User's Guide

GC28-1762: OS/390 V2R10.0 MVS Programming Assembler Services Guide

GC28-1910: OS/390 V2R10.0 MVS Programming Assembler Services Reference

GC28-1780: OS/390 V2R10.0 MVS System Codes

GC28-1784: OS/390 V2R10.0 MVS System Messages, Vol 1 (ABA-ASA)

GC28-1785: OS/390 V2R10.0 MVS System Messages, Vol 2 (ASB-EZM)

GC28-1786: OS/390 V2R10.0 MVS System Messages, Vol 3 (GDE-IEB)

GC28-1787: OS/390 V2R10.0 MVS System Messages, Vol 4 (IEC-IFD)

GC28-1788: OS/390 V2R10.0 MVS System Messages, Vol 5 (IGD-IZP)

SC26-7339: OS/390 V2R10.0 DFSMS Using Data Sets

SC26-7337: OS/390 V2R10.0 DFSMS Macro Instructions for Data Sets

SC27-0806: OS/390 DFSMS R4 Program Management


On Developing Software


One of the most difficult hurdles many students face is the (apparently) startling notion that the process of designing a program should be completed prior to any coding, rather than concurrent with it. This means writing down, in some sort of pseudo-code language, the logical steps to be implemented. [A description of such pseudo-code can be seen at http://www.cfg.com/pdl81/pdlpaper.html .]

Just writing pseudo-code isn't enough, though. It's also important to show exactly how each pseudo-code statement is implemented, by quoting it as a comment just before the instructions that implement it. This process will be emphasized throughout the semester, but a complete discussion of this and other software engineering principles and processes can be found in the excellent book, Code Complete, 2nd Ed, by Steve McConnell, published by Microsoft. I strongly recommend this book, especially to those who would like to have a successful programming career.


This page was last modified on Wednesday, March 28, 2007, at 08:03:45 PM GMT