This title gives students an integrated and rigorous picture of applied computer science, as it comes to play in the construction of a simple yet powerful computer system.
Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. The book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.
A new and extensively revised edition of a popular textbook used in universities, coding boot camps, hacker clubs, and online courses. The best way to understand how computers work is to build one from scratch, and this textbook leads learners through twelve chapters and projects that gradually build the hardware platform and software hierarchy for a simple but powerful computer system. In the process, learners gain hands-on knowledge of hardware, architecture, operating systems, programming languages, compilers, data structures and algorithms, and software engineering. Using this constructive approach, the book introduces readers to a significant body of computer science knowledge and synthesizes key theoretical and applied techniques into one constructive framework.The outcome is known known as Nand to Tetris: a journey that starts with the most elementary logic gate, called Nand, and ends, twelve projects later, with a general-purpose computer system capable of running Tetris and any other program that comes to your mind. The first edition of this popular textbook inspired Nand to Tetris classes in many universities, coding boot camps, hacker clubs, and online course platforms. This second edition has been extensively revised. It has been restructured into two distinct parts—Part I, hardware, and Part II, software—with six projects in each part. All chapters and projects have been rewritten, with an emphasis on separating abstraction from implementation, and many new sections, figures, and examples have been added. Substantial new appendixes offer focused presentation on technical and theoretical topics.
As our society grows ever more reliant on computers, so it also becomes more vulnerable to computer crime. Cyber attacks have been plaguing computer users since the 1980s, and computer security experts are predicting that smart telephones and other mobile devices will also become the targets of cyber security threats in the future. Developed from the author's successful Springer guide to Foundations of Computer Security, this accessible textbook/reference is fully updated and enhanced with resources for students and tutors. Topics and features: examines the physical security of computer hardware, networks, and digital data; introduces the different forms of rogue software (or malware), discusses methods for preventing and defending against malware, and describes a selection of viruses, worms and Trojans in detail; investigates the important threats to network security, and explores the subjects of authentication, spyware, and identity theft; discusses issues of privacy and trust in the online world, including children's privacy and safety; includes appendices which discuss the definition, meaning, and history of the term hacker, introduce the language of "l33t Speak", and provide a detailed virus timeline; provides numerous exercises and examples throughout the text, in addition to a Glossary of terms used in the book; supplies additional resources at the associated website, http://www.DavidSalomon.name/, including an introduction to cryptography, and answers to the exercises. Clearly and engagingly written, this concise textbook is an ideal resource for undergraduate classes on computer security. The book is mostly non-mathematical, and is suitable for anyone familiar with the basic concepts of computers and computations.
Science used to be experiments and theory, now it is experiments, theory and computations. The computational approach to understanding nature and technology is currently flowering in many fields such as physics, geophysics, astrophysics, chemistry, biology, and most engineering disciplines. This book is a gentle introduction to such computational methods where the techniques are explained through examples. It is our goal to teach principles and ideas that carry over from field to field. You will learn basic methods and how to implement them. In order to gain the most from this text, you will need prior knowledge of calculus, basic linear algebra and elementary programming.
This text is ideal for junior-, senior-, and graduate-level courses in computer graphics and computer-aided design taught in departments of mechanical and aeronautical engineering and computer science. It presents in a unified manner an introduction to the mathematical theory underlying computer graphic applications. It covers topics of keen interest to students in engineering and computer science: transformations, projections, 2-D and 3-D curve definition schemes, and surface definitions. It also includes techniques, such as B-splines, which are incorporated as part of the software in advanced engineering workstations. A basic knowledge of vector and matrix algebra and calculus is required.