Book Description
A groundbreaking, unifying theory of computer science for low-cost, high-quality software
The Cognitive Dynamics of Computer Science represents the culmination of more than thirty years of the author's hands-on experience in software development, which has resulted in a remarkable and sensible philosophy and practice of software development. It provides a groundbreaking ontology of computer science, while describing the processes, methodologies, and constructs needed to build high-quality, large-scale computer software systems on schedule and on budget.
Based on his own experience in developing successful, low-cost software projects, the author makes a persuasive argument for developers to understand the philosophical underpinnings of software. He asserts that software in reality is an abstraction of the human thought system. The author draws from the seminal works of the great German philosophers-Kant, Hegel, and Schopenhauer-and recasts their theories of human mind and thought to create a unifying theory of computer science, cognitive dynamics, that opens the door to the next generation of computer science and forms the basic architecture for total autonomy.
* Four detailed cases studies effectively demonstrate how philosophy and practice merge to meet the objective of high-quality, low-cost software.
* The Autonomous Cognitive System chapter sets forth a model for a completely autonomous computer system, using the human thought system as the model for functional architecture and the human thought process as the model for the functional data process.
* Although rooted in philosophy, this book is practical, addressing all the key areas that software professionals need to master in order to remain competitive and minimize costs, such as leadership, management, communication, and organization.
This thought-provoking work will change the way students and professionals in computer science and software development conceptualize and perform their work. It provides them with both a philosophy and a set of practical tools to produce high-quality, low-cost software./p>
Reviews From AMAZON.COM
Software Development and the Hegelian Dialectic
The author has given us a framework for conceptualizing, organizing and developing large, complex, software systems, and delivering them on schedule, on cost.
His approach to software development emphasizes two basic ideas. Unique is his application to the development process of the cognitive philosophies of the great Nineteenth Century German cognitive philosophers, principally Schopenhauer, Kant and Hegel, which De Gyurky has studied for years (- in the original Nineteenth Century High German). De Gurky also emphasizes to an extraordinary degree the active role of personal leadership required of the successful software development manager.
Far from being a purely theoretical work, the book is richly illustrated with pungent examples from De Gyurky's near-incredibly varied experience both in the US military as a Special Forces officer commanding a detachment of Montaignards in the mountains of Vietnam, as an action officer at NATO Headquarters, and as the civilian developer of very large military flight-schedule management systems as well as spacecraft software command and control systems.
All the examples are exquisitely pertinent to the software development process. But in addition, four detailed programmatic examples are presented, together with comments, figures and schedules. The author's application of the principles he developed is wholly consistent and unfailingly pertinent, if sometimes challenging, due to the likely unfamiliarity on the part of the typical software engineering reader with the application of the philosophical concepts.
In fact, the single characteristic of the book which may challenge the typical software developer is the accessibility of some of the concepts. Some of the most powerful concepts discussed, e.g., the dialectical process by which an ill-formed idea becomes an object that reflects the meeting of the minds of the design team, are likely to be unfamiliar. However this process has profound implications for the organization of the design team, its management, team-member responsibilities, and on and on. It might have been helpful if the author had expanded on these key concepts, perhaps in context closer to their original use. It would be demanding on the reader, but probably no more so than parts of the book itself.
This unique contribution is recommended to software developers interested in on-time, on-cost development of large software systems, and willing to invest in the intellectual effort required to understand the author's unique contribution. They will be well rewarded.
The Science and Ethics of Computer System Development
I have read many books on systems and software development and management principles over the years. The ones that most influenced me were: "More Reliable Software Through Composite Design" by Glen Meyers; "Up the Organization" by Robert Townsend; and "Reengineering the Corporation" by Michael Hammer and James Champy. And of course no system developer's library would be complete without "Managing the Software Process" and other books by Watts Humphry, a giant in our industry. Mr. Szabolcs Michael deGyurky's book will occupy a place along side these on my bookshelf.
In this book, Mr. deGyurky has provided a completely different and refreshing, but no less important, viewpoint on systems development. As different as all the above mentioned books are, the one theme common to all of them is their focus on the "real" problem by differentiating between the truly important and the seemingly important - commonly referred to as separating the wheat from the chaff..
"The Cognitive Dynamics of Computer Science" focuses on strength of character as being indispensable to successful completion of complex systems development projects, which not only satisfy the "real" requirements, but ensure the system is delivered within an agreed to budget and schedule. This book draws on the philosophy of such estimable historical figures as Kant, Hegel and Schopenhauer, among others, in defining the behavioral characteristics of successful leaders and managers. Personal experiences in real world projects by Jet Propulsion Laboratory (JPL) provide a substantive backdrop for Mr. deGyurky's approach to managing systems development.
It is impossible to adequately relay the impact of such a book in so short a review, but I do come away with some points which derive more meaning because of my own experience: 1) Design from the user in, but develop from the inside out, in layers, 2) Don't implement until you have an initial design documented and understood by the development team - expect that to change, 3) Manage change through the Project Implementation Plan (PIP), which is the Project Manager's equivalent to the Software Development Folder, 4) Don't hire staff until you have their tasks well defined (control burn rate and you have controlled your budget), 5) Make sure you understand exactly what your customer wants through constant customer involvement, 6) make your customer's goal, your goal, then incentivize the entire development team to focus on that goal as the highest priority, 7) There shall be no implementation without documented, repeatable process and standards, which should be tailored to the individual project, but at no time should process and standards replace common sense in a dynamically changing development environment, 8) Employ tools and ensure the team is involved in their selection, 9) Ensure the development team is trained in methodology, process, standards, tools and system requirements, and 10) the manager should place the needs of his customer and his team ahead of his personal goals.
All of this is done in concert with the philosophical teachings of our great philosophers, who would encourage strict honesty and ethics in dealing with our customer, subordinates, colleagues, company management, even if it means being fired. Of course, one does not fit all the meaning of a 300-page book into such a short review, and one could easily list another 10 or more points of interest.
I agree with almost everything in this excellent book, but may differ on the role played by Computer Aided Software Engineering (CASE) and Computer Aided Design (CAD) in systems development. Since CASE tools became mature enough to use effectively, I personally selected my tools, then built my process and standards around them. This includes the way I modify process and standards (including DoD) to conform to streamlining development and associated documentation. The CASE tool, when used with discipline can ensure that interface errors are avoided during the design process, as provided through automatic leveling and validation as the system design progresses. Fixed price contracts caused me to gravitate to using the latest tools available and build around them each time.
I am certain that Autonomous Cognitive systems are in our future, but not without application of increasingly sophisticated CASE tools and compilers (Autonomous Cognitive Compilers), which can parse complex combinations of Boolean expressions with many operations per expression to simulate the human thought system in making decisions. Neither can these systems be built without addressing the transducers (sensors), which would connect to and provide stimuli to be interpreted and processed by any autonomous system as the 5 senses (sight, hearing, touch, smell and taste). I look forward to Mr. deGuyrky's next book, which may address this highly complex problem.
I would only close this review with one last comment, directed to JPL. Mr. deGyurky and his team were on the right track with Ada. It is unfortunate that JPL didn't adopt this very highly typed and disciplined high order language as their standard development language. I believe it would have saved more than one failed project. Based on my 40 plus years of developing computer systems, I would humbly suggest that JPL require mandatory use of Ada in all "Class A" development projects.

ISBN:0471970476