Computing
HOME ARTIFICIAL INTELLIGENCE HUMAN COMPUTER INTERACTION COMPUTER GRAPHICS COMPUTER ARCHITECTURE DATA MANAGEMENT NETWORKING SOFTWARE CONTACT US REVIEW COPY

TEXTBOOKS for
Software Courses


Programming Language Pragmatics, 3rd Edition

Programming Language Pragmatics, 3rd Edition
Michael Scott
ISBN: 978-0-12-374514-9

Programming Language Pragmatics is the most comprehensive programming language textbook available today. Taking the perspective that language design and language implementation are tightly interconnected, and that neither can be fully understood in isolation, this critically acclaimed and bestselling book has been thoroughly updated to cover the most recent developments in programming language design. With a new chapter on run-time program management and expanded coverage of concurrency, this new edition provides both students and professionals alike with a solid understanding of the most important issues driving software development today....[more]

C# Annotated Standard

Annotated C# Standard
Jon Jagger
Peter Sestoft
Nigel Perry

ISBN: 978-0-123-72511-0

Standards, while being definitive, do not usually serve as the best reference to the use of a programming language. Books on languages usually are able to explain usage better, but lack the definitive precision of a standard. This book combines the two; it is the standard with added explanatory material.

Contents
Foreword; Introduction; Scope; Conformance; Normative references; Definitions; Notational conventions; Acronyms and abbreviations; General description; Language overview; Lexical Structure; Basic Concepts; Types; Variables; Conversions; Expressions; Statements; Namespaces; Classes; Structs; Arrays; Interfaces; Enums; Delegates; Exceptions; Attributes; Unsafe Code; Generics; Iterators... [more]

Pixels, Patterns, and Processing

Learning Processing
Daniel Shiffman
ISBN: 978-0-12-373602-4

This book introduces programming concepts in the context of computer graphics and visual art, in a more accessible format than traditional programming textbooks. It uses the open source programming language Processing as the basis for all discussion and examples, focusing on the fundamentals such as variables, conditionals, loops, arrays, and objects in a highly visual manner. The book will also introduce advanced topics such as data mining, networking, image processing, computer vision, and 3D graphics. It will also introduce using Processing for "tangible media"; communicating with microcontrollers to interact with the physical environment. Processing is based on the programming language Java, and so is an excellent introduction to Java and object-oriented programming, and will help prepare the student for study of more advanced object-oriented languages such as Java or C++... [more]

Practical Guide to SysML: The Systems Modeling Language

Practical Guide to SysML: The Systems Modeling Language
Sanford Friedenthal
Rick Steiner
Alan Moore

ISBN: 978-0-12-374379-4

Contents
1.0 INTRODUCTION
1.1 Systems Engineering Overview
a. Systems Engineering Perspective
b. Systems Engineering Process
c. Integration between Systems and other Disciplines
1.2 Motivation for Model Driven Approach
d. Background (evolution to model driven approach, previous modeling approaches, etc.)
e. Benefits of model driven approach
f. Modeling capabilities with SysML (contrast with previous approaches)
1.3 Systems Modeling Fundamental... [more]

Digital Visual FORTRAN Programmer's Guide


Digital Visual FORTRAN Programmer's Guide
Michael Etzel
Karen Dickinson

ISBN: 978-1-555-58218-0

Digital Visual Fortran is the latest version of a major programming language tool used by scientists and engineers. Written by key technical writers from the Digital Visual Fortran product team, Digital Visual Fortran Programmer's Guide presents in printed form the critical portions of the official programmer's guide, previously only available online. The result is the authoritative book on Digital Visual Fortran's features and how to use them to create effective applications.

Digital Visual Fortran is the language of choice for computation-intensive scientific and engineering applications, financial applications, and other programs. Digital recently acquired Fortran technology and rights from Microsoft that allows them to use the Microsoft Developer Studio Integrated Development Environment, which is featured in Microsoft's Visual C++ and Visual Basic. The result is that Digital Visual Fortran is much easier to use and looks and works much like Microsoft's industry-leading programming products for other market segments... [more]

Compaq Visual Fortran

Compaq Visual Fortran: A Guide to Creating Windows Applications
Norman Lawrence
ISBN: 978-1-55558-249-4

Compaq Visual Fortran: A Guide to Creating Windows Applications is the only book that shows developers how to create Windows applications using Visual Fortran software. It complements Digital Press's successful reference, the Digital Visual Fortran Programmer's Guide. Lawrence details development methods and techniques for creating Fortran applications for Windows, the platform upon which developers can use Compaq Visual Fortran (CVF; to be Intel Visual Fortran in the future) to create applications.

The book teaches CVF programming progressively, beginning with simple tasks and building up to writing professional-level Win32 applications. Readers will learn about the powerful new CVF graphical user interface, as well as the intricacies of Windows development from a CVF perspective. They can master QuickWin, the Win32 APIs including multiple document interfaces, and Open GL with 3D and interactive graphics... [more]

C# Annotated Standard


Java made simple, 2nd Edition
P.K. McBride
ISBN: 978-0-750-65339-8

Java is a programming language designed for use on networks, in particular the Internet, and can also be used to write full-scale applications. It is based upon C++ and is very similar in its style and structure. Java Made Simple 2nd edition concentrates on getting the reader started and assumes no prior programming knowledge. Once the essentials have been mastered, it provides the confidence to go deeper into the language and broaden and develop invaluable programming skills.

Contents
Preface; Introducing Java; Variables and values; Program flow; Applet basics; The user interface; Graphics; Images, sounds and text; Threads; Answers to exercises; Index... [more]

The Art of Multiprocessor Programming

The Art of Multiprocessor Programming
Nir Shavit
Maurice Herlihy

ISBN: 978-0-123-70591-4

Contents
Part I: Foundations; 1 Introduction; 2 Mutual Exclusion; 3 Concurrent Objects and Linearization; 4 Foundations of Shared Memory; 5 The Relative Power of Synchronization Methods; 6 The Universality of Consensus; Part II: Practice; 7 Spin Locks and Contention; 8 Linked Lists: the Role of Locking; 9 Concurrent Hashing and Natural Parallelism; 10 Concurrent Counting and Structured Parallelism; 11 Diffracting Trees and Data Structure Layout; 12 Concurrent Stacks and the ABA Problem; 13 Concurrent Queues and the Optimistic Approach; 14 Concurrent Heaps; 15 Concurrent Search Structures; 16 Barriers and Phased Computation; 17 Work Stealing and Dynamic Load Distribution; Part III: Advanced Topics; 18 Room Synchronization; 19 Transactional Memory... [more]

Higher-Order Perl: Transforming Programs with Programs

Higher-Order Perl: Transforming Programs with Programs
Mark Jason Dominus
ISBN: 978-1-55860-701-9

Most Perl programmers were originally trained as C and Unix programmers, so the Perl programs that they write bear a strong resemblance to C programs. However, Perl incorporates many features that have their roots in other languages such as Lisp. These advanced features are not well understood and are rarely used by most Perl programmers, but they are very powerful. They can automate tasks in everyday programming that are difficult to solve in any other way. One of the most powerful of these techniques is writing functions that manufacture or modify other functions. For example, instead of writing ten similar functions, a programmer can write a general pattern or framework that can then create the functions as needed according to the pattern. For several years Mark Jason Dominus has worked to apply functional programming techniques to Perl. Now Mark brings these flexible programming methods that he has successfully taught in numerous tutorials and training sessions to a wider audience... [more]

Parallel Programming with MPI

Parallel Programming with MPI
Peter Pacheco
ISBN: 978-1-55860-339-4

A hands-on introduction to parallel programming based on the Message-Passing Interface (MPI) standard, the de-facto industry standard adopted by major vendors of commercial parallel systems. This textbook/tutorial, based on the C language, contains many fully-developed examples and exercises. The complete source code for the examples is available in both C and Fortran 77. Students and professionals will find that the portability of MPI, combined with a thorough grounding in parallel programming principles, will allow them to program any parallel system, from a network of workstations to a parallel supercomputer... [more]

Groovy Programming: An Introduction for Java Developers

Groovy Programming: An Introduction for Java Developers
Kenneth Barclay
John Savage

ISBN: 978-0-12-372507-3

Groovy Programming is an introduction to the Java-based scripting language Groovy. Groovy has much in common with popular scripting languages such as Perl, Python, and Ruby, but is written in a Java-like syntax. And, unlike these other languages, Groovy is sanctioned by the Java community for use on the Java platform. Since it is based on Java, applications written in Groovy can make full use of the Java Application Programmer Interfaces (APIs). This means Groovy can integrate seamlessly with applications written in Java, while avoiding the complexities of the full Java language. This bare-bones structure also means Groovy can be used as an introduction to Java and to programming in general. Its simpler constructions and modern origins make it ideal as a first language and for introducing principles such as object-oriented programming... [more]

Advanced Compiler Design and Implementation

Advanced Compiler Design and Implementation
Steven Muchnick
ISBN: 978-1-55860-320-2

From the Foreword by Susan L. Graham:
This book takes on the challenges of contemporary languages and
architectures, and prepares the reader for the new compiling problems that will inevitably arise in the future.

The definitive book on advanced compiler design
This comprehensive, up-to-date work examines advanced issues in the design and implementation of compilers for modern processors. Written for professionals and graduate students, the book guides readers in designing and implementing efficient structures for highly optimizing compilers for
real-world languages. Covering advanced issues in fundamental areas of compiler design, this book discusses a wide array of possible code optimizations, determining the relative importance of ptimizations, and selecting the most effective methods of implementation... [more]

Object-Oriented Design with UML and Java

Object-Oriented Design with UML and Java
Kenneth Barclay
John Savage

ISBN: 978-0-7506-6098-3

This book presents an integrated introduction to object-oriented design with the Unified Modelling Language and the Java programming language. It demonstrates that Java applications, no matter how small, can benefit from some design during their construction. Fully road-tested by students on the authors' own courses, the book shows how these complementary technologies can be used effectively to create quality software. No prior knowledge of object orientation is assumed, though some experience of Java is required. Two appendices provide assistance to those with experience of other programming languages. The UML has been incorporated into a graphical design tool called ROME, which can be downloaded from the book's website. This object modelling environment allows readers to prepare and edit various UMl diagrams. ROME can be used alongside a Java compiler to generate Java compiler to generate Java code from a UML class diagram then compile and run the resulting application for hands-on learning... [more]

Understanding UML: The Developer's Guide

Understanding UML: The Developer's Guide
Mark Watson

ISBN: 978-1-558-60465-0

The Unified Modeling Language (UML) is a third generation method for specifying, visualizing, and documenting an object-oriented system under development. It unifies the three leading object-oriented methods and others to serve as the basis for a common, stable, and expressive object-oriented development notation. As the complexity of software applications increases, so does the developer's need to design and analyze applications before developing them. This practical introduction to UML provides software developers with an overview of this powerful new design notation, and teaches Java programmers to analyse and design object-oriented applications using the UML notation... [more]

Linkers and Loaders

Linkers and Loaders
John Levine
ISBN: 978-1-55860-496-4

Whatever your programming language, whatever your platform, you probably tap into linker and loader functions all the time. But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes. The book begins with a detailed and comparative account of linking and loading that illustrates the differences among various compilers and operating systems. On top of this foundation, the author presents clear practical advice to help you create faster, cleaner code.... [more]

Distributed Systems Architecture: A Middleware Approach

Distributed Systems Architecture: A Middleware Approach
Arno Puder
Kay Römer
Frank Pilhofer

ISBN: 978-1-55860-648-7

Middleware is the bridge that connects distributed applications across different physical locations, with different hardware platforms, network technologies, operating systems, and programming languages. This book describes middleware from two different perspectives: from the viewpoint of the systems programmer and from the viewpoint of the applications programmer. It focuses on the use of open source solutions for creating middleware and the tools for developing distributed applications. The design principles presented are universal and apply to all middleware platforms, including CORBA and Web Services. The authors have created an open-source implementation of CORBA, called MICO, which is freely available on the web. MICO is one of the most successful of all open source projects and is widely used by demanding companies and institutions, and has also been adopted by many in the Linux community... [more]

Software Design Methodology: From Principles to Architectural Styles

Software Design Methodology: From Principles to Architectural Styles
Hong Zhu
ISBN: 978-0-7506-6075-4

Exploring the theory of software architecture and concentrating on general design principles rather then specific methods, Software Design Methodology helps students to analyse and evaluate software architectural designs, whilst broadening their knowledge of large-scale software systems. Numerous case studies and examples demonstrate how important factors, such as globalisation, modelling, coding, testing and maintenance, need to be addressed when creating a modern information system.

Written with an emphasis on high level design for software engineering and computer science undergraduates and graduates on Msc conversion courses, the book also includes advanced topics suitable for postgraduate courses. Each chapter contains expected learning outcomes, a summary of key points and exercise questions to test knowledge and skills... [more]

Why Programs Fail: A Guide to Systematic Debugging

Why Programs Fail: A Guide to Systematic Debugging
Andreas Zeller
ISBN: 978-1-55860-866-5

Why Programs Fail is about bugs in computer programs, how to find them, how to reproduce them, and how to fix them in such a way that they do not occur anymore. This is the first comprehensive book on systematic debugging and covers a wide range of tools and techniques ranging from hands-on observation to fully automated diagnoses, and includes instructions for building automated debuggers. This discussion is built upon a solid theory of how failures occur, rather than relying on seat-of-the-pants techniques, which are of little help with large software systems or to those learning to program. The author, Andreas Zeller, is well known in the programming community for creating the GNU Data Display Debugger (DDD), a tool that visualizes the data structures of a program while it is running... [more]

Practical Model-Based Testing: A Tools Approach

Practical Model-Based Testing: A Tools Approach
Mark Utting
Bruno Legeard

ISBN: 978-0-12-372501-1

This book gives a practical introduction to model-based testing, showing how to write models for testing purposes and how to use model-based testing tools to generate test suites. It is aimed at testers and software developers who wish to use model-based testing, rather than at tool-developers or academics.

The book focuses on the mainstream practice of functional black-box testing and covers different styles of models, especially transition-based models (UML state machines) and pre/post models (UML/OCL specifications and B notation). The steps of applying model-based testing are demonstrated on examples and case studies from a variety of software domains, including embedded software and information systems... [more]

Higher-Order Perl: Transforming Programs with Programs

Higher-Order Perl: Transforming Programs with Programs
Mark Jason Dominus
ISBN: 978-1-55860-701-9

Most Perl programmers were originally trained as C and Unix programmers, so the Perl programs that they write bear a strong resemblance to C programs. However, Perl incorporates many features that have their roots in other languages such as Lisp. These advanced features are not well understood and are rarely used by most Perl programmers, but they are very powerful. They can automate tasks in everyday programming that are difficult to solve in any other way. One of the most powerful of these techniques is writing functions that manufacture or modify other functions. For example, instead of writing ten similar functions, a programmer can write a general pattern or framework that can then create the functions as needed according to the pattern. For several years Mark Jason Dominus has worked to apply functional programming techniques to Perl. Now Mark brings these flexible programming methods that he has successfully taught in numerous tutorials and training sessions to a wider audience... [more]

Systems Engineering with SysML/UML

Systems Engineering with SysML/UML
Modeling, Analysis, Design

Tim Weilkiens
ISBN: 978-0-123-74274-2

Approx. 310 illustrations

Contents
1. Introduction; 2. Process SYSMOD; 3. SysML- Systems Modeling Language; 4. UML- Unified Modeling Language; 5. Systems-Engineering-Profile; Appendices, Glossary, and Literature References... [more]



Software Courses
To find textbooks click the course headings below.

Introduction to Programming (CS1) coures:

  • C# Programming - Introductory
  • FORTRAN — Programming
  • Java — Programming for Technology

Intermediate/Advanced Programming courses:

  • Java — Intermediate / Advanced Programming

Other Programming Languages courses:

  • PL/1—Programming
  • Other Languages — Programming

Algorithms/Advanced Data Structures (CS7) courses:

  • Java — Algorithms

Compilers courses:

  • Compiler Construction

Object-Oriented Programming courses:

  • Object-Oriented Design
  • Unified Modeling Language (UML)

Operating Systems (OS) courses:

  • Operating Systems (OS)
  • Distributed Systems

Parallel Computing courses:

  • Parallel Algorithms
  • Parallel Computing
  • Parallel Programming / Concurrent Programming

Programming Languages and Theory courses:

  • Programming Languages / Comparative Languages
  • Theory of Programming Languages

Software Engineering courses:

  • Programming Methodology
  • Software Reliability
  • Software Testing and Verification

Web Programming and Design
courses:

  • PERL — Programming

Other courses:

  • Systems Analysis and Design
  • Systems Analysis and Design — Advanced
Terms of Use | Privacy Policy | Copyright © 2007 Elsevier All rights reserved.