USING C IN SOFTWARE DESIGN, 2E Originally published in 1993, this book provides a creative approach to learning the C programming language by emphasizing software engineering. This inexpensive book, extensively tested in several academic and professional settings, provides a gentle, but complete, introduction to the C language for a practicing scientist or engineer to ...
USING C IN SOFTWARE DESIGN, 2E
Originally published in 1993, this book provides a creative approach to learning the C programming language by emphasizing software engineering. This inexpensive book, extensively tested in several academic and professional settings, provides a gentle, but complete, introduction to the C language for a practicing scientist or engineer to be able to write substantial programs to solve scientific programs using C libraries. Extensive program examples are included to illustrate the major concepts of the C programming language. This book also illustrates the way that modern software engineering is typically done, by showing how a major software design and development project can be implemented in the C language.
The first part emphasizes the simpler software engineering aspects of C, allowing the reader to begin writing interesting programs quickly. The second section discusses advanced C topics, such as pointers, structures, and the design of larger C programs that extend over several source code files. Key features include:
1. All of the material has been class-tested to ensure accuracy and usability.
2. As much as feasible, the book discusses the C language in general and avoids most implementation-specific features of the language.
3. A software project is introduced early in the book and appears throughout as new features of C are covered.
4. A separate chapter on larger programming using the “make” facility or the Visual Studio “project” for separate compilation is included.
5. A few judiciously chosen programs deliberately seeded with bugs or errors are used to illustrate potential errors and how they can be fixed to create programs that work correctly.
6. Special emphasis is placed on the design and implementation of user-defined libraries.
7. A brief introduction to C++ is included.
ADVANCED TOPICS IN UNIX, 2E
The first edition, originally published in 1994 by John Wiley, was named an Alternate Main Selection of the Newbridge Book Club. It stayed in print for thirteen years, an eternity in the computing literature. Due to changes in the publishing industry, this edition of the book is only available electronically.
I revised the book because of the increased popularity of several variants of UNIX and what I learned from reviews of the previous published version. Linux is highly popular, especially in the open source community and because the operating system for the Google Android phone is based on it. Mach, Solaris, and Apple Darwin are also popular.
In my experience, end users, application programmers, system programmers, and system administrators often have difficulties making programs and utilities work well across different UNIX variants, due to differences in file system organization, different locations of critical configuration files, and important, yet subtle, differences in how system calls operate. There are also issues with different utilities, many of which are either not available on all UNIX versions, or else require a substantial effort to even get them to install properly. One of the most interesting problems required detailed analysis of several Linux variants in order to get a single public domain application to work – the different Linux variants from Fedora (formerly Red Hat), SUSE, and Ubuntu were tried before the application would install and work properly.
Many second editions dump material from older technologies. I have chosen a different approach, guided by my own research and experience in the efficient development of large, high-quality, software systems over much of the last twenty-five years. A huge percentage of current software applications for UNIX and other operating systems are built using existing software components that are either partially or entirely reused. Older software components necessarily have been built using older technology and are likely to use some of the older system calls as well as newly created calls. You need to understand the differences in different generations of system calls and their behavior if you are redeploying existing software components. That is, after all, the reason for learning system calls if you are an applications programmer. The same holds true for systems-level programming, especially kernel-level programming, since operating systems are rarely written from scratch.
There are 11 chapters: Introduction to UNIX, The User Interface, Input and Output, UNIX File Systems, Introduction to Processes, Memory and Process Management, Introduction to Interprocess Communication, The System V IPC Package, Signals, Sockets, and RPC, IPC Comparison, and Fault-Tolerant UNIX Software.
Ronald J. Leach recently retired as Professor and Chair Emeritus from the Department of Systems and Computer Science at Howard University, where he had taught since 1969. He received the B.S., M.S., and Ph.D. degrees from the University of Maryland at College Park and the M. S. degree in Computer Science from Johns Hopkins University. His research interests include distributed systems, performance modeling and capacity planning; and most areas of software engineering, especially software reuse, fault-tolerance, and software performance measurement and their empirical foundations. Some of his current work includes the application of computing to the social sciences, especially in the area of name matching within historical documents, using both his computer search skills and genealogical knowledge. He is a frequent member of ABET site visit teams. He is an experienced cruise ship lecturer, with special emphasis on identity theft and computer forensics. He also lectures to other groups.
Ron Leach is the author of seven print books: "Using C in Software Design," Academic Press Professional,"Advanced Topics in UNIX," John Wiley; "Object-Oriented Design and Programming in C++," Academic Press Professional, Software Reuse: Methods, Models, and Costs," McGraw-Hill, "Introduction to Software Engineering," CRC Press, "Genealogy for the Information Age," Disruptive Publishing, and "Relative Genealogy," Disruptive Publishing. He has published two books on the subject of identity theft: "Twelve and a Half Steps to Avoid Identity Theft," as an ebook, and "Identity Theft in the Cyber Age," which is available as both an ebook and in print. Revised editions of many of these are available as ebooks.
Dr. Leach has offered technical training and seminars on software reuse, reengineering, and testing on three continents. He has lectured on a variety of other topics between continents! He is also the author or co-author of more than one hundred technical papers. In his spare time, he is the co-Editor of the Maryland Genealogical Society Journal and is webmaster for its newly designed website.