The need for a comprehensive survey-type exposition on formal languages and related mainstream areas of computer science has been evident for some years. In the early 1970s, when . the book Formal Languages by the second mentioned editor appeared, it was still quite feasible to write a comprehensive book with that title and include also topics of current research interest. This would not be possible anymore. A standard-sized book on formal languages would either have to stay on a fairly low level or else be specialized and restricted to some narrow sector of the field. The setup becomes drastically different in a collection of contributions, where the best authorities in the world join forces, each of them concentrat ing on their own areas of specialization. The present three-volume Handbook constitutes such a unique collection. In these three volumes we present the current state of the art in formal language theory. We were most satisfied with the enthusiastic response given to our request for contributions by specialists representing various subfields. The need for a Handbook of Formal Languages was in many answers expressed in different ways: as an easily accessible his torical reference, a general source of information, an overall course-aid, and a compact collection of material for self-study. We are convinced that the final result will satisfy such various needs. The theory of formal languages constitutes the stem or backbone of the field of science now generally known as theoretical computer science.
In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system.
Indeed, the best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture.
Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience.
The book’s web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.
The dynamic evolution of the field of computer science also poses educational and pedagogical challenges, such as issues of computer science (CS) teacher recruitment, pre-service teacher preparation, support for teachers’ ongoing professional development, and the design of teaching and learning material.
This unique Guide to Teaching Computer Science presents both a conceptual framework and detailed implementation guidelines for general CS teaching. The content is clearly written and structured to be applicable to all levels of CS education and for any teaching organization, without limiting its focus to instruction for any specific curriculum, programming language or paradigm.
Topics and features: presents an overview of curriculum topics in computer science, and of research in CS education; examines strategies for teaching problem-solving, evaluating pupils, and for dealing with pupils’ misunderstandings; provides learning activities throughout the book, consistently supported by chapter references; proposes active-learning-based classroom teaching methods, as well as methods specifically for lab-based teaching; discusses various types of questions that a CS instructor, tutor, or trainer can use for a range of different teaching situations; investigates thoroughly issues of lesson planning and course design; describes frameworks by which prospective CS teachers gain their first teaching experience.
Drawing on the authors’ experience of more than two decades of teaching and research in computer science education, this concise, thorough and easy-to-follow book is eminently suitable for use as either a teaching guide or as a textbook for computer science teacher training programs.
Computing is usually viewed as a technology field that advances at the breakneck speed of Moore’s Law. If we turn away even for a moment, we might miss a game-changing technological breakthrough or an earthshaking theoretical development. This book takes a different perspective, presenting computing as a science governed by fundamental principles that span all technologies. Computer science is a science of information processes. We need a new language to describe the science, and in this book Peter Denning and Craig Martell offer the great principles framework as just such a language. This is a book about the whole of computing — its algorithms, architectures, and designs.Denning and Martell divide the great principles of computing into six categories: communication, computation, coordination, recollection, evaluation, and design. They begin with an introduction to computing, its history, its many interactions with other fields, its domains of practice, and the structure of the great principles framework. They go on to examine the great principles in different areas: information, machines, programming, computation, memory, parallelism, queueing, and design. Finally, they apply the great principles to networking, the Internet in particular. Great Principles of Computing will be essential reading for professionals in science and engineering fields with a “computational” branch, for practitioners in computing who want overviews of less familiar areas of computer science, and for non-computer science majors who want an accessible entry way to the field.
Computers now impact almost every aspect of our lives, from our social interactions to the safety and performance of our cars. How did this happen in such a short time? And this is just the beginning. In this book, Tony Hey and Gyuri Pápay lead us on a journey from the early days of computers in the 1930s to the cutting-edge research of the present day that will shape computing in the coming decades. Along the way, they explain the ideas behind hardware, software, algorithms, Moore’s Law, the birth of the personal computer, the Internet and the Web, the Turing Test, Jeopardy’s Watson, World of Warcraft, spyware, Google, Facebook and quantum computing. This book also introduces the fascinating cast of dreamers and inventors who brought these great technological developments into every corner of the modern world. This exciting and accessible introduction will open up the universe of computing to anyone who has ever wondered where his or her smartphone came from.
The information technology revolution is transforming almost every aspect of society, but girls and women are largely out of the loop. Although women surf the Web in equal numbers to men and make a majority of online purchases, few are involved in the design and creation of new technology. It is mostly men whose perspectives and priorities inform the development of computing innovations and who reap the lion’s share of the financial rewards. As only a small fraction of high school and college computer science students are female, the field is likely to remain a “male clubhouse,” absent major changes.
In Unlocking the Clubhouse, social scientist Jane Margolis and computer scientist and educator Allan Fisher examine the many influences contributing to the gender gap in computing. The book is based on interviews with more than 100 computer science students of both sexes from Carnegie Mellon University, a major center of computer science research, over a period of four years, as well as classroom observations and conversations with hundreds of college and high school faculty. The interviews capture the dynamic details of the female computing experience, from the family computer kept in a brother’s bedroom to women’s feelings of alienation in college computing classes. The authors investigate the familial, educational, and institutional origins of the computing gender gap. They also describe educational reforms that have made a dramatic difference at Carnegie Mellon — where the percentage of women entering the School of Computer Science rose from 7% in 1995 to 42% in 2000 — and at high schools around the country.
Thomas Dean explores a wide range of fundamental topics in computer science, from digital logic and machine language to artificial intelligence and the World Wide Web, explaining how computers and computer programs work and how the various subfields of computer science are interconnected. Dean touches on a number of questions including: How can a computer learn to recognize junk email? What happens when you click on a link in a browser? How can you program a robot to do two things at once? Are there limits to what computers can do? Dean encourages readers to experiment with short programs and fragments of code written in several languages to strip away the mystery and reveal the underlying computational ideas. The accompanying website (www.cs.brown.edu/tld/talk) provides access to code fragments, tips on finding and installing software, links to online resources, and exercises. Throughout Talking With Computers, Dean conveys his fascination with computers and enthusiasm for working in a field that has changed almost every aspect of our daily lives. Thomas Dean is Professor in the Computer Science Department at Brown University, where he served as Acting Vice President for Computing and Information Services from 2001-2002. He is co-author of Planning and Control (Morgan-Kaufman, 1991) and Artificial Intelligence: Theory and Practice (Addison-Wesley, 1995).
Using the same approach as the popular “Milestones in Science and Technology” and “Milestones in Health and Medicine,” this unique reference features more than 600 concise entries describing the most significant advances in the field of computer science and information technology. Arranged in a convenient A-to-Z format, entries explain topics in a wide variety of categories, including hardware, software, theory, mathematics, programming, languages, memory, architecture, applications, and graphics.
Each entry presents a history of the topic’s milestones, describes its current status, and recommends a source for additional research. Entries link key developments and discoveries to notable researchers and companies, from the famous figures like Alan Turing and Bill Gates to lesser-known names like Gordon Moore and Zuse. More than 30 illustrations, helpful cross-references, four indexes, and selected sources for additional reading help users navigate this reference and supplement their research. Whether you’re researching cutting-edge technologies such as MP3, data encryption, and Beowulf clusters, or historical topics like Fortran, Packard Bell, and the Alto computer, students from high school and college, scholars, and the general public can easily find the facts and dates surrounding the most significant developments in the history of computing.
A complete lexicon of technical information, the Dictionary of Computer Science, Engineering, and Technology provides workable definitions, practical information, and enhances general computer science and engineering literacy. It spans various disciplines and industry sectors such as: telecommunications, information theory, and software and hardware systems. If you work with, or write about computers, this dictionary is the single most important resource you can put on your shelf.
The dictionary addresses all aspects of computing and computer technology from multiple perspectives, including the academic, applied, and professional vantage points. Including more than 8,000 terms, it covers all major topics from artificial intelligence to programming languages, from software engineering to operating systems, and from database management to privacy issues. The definitions provided are detailed rather than concise.
Written by an international team of over 80 contributors, this is the most comprehensive and easy-to-read reference of its kind. If you need to know the definition of anything related to computers you will find it in the Dictionary of Computer Science, Engineering, and Technology.