A Balanced Introduction to Computer Science / Edition 3

Paperback (Print)
Rent
Rent from BN.com
$24.56
(Save 83%)
Est. Return Date: 09/08/2014
Buy Used
Buy Used from BN.com
$97.68
(Save 34%)
Item is in good condition but packaging may have signs of shelf wear/aging or torn packaging.
Condition: Used – Good details
Used and New from Other Sellers
Used and New from Other Sellers
from $57.00
Usually ships in 1-2 business days
(Save 61%)
Other sellers (Paperback)
  • All (23) from $57.00   
  • New (8) from $121.94   
  • Used (15) from $57.00   

Overview

A Balanced Introduction to Computer Science, 3/e is ideal for Introduction to Computing and the Web courses in departments of Math and Computer Science.

This thoughtfully written text uses the Internet as a central theme, studying its history, technology, and current use. Experimental problems use Web-based tools, enabling students to learn programming fundamentals by developing their own interactive Web pages with HTML and JavaScript. Integrating breadth-based and depth-based chapters, Reed covers a broad range of topics balanced with programming depth in a hands-on, tutorial style.

Read More Show Less

Editorial Reviews

From the Publisher
“The textbook [Reed] explains a concept, shows the code, then give a pictorial example to reinforce that point. An excellent example is in chapter four when talking about ONMOUSEOVER and ONMOUSEOUT.” — Dr. Jenna Miley, Bainbridge College

“The thing that struck me [about Reed] was how the examples are presented followed by adding functionality, basically anticipating questions that a reader would have after doing the examples.” — Lionel Craddock, Bluefield State College

“The examples are illuminating and effective.” — Lionel Craddock, Bluefield State College

“This text [Reed] offers very clear explanations of difficult topics.” — Ralph Hooper, University of Alabama

“Reed’s examples are relevant and fun; his language is clear and concise, and his use of the language is accessible to non-majors.” — Arnold D. Miles, Georgetown University

“The programming is presented in a well-organized manner; it builds smoothly.” — Arnold D. Miles, Georgetown University

Read More Show Less

Product Details

  • ISBN-13: 9780132166751
  • Publisher: Prentice Hall
  • Publication date: 9/14/2010
  • Series: Pearson Custom Computer Science Series
  • Edition description: New Edition
  • Edition number: 3
  • Pages: 432
  • Sales rank: 583,422
  • Product dimensions: 7.90 (w) x 9.90 (h) x 0.70 (d)

Meet the Author

David Reed is an Associate Professor and Chair of the Department of Computer Science at Creighton University in Omaha, Nebraska. He received his M.S. and Ph.D. in computer science from Duke University in 1992, and subsequently taught and conducted research at Duke University and Dickinson College before joining the Creighton faculty in 2000. His primary interests are in artificial intelligence, programming languages, and computer science education, where he has published extensively on topics such as apprentice-based learning, Web-based programming, and innovative instructional methods in introductory computer science. He is a member of the Liberal Arts Computer Science Consortium and the Chief Reader for the Advanced Placement® Computer Science Exam since 2004.
Read More Show Less

Table of Contents

Contents
Preface xv
1 Computer Basics 1
What Is a Computer? 1
Hardware 3
Central Processing Unit (CPU) 4
Memory 6
Input/Output Devices (I/O) 8
Software 9
Operating Systems 10
Internet and the Web 12
Web Browsers and Servers 13
Web Addresses 14
Accessing Local Pages 15
Looking Ahead... 15
Chapter Summary 16
Review Questions 17
References 18

2 HTML and Web Pages 19
HTML Basics 20
HTML Tags 20
HTML Elements 21
Document Formatting 22
Text Spacing 22
Headings and Alignment 23
Font Formatting 25
Hypertext and Multimedia 27
Hyperlinks 27
Images 28
Lists 30
Formatting Lists 32
Tables 33
Table Borders 33
Table Alignment 34
Making Pages Publicly Viewable 36
Looking Ahead... 37
Chapter Summary 38
Supplemental Material and Exercises 39

3 The Internet and the Web 43
History of the Internet 44
ARPANet 44
Growth and Privatization 45
How the Internet Works 48
Distributed Network 48
Packet Switching 49
Internet Protocols: TCP/IP 50
Domain Names 50
History of the Web 52
Hypertext and the Web 52
Mainstream Adoption of the Web 53
Web Growth 54
How the Web Works 55
HTML 55
Web Protocol: HTTP 55
Caching 56
Looking Ahead... 56
Chapter Summary 57
Review Questions 58
Endnotes 59
References 59

4 JavaScript and Dynamic Web Pages 61
Dynamic Web Pages 62
HTML Event Handlers 62
The onclickEvent Handler 65
Interaction via Buttons 66
Input Buttons 66
Dynamic Text within a Page 69
Alert Windows 69
The innerHTMLAttribute 70
Example: Quotations Page 73
Looking Ahead... 75
Chapter Summary 75
Supplemental Material and Exercises 76

5 JavaScript and User Interaction 79
User Input via Text Boxes 79
The Text Box Element 80
Example: Form Letter Page 82
JavaScript Variables 83
Variables for Reusing Values 84
Example: Fill-in-the-Blank Story 85
Variables for Temporary Values 86
Web Pages That Compute 88
JavaScript Numbers and Expressions 88
Number Representation 90
Text Boxes and parseFloat91
Example: Grade Calculation 94
Programming Errors and Debugging 94
Looking Ahead... 95
Chapter Summary 95
Supplemental Material and Exercises 96

6 The History of Computers 100
Generation 0: Mechanical Computers (1642—1945) 101
Programmable Devices 102
Electromagnetic Relays 104
Generation 1: Vacuum Tubes (1945—1954) 105
Computing and World War II 106
The von Neumann Architecture 108
Generation 2: Transistors (1954—1963) 109
High-Level Programming Languages 110
Generation 3: Integrated Circuits (1963—1973) 110
Large Scale Integration 111
Computing for Businesses 111
Generation 4: VLSI (1973—1985) 112
The Personal Computer Revolution 112
Object-Oriented Programming 114
Generation 5: Parallel Processing & Networking (1985—????) 114
Looking Ahead... 115
Chapter Summary 115
Review Questions 116
Endnotes 118
References 118

7 Functions and Randomness 119
Predefined JavaScript Functions 119
Math Functions 120
Raising Numbers to a Power 123
Generating Random Numbers 123
Simple User-Defined Functions 125
Functions That Simplify 128
Randomness in a Page 129
Example: Simulated Dice 129
Example: Random Slide Show 130
Example: Random Banner Ads 131
Looking Ahead ... 133
Chapter Summary 133
Supplemental Material and Exercises 134

8 Algorithms and Programming Languages 136
Algorithms 137
Algorithms in the Real World 137
Designing and Analyzing Algorithms 138
An Alternative Algorithm 140
Algorithm Analysis 141
Big-Oh Notation 142
Algorithm Example: Searching a List 142
Sequential Search 142
Binary Search 143
Algorithm Analysis 144
Algorithm Example: Approximating a Square Root 144
Algorithm Analysis 146
Algorithms and Programming 146
Machine Languages 146
High-Level Languages 147
Program Translation 148
Interpreters and Compilers 150
Looking Ahead... 151
Chapter Summary 151
Review Questions 152
References 153

9 Abstraction and Libraries 155
The Structure of Functions 156
Local Variables 157
Functions with Inputs 159
Multiple Inputs 161
Functions That Return Values 162
Function Libraries 163
The random.jsLibrary 165
Looking Ahead ... 168
Chapter Summary 168
Supplemental Material and Exercises 169

10 Computer Science as a Discipline 174
Computer “Science” 175
Artificial Science 176
Computer Science Themes 176
Hardware 177
Software 177
Theory 178
Subfields of Computer Science 179
Algorithms and Data Structures 179
Architecture 182
Operating Systems and Networks 183
Software Engineering 185
Artificial Intelligence and Robotics 187
Bioinformatics 188
The Ethics of Computing 189
Looking Ahead... 190
Chapter Summary 191
Review Questions 192
Endnotes 193
References 194

11 Conditional Execution 195
If Statements 195
Boolean Tests 196
Nested If Statements 199
Cascading If-Else Statements 200
Example: Dice Simulations 201
Counters 201
Boolean Expressions 204
Example: Slot Machine 206
Looking Ahead... 209
Chapter Summary 209
Supplemental Material and Exercises 210

12 Data Representation 216
Analog vs. Digital 216
Binary Numbers 218
Representing Integers 219
Representing Real Numbers 220
Representing Characters and Strings 222
Representing Other Types of Data 223
Sounds 223
Images 225
Movies 227
How Computers Distinguish among Data Types 228
Looking Ahead... 229
Chapter Summary 230
Review Questions 230
References 232

13 Conditional Repetition 233
While Loops 234
Avoiding Redundancy 236
Example: Lottery Combinations 238
Counter-Driven Loops 240
Variables and Repetition 243
Example: Generating Hailstone Sequences 246
Looking Ahead... 247
Chapter Summary 248
Supplemental Material and Exercises 248

14 Inside the Computer–The von Neumann Architecture 253
CPU Subunits and Datapath 253
CPU Subunits 254
CPU Datapath Cycles 255
Datapath Simulator 255
CPU and Main Memory 257
Transferring Data to and from Main Memory 257
Datapath with Memory Simulator 258
Stored-Program Computer 260
Machine Languages 260
Control Unit 262
Stored-Program Computer Simulator 263
The Role of Input/Output Devices 267
Machine vs. Assembly Languages 268
Looking Ahead... 269
Chapter Summary 270
Review Questions 271
References 272

15 JavaScript Strings 273
Strings as Objects 273
Properties and Methods 274
Common String-Manipulation Methods 276
String Concatenation 277
Searching Strings 278
General Searches 279
String Manipulations and Repetition 280
Example: Recognizing Palindromes 282
Example: Substitution Ciphers 282
Encoding Messages 283
Decoding Messages 286
Looking Ahead... 287
Chapter Summary 288
Supplemental Material and Exercises 288

16 Inside the Computer–Transistors and Integrated Circuits 293
Electricity and Switches 294
Electricity Basics 294
Switches 294
Transistors 295
Transistors as Switches 296
From Transistors to Gates 297
Gates and Binary Logic 298
From Gates to Complex Circuits 300
Example: Designing Memory Circuitry 302
From Circuits to Microchips 303
The Integrated Circuit 303
Manufacturing Integrated Circuits 304
Packaging Microchips 305
Looking Ahead... 307
Chapter Summary 307
Review Questions 308
References 310

17 JavaScript Arrays 311
Arrays as Objects 312
Accessing Items in an Array 312
Assigning Items in an Array 313
From Strings to Arrays 315
The splitMethod for Strings 315
Example: Generating Acronyms 316
Arrays of Numbers 318
Example: Maintaining Dice Statistics (Approach 1) 321
Example: Maintaining Dice Statistics (Approach 2) 323
Example: ASCII Animations 324
Looking Ahead... 325
Chapter Summary 327
Supplemental Material and Exercises 328

18 Computers and Society 335
Positive Impact of Technology 335
Computers and Programs for Everyday Tasks 336
The Internet and Web as Information Sources 338
The Internet and Web as Communications Media 341
The Internet and Web for Commerce 342
Potential Dangers of Technology 344
Reliance on Complex Systems 344
Information Overload 345
Privacy and Security 346
The Digital Divide 347
Looking Beyond... 348
Chapter Summary 349
Review Questions 349
Endnotes 350
References 351

Appendix A: Browser Basics 352
Appendix B: Common Text Editors 358
Appendix C: HTML Reference 363
Appendix D: JavaScript Reference 366
Appendix E: random.jsLibrary 373
Appendix F: time.jsLibrary 374
Appendix G: arrays.jsLibrary 376
Index
Trademark Information
Photo Credits

Read More Show Less

Preface

Welcome to A Balanced Introduction to Computer Science. There are a number of reasons why you might be reading this text. Perhaps you have had limited experience with computers and would like to know more about how they work and how to control them. Or perhaps you recognize the marketability of programming and computer literacy, and would like to expand your skills for the future job market. Or perhaps you are just curious about the World Wide Web and want to know what all the hype is really about. In any case, you are embarking on what I hope will be an exciting, challenging, and rewarding experience.

Balancing Breadth and Depth

This text is different from most introductory computing texts in that it attempts to maintain a balance between computing breadth and programming depth. Traditionally, introductory texts have focused almost exclusively on one approach or the other. Breadth-based texts have emphasized a broad understanding of computers and computer science. By surveying a wide range of topics such as computer organization, graphics, networking, and technology in society, the intent is for students to experience the breadth of the field and develop a perspective to later understand and appreciate the role of technology in their lives. Alternatively, depth-based texts have focused more deeply on the role of programming in computing. The discipline of programming not only develops problem-solving skills, but also is central to many areas of computer science and thus important to appreciating their significance.

While each of these approaches has merit, there are potential weaknesses to either extreme. A breadth-based survey of computing canbe too superficial, presenting a broad perspective to students who lack the context or experience to fully comprehend it. And while programming depth can provide experience with many computing concepts, developing proficiency as a programmer and problem-solver requires extensive hands-on experience (especially when learning a complex language such as C++ or Java), and may not be directly relevant to all students.

The approach taken by this text is to balance breadth and depth. Chapters are included on concepts and issues in computing that are most relevant to the beginning student, including computer terminology, the Internet and World Wide Web, the history of computing, the organization and manufacture of computer technology, and technology's impact on society. Mixed among these breadth topics are chapters that introduce fundamental programming concepts and skills in a hands-on, tutorial format. Using the programming language JavaScript, students will develop skills in designing and implementing interactive Web pages. JavaScript's simplicity, natural interfaces, and seamless integration with the Web make it possible for novices to develop interesting and engaging programs quickly. In addition, JavaScript is always available (for free!) for anyone with a Web browser, making it easy to apply programming skills learned from this text to everyday problems.

In striking a balance between breadth and depth, the intent of this text is not to be a complete and exhaustive survey of computing or a reference on JavaScript. Breadth chapters focus on key ideas and concepts that are relevant to beginning students as they attempt to understand computing technology and the field of computer science. Likewise, programming chapters focus on JavaScript features that demonstrate fundamental programming concepts while also allowing for interesting and engaging applications. Links to other sources are provided for the interested reader, including supplemental material and exercises at the end of each programming chapter. This provides a broad perspective on computing as well as enough problem solving and programming depth to appreciate the significance of computer science.

Text Goals

There are three main goals to this text and its accompanying resources. First, it serves to expose the student to the breadth that is the field of computer science. Computer science is more than just the study of computers—it focuses on all facets of computation, from the design and analysis of algorithms (step-by-step sequences of instructions for carrying out tasks), to the engineering and manufacture of computer components, to the development of software systems. Through readings and the use of online resources, the student will study topics such as the history of computer technology, the underlying architecture of modern computers, the translation and execution sequence of programs, and the capabilities and limitations of computation. Using software simulators, the student will build virtual components of a computer and watch the flow of information as a program is translated and executed on the low-level machinery. Through this combination of reading and experimentation, hopefully these concepts will come alive for the student and provide a sense of what computer science is all about.

The second main goal of this text is to teach the student the fundamentals of programming. Programming is the process of solving problems on the computer, that is, devising solutions to specific tasks and formalizing those solutions in a language the computer can understand and execute. Programming is the central activity in computer science, providing an inroad to many of the interesting facets and challenges of the field. In learning to program, the student will be learning to analyze problems, think logically, formalize his or her thoughts, and solve problems. It is a discipline, since a systematic approach must be learned, but it is also a creative process, since novel approaches must be found to attack new problems. And since many of the skills developed in programming apply to problem solving in general, experience gained through this text should carry over to other disciplines as well. Finally, the fact that programs are written in the context of interactive Web pages highlights the relevance of programming to applications students use everyday.

The third main goal of this text is to demonstrate the scientific and interdisciplinary nature of computing. Research in various fields of study, most notably the mathematical and natural sciences, is becoming increasingly dependent on computers and programming. By studying and investigating applications in fields such as biology, physics, psychology, and even economics, the student will learn to apply his or her programming skills to a wide range of problems. In addition, the student will develop empirical skills that are common to all scientific endeavors.

Text Features

The balanced approach to computer science and programming taken by this text is evident in the layout of its chapters. There are two types of chapters in the text, those that use narrative to introduce key concepts of computing (i.e., the computer science breadth chapters: 1, 3, 6, 8, 10, 12, 14,16, and 18) and those that use a tutorial style to develop problem-solving and programming skills (i.e., the programming depth chapters: 2, 4, 5, 7, 9,11,13,15, and 17). The interleaving of these chapters is both intentional and important. It provides variety in the types of activities students will undertake, and thus may be more accommodating to students with different learning styles. Readings and classroom discussions serve as buffers between programming tutorials, allowing the student more time to assimilate programming concepts and skills before beginning the next tutorial. Finally, and perhaps most importantly, the interleaving of chapters supports the student's understanding and appreciation of the content. For example, after developing their own home pages in Chapter 2, students are better prepared to understand what the Web is and how it works in Chapter 3.

Features of the computer science breadth chapters:

  • They focus on topics that are most-relevant to a beginning student. The goal is not to inundate the student with details, but instead to emphasize the central ideas of that topic.
  • Illustrations are used whenever possible to illuminate key points.
  • Web-based visualization tools (accessible at the book's Web page: ) and then making modifications using new tools and constructs. Eventually, students create new programs for solving interesting and hopefully engaging problems.
  • Common errors and points of confusion are identified and discussed in special sections called "Common errors to avoid..."
  • Problem-solving and program design advice is provided in special sections called "Designer Secrets."
  • Each chapter includes a Chapter Summary that presents the key concepts and programming tools in a concise bullet list.
  • Supplemental material and exercises are provided at the end of each chapter for further study.

Appendices are provided at the end of this text as references. Appendices A and B provide tutorials on Web browsers and common text editors, which may be useful for students who are not already familiar with computers and the Web. Appendix C is an HTML reference, collecting all of the HTML elements used throughout the text in a table. Appendix D is a JavaScript reference, which similarly collects all of the JavaScript programming constructs. Appendix E provides a full listing of the random.js library, which is introduced in Chapter 5 and used in subsequent chapters.

Finally, a collection of nine laboratory assignments, each corresponding to a programming depth chapter, is available to supplement this text. These lab assignments emphasize experimentation, analysis, and the use of programs for solving interdisciplinary problems.

Advice for the Student

This text does not assume any previous experience with computer applications or programming. Certainly, familiarity with computers is a plus (e.g., word processing or email), but is not necessary. Basic computer terminology will be covered in the text as needed, and appendices are provided to assist the novice with simple computer skills, such as using a text editor, saving files to a disk, and browsing the Web. The goal is not to teach you everything you could ever want to know about computers and programming, but instead to provide you with a working set of skills and knowledge. Whenever possible, links to further readings will be provided in case you are interested in a topic and would like to learn more.

Through the use of readings, exercises, and experiments, this text aspires to provide you with a broad sense of what computer science is all about, while simultaneously developing depth as a problem solver and programmer. The choice of JavaScript as the medium for developing programming skills was specifically made to make this task simpler and also more relevant to students. JavaScript was designed to be a simple scripting language for controlling pages on the World Wide Web. Using JavaScript, you can control actions with the click of the mouse or generate dynamic images on a page. As such, learning JavaScript opens the door for many exciting applications on the Web. Similarities between JavaScript and the programming languages Java and C++ also mean that experience with JavaScript programming can be a steppingstone to larger-scale programming in these industry-strength languages.

Whether you choose to continue studies in computer science, or merely wish to apply computing skills to your everyday life, the balanced coverage of computing topics as found in this text should prove valuable to you. As always, enjoy and learn.

Advice for the Instructor

The layout of the chapters in this text is designed to provide maximum flexibility for the instructor. Depending on the preferences of the instructor and the goals of the particular course, the right balance and order of the material can be determined for your needs. If you are teaching a traditional non-major course, then a roughly even balance between breadth and depth probably makes sense. If the students are computer knowledgeable and taking this course as part of a computer science sequence, then some breadth topics may be skipped or shortened to allow for greater programming depth.

For example, the materials in this text have been used in a non-majors course at Creighton University. Since the majority of the students in this course are not planning to become computer science majors, the emphasis in the course is in providing a balance between essential topics and fundamental programming concepts. As such, there is a roughly 50/50 division between breadth and depth. Only the first six programming chapters (Chapters 2, 4, 5, 7, 9, and 11) are covered, each taking up one week of class time. While this may seem limiting (no loops?!), the material in these chapters is sufficient to impart the flavor of programming and also to allow the students to do interesting and engaging things. Mixed between these programming chapters are most of the breadth chapters, each taking up one or two 50-minute periods for lecture and/or discussion. Not all of the breadth chapters from the text are covered each semester, and the order may vary as well. For example, in a recent semester I skipped Chapter 8 and moved the content of Chapter 12 later in the course. In addition, I integrated four laboratories into the class periods, which served to apply the students' programming and problem-solving skills to interdisciplinary problems.

By contrast, these materials have been used in a very different course at Dickinson College. This particular course is the first in a two-course sequence that fulfills a laboratory science requirement for the college, and is also considered the first course in the computer science major. As such, greater expectations in terms of time and effort are expected of the students. Weekly twohour lab periods accompany the class, in which students complete lab assignments. Programming chapters are covered in two to three 50-minute periods each, and select breadth chapters are covered in one or two 50-minute periods.

One of the strengths of this book is the flexibility that it provides the instructor. An instructor might choose one of these extremes, or select a different balance of breadth and depth to best suit his or her students. For example, I envision that many instructors might choose to cover Chapter 13 (loops), perhaps substituting for in-class laboratories or certain breadth topics. The interleaving of breadth and depth chapters throughout the text is specifically designed to support the content and also vary the types of learning activities students engage in. While the relative order in which the programming depth chapters are covered is constrained by their content, it is certainly possible to omit or move some of the computer science breadth chapters. For example, some instructors might prefer covering the history of computers (Chapter 6) earlier in the course, or perhaps covering the chapters on how computers work (Chapter 14) and are built (Chapter 16) together.

As always, enjoy, teach, and learn.

Read More Show Less

Introduction

Welcome to A Balanced Introduction to Computer Science. There are a number of reasons why you might be reading this text. Perhaps you have had limited experience with computers and would like to know more about how they work and how to control them. Or perhaps you recognize the marketability of programming and computer literacy, and would like to expand your skills for the future job market. Or perhaps you are just curious about the World Wide Web and want to know what all the hype is really about. In any case, you are embarking on what I hope will be an exciting, challenging, and rewarding experience.

Balancing Breadth and Depth

This text is different from most introductory computing texts in that it attempts to maintain a balance between computing breadth and programming depth. Traditionally, introductory texts have focused almost exclusively on one approach or the other. Breadth-based texts have emphasized a broad understanding of computers and computer science. By surveying a wide range of topics such as computer organization, graphics, networking, and technology in society, the intent is for students to experience the breadth of the field and develop a perspective to later understand and appreciate the role of technology in their lives. Alternatively, depth-based texts have focused more deeply on the role of programming in computing. The discipline of programming not only develops problem-solving skills, but also is central to many areas of computer science and thus important to appreciating their significance.

While each of these approaches has merit, there are potential weaknesses to either extreme. A breadth-based survey of computing can betoo superficial, presenting a broad perspective to students who lack the context or experience to fully comprehend it. And while programming depth can provide experience with many computing concepts, developing proficiency as a programmer and problem-solver requires extensive hands-on experience (especially when learning a complex language such as C++ or Java), and may not be directly relevant to all students.

The approach taken by this text is to balance breadth and depth. Chapters are included on concepts and issues in computing that are most relevant to the beginning student, including computer terminology, the Internet and World Wide Web, the history of computing, the organization and manufacture of computer technology, and technology's impact on society. Mixed among these breadth topics are chapters that introduce fundamental programming concepts and skills in a hands-on, tutorial format. Using the programming language JavaScript, students will develop skills in designing and implementing interactive Web pages. JavaScript's simplicity, natural interfaces, and seamless integration with the Web make it possible for novices to develop interesting and engaging programs quickly. In addition, JavaScript is always available (for free!) for anyone with a Web browser, making it easy to apply programming skills learned from this text to everyday problems.

In striking a balance between breadth and depth, the intent of this text is not to be a complete and exhaustive survey of computing or a reference on JavaScript. Breadth chapters focus on key ideas and concepts that are relevant to beginning students as they attempt to understand computing technology and the field of computer science. Likewise, programming chapters focus on JavaScript features that demonstrate fundamental programming concepts while also allowing for interesting and engaging applications. Links to other sources are provided for the interested reader, including supplemental material and exercises at the end of each programming chapter. This provides a broad perspective on computing as well as enough problem solving and programming depth to appreciate the significance of computer science.

Text Goals

There are three main goals to this text and its accompanying resources. First, it serves to expose the student to the breadth that is the field of computer science. Computer science is more than just the study of computers--it focuses on all facets of computation, from the design and analysis of algorithms (step-by-step sequences of instructions for carrying out tasks), to the engineering and manufacture of computer components, to the development of software systems. Through readings and the use of online resources, the student will study topics such as the history of computer technology, the underlying architecture of modern computers, the translation and execution sequence of programs, and the capabilities and limitations of computation. Using software simulators, the student will build virtual components of a computer and watch the flow of information as a program is translated and executed on the low-level machinery. Through this combination of reading and experimentation, hopefully these concepts will come alive for the student and provide a sense of what computer science is all about.

The second main goal of this text is to teach the student the fundamentals of programming. Programming is the process of solving problems on the computer, that is, devising solutions to specific tasks and formalizing those solutions in a language the computer can understand and execute. Programming is the central activity in computer science, providing an inroad to many of the interesting facets and challenges of the field. In learning to program, the student will be learning to analyze problems, think logically, formalize his or her thoughts, and solve problems. It is a discipline, since a systematic approach must be learned, but it is also a creative process, since novel approaches must be found to attack new problems. And since many of the skills developed in programming apply to problem solving in general, experience gained through this text should carry over to other disciplines as well. Finally, the fact that programs are written in the context of interactive Web pages highlights the relevance of programming to applications students use everyday.

The third main goal of this text is to demonstrate the scientific and interdisciplinary nature of computing. Research in various fields of study, most notably the mathematical and natural sciences, is becoming increasingly dependent on computers and programming. By studying and investigating applications in fields such as biology, physics, psychology, and even economics, the student will learn to apply his or her programming skills to a wide range of problems. In addition, the student will develop empirical skills that are common to all scientific endeavors.

Text Features

The balanced approach to computer science and programming taken by this text is evident in the layout of its chapters. There are two types of chapters in the text, those that use narrative to introduce key concepts of computing (i.e., the computer science breadth chapters: 1, 3, 6, 8, 10, 12, 14,16, and 18) and those that use a tutorial style to develop problem-solving and programming skills (i.e., the programming depth chapters: 2, 4, 5, 7, 9,11,13,15, and 17). The interleaving of these chapters is both intentional and important. It provides variety in the types of activities students will undertake, and thus may be more accommodating to students with different learning styles. Readings and classroom discussions serve as buffers between programming tutorials, allowing the student more time to assimilate programming concepts and skills before beginning the next tutorial. Finally, and perhaps most importantly, the interleaving of chapters supports the student's understanding and appreciation of the content. For example, after developing their own home pages in Chapter 2, students are better prepared to understand what the Web is and how it works in Chapter 3.

Features of the computer science breadth chapters:

  • They focus on topics that are most-relevant to a beginning student. The goal is not to inundate the student with details, but instead to emphasize the central ideas of that topic.
  • Illustrations are used whenever possible to illuminate key points.
  • Web-based visualization tools (accessible at the book's Web page: prenhall.com/reed) are provided to complement many of the chapters and support active learning. For example, chapter 14 integrates a suite of simulators that allows the student to explore the internal workings of computers.
  • Each chapter ends with a Chapter Summary and Review Questions that encourage reflection and the integration of content from that chapter.

Features of the programming depth chapters:

  • They are presented in a tutorial style, recognizing that the only way to learn programming (and, more generally, problem solving) is to actually do it.
  • Exercises follow an incremental approach, allowing students to master programming concepts by first studying existing programs (which are accessible at the book's Web page: prenhall.com/reed) and then making modifications using new tools and constructs. Eventually, students create new programs for solving interesting and hopefully engaging problems.
  • Common errors and points of confusion are identified and discussed in special sections called "Common errors to avoid..."
  • Problem-solving and program design advice is provided in special sections called "Designer Secrets."
  • Each chapter includes a Chapter Summary that presents the key concepts and programming tools in a concise bullet list.
  • Supplemental material and exercises are provided at the end of each chapter for further study.

Appendices are provided at the end of this text as references. Appendices A and B provide tutorials on Web browsers and common text editors, which may be useful for students who are not already familiar with computers and the Web. Appendix C is an HTML reference, collecting all of the HTML elements used throughout the text in a table. Appendix D is a JavaScript reference, which similarly collects all of the JavaScript programming constructs. Appendix E provides a full listing of the random.js library, which is introduced in Chapter 5 and used in subsequent chapters.

Finally, a collection of nine laboratory assignments, each corresponding to a programming depth chapter, is available to supplement this text. These lab assignments emphasize experimentation, analysis, and the use of programs for solving interdisciplinary problems.

Advice for the Student

This text does not assume any previous experience with computer applications or programming. Certainly, familiarity with computers is a plus (e.g., word processing or email), but is not necessary. Basic computer terminology will be covered in the text as needed, and appendices are provided to assist the novice with simple computer skills, such as using a text editor, saving files to a disk, and browsing the Web. The goal is not to teach you everything you could ever want to know about computers and programming, but instead to provide you with a working set of skills and knowledge. Whenever possible, links to further readings will be provided in case you are interested in a topic and would like to learn more.

Through the use of readings, exercises, and experiments, this text aspires to provide you with a broad sense of what computer science is all about, while simultaneously developing depth as a problem solver and programmer. The choice of JavaScript as the medium for developing programming skills was specifically made to make this task simpler and also more relevant to students. JavaScript was designed to be a simple scripting language for controlling pages on the World Wide Web. Using JavaScript, you can control actions with the click of the mouse or generate dynamic images on a page. As such, learning JavaScript opens the door for many exciting applications on the Web. Similarities between JavaScript and the programming languages Java and C++ also mean that experience with JavaScript programming can be a steppingstone to larger-scale programming in these industry-strength languages.

Whether you choose to continue studies in computer science, or merely wish to apply computing skills to your everyday life, the balanced coverage of computing topics as found in this text should prove valuable to you. As always, enjoy and learn.

Advice for the Instructor

The layout of the chapters in this text is designed to provide maximum flexibility for the instructor. Depending on the preferences of the instructor and the goals of the particular course, the right balance and order of the material can be determined for your needs. If you are teaching a traditional non-major course, then a roughly even balance between breadth and depth probably makes sense. If the students are computer knowledgeable and taking this course as part of a computer science sequence, then some breadth topics may be skipped or shortened to allow for greater programming depth.

For example, the materials in this text have been used in a non-majors course at Creighton University. Since the majority of the students in this course are not planning to become computer science majors, the emphasis in the course is in providing a balance between essential topics and fundamental programming concepts. As such, there is a roughly 50/50 division between breadth and depth. Only the first six programming chapters (Chapters 2, 4, 5, 7, 9, and 11) are covered, each taking up one week of class time. While this may seem limiting (no loops?!), the material in these chapters is sufficient to impart the flavor of programming and also to allow the students to do interesting and engaging things. Mixed between these programming chapters are most of the breadth chapters, each taking up one or two 50-minute periods for lecture and/or discussion. Not all of the breadth chapters from the text are covered each semester, and the order may vary as well. For example, in a recent semester I skipped Chapter 8 and moved the content of Chapter 12 later in the course. In addition, I integrated four laboratories into the class periods, which served to apply the students' programming and problem-solving skills to interdisciplinary problems.

By contrast, these materials have been used in a very different course at Dickinson College. This particular course is the first in a two-course sequence that fulfills a laboratory science requirement for the college, and is also considered the first course in the computer science major. As such, greater expectations in terms of time and effort are expected of the students. Weekly twohour lab periods accompany the class, in which students complete lab assignments. Programming chapters are covered in two to three 50-minute periods each, and select breadth chapters are covered in one or two 50-minute periods.

One of the strengths of this book is the flexibility that it provides the instructor. An instructor might choose one of these extremes, or select a different balance of breadth and depth to best suit his or her students. For example, I envision that many instructors might choose to cover Chapter 13 (loops), perhaps substituting for in-class laboratories or certain breadth topics. The interleaving of breadth and depth chapters throughout the text is specifically designed to support the content and also vary the types of learning activities students engage in. While the relative order in which the programming depth chapters are covered is constrained by their content, it is certainly possible to omit or move some of the computer science breadth chapters. For example, some instructors might prefer covering the history of computers (Chapter 6) earlier in the course, or perhaps covering the chapters on how computers work (Chapter 14) and are built (Chapter 16) together.

As always, enjoy, teach, and learn.

Read More Show Less

Customer Reviews

Average Rating 4
( 2 )
Rating Distribution

5 Star

(1)

4 Star

(0)

3 Star

(1)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)