Databases
Transcription
Databases
11 Databases Chapter Contents X SECTION A: FILE AND DATABASE CONCEPTS Database Basics Database Models X SECTION B: DATA MANAGEMENT TOOLS Data Management Software Database Management Systems Databases and the Web XML X SECTION C: DATABASE DESIGN Defining Fields Normalization Organizing Records Designing the Interface Designing Report Templates Loading Data X X After reading this chapter, you will be able to answer the following questions by completing the outcomes-based Learning Objectives Checkpoints on page 669. SECTION D: SQL 1 What makes databases such an essential component of modern life? SQL Basics Adding Records Searching for Information Updating Fields Joining Tables 2 Can databases be used to predict customer behavior and find terrorists? SECTION E: DATABASE SECURITY 5 What’s the difference between flat files and other database models? Database Vulnerabilities Database Security Measures Database Security Regulations What Individuals Can Do X Learning Objectives ISSUE: DO YOU WANT A NATIONAL ID CARD? 3 What are the basic components of a database? 4 Why are relationships a significant aspect of databases? 6 What is the best software for creating and managing databases? 7 Is it possible to access databases using the Web? 8 What is the significance of field types in a database? 9 Why do errors creep into databases? 10 How do database designers use normalization to reduce data redundancy? X COMPUTERS IN CONTEXT: MEDICINE X NEW PERSPECTIVES LABS 11 What role do sorting and indexing play in making databases more versatile? X REVIEW ACTIVITIES 12 Is it difficult to create reports from a database? X ON THE WEB 13 What is SQL? 14 How safe is the data in a database? 15 Have lawmakers kept up with technology by enacting laws and regulations pertaining to databases? 16 Can individuals take steps to protect their privacy when so much personal data is stored in corporate and government databases? Web Site Multimedia and Interactive Elements Visit the NP2011 Web site to access additional resources w that accompany this chapter. When using the BookOnCD, or other BookOn products, the are clickable to access multimedia resources. X icons 11 DATABASES Pre-Assessment Quiz Take the pre-assessment quiz to find out how much you know about the topics in this chapter. X Apply Your Knowledge The information in this chapter will give you the background to: • Decide if you can use a simple tool, such as a spreadsheet, for your own databases • Take whatever steps you can to protect personal data that is stored on corporate and government databases • Create an efficient and effective database and then use it to organize, find, and report information • Evaluate the pros and cons of proposals for using database technology in controversial applications such as profiling terrorists, exploring genetics, and predicting shopping habits • Post database reports on the Web • Formulate basic SQL queries Try It HOW DOES “BAD” DATA GET INTO DATABASES? Databases are everywhere and information about you is in many of them. You might wonder if that information is accurate. Data entry mistakes are easy to make, but a well designed database can prevent some common data entry errors. To start exploring databases, you can check the design of a database that’s on most computers—the e-mail address book. 1. Start your e-mail program and access its address book function. 8. Try entering invalid data in other fields. What happens if you enter an invalid state abbreviation, like OP? 2. Use the menu bar or toolbar option to add an address or contact. 9. It is not necessary to save the address you’ve entered. Close the address book. As you read Chapter 11, you’ll discover the significance of field normalization, case sensitivity, and validity checks. 3. A typical address book stores data for each person in a record. The record is divided into fields, such as name and e-mail address. Many address books also store additional data such as phone numbers and physical addresses. How many fields does your address book provide? 4. Begin to fill in fields with data for one of your friends. Are the field names clearly labeled so you know what you’re supposed to enter into them? 5. Does your address book divide the first name and last name into two fields or does it combine that data into one field? 6. Try entering the data for the Name field in all uppercase letters. When you move to the next field, does the database maintain the uppercase format? Go back and modify the field using an initial capital letter. 7. Try entering an e-mail address that does not contain an @ sign. Does the database accept e-mail addresses that are not valid? 610 SECTION CHAP TER 11 A File and Database Concepts DATABASES ARE AN ESSENTIAL aspect of modern life. Most businesses could not function without them and they are the backbone of popular Internet services such as iTunes, MySpace, Facebook, and eBay. Section A begins the chapter with an overview of databases and the many ways they are used today. Throughout the chapter, many of the examples focus on Vintage Music Shop, a fictitious Web-based music store that specializes in LP vinyl record albums. Vintage Music Shop’s information system stores data about album prices, monitors inventory levels, maintains customer data, and reports which albums are top sellers. It also keeps track of customer orders, prints shipping labels, and produces quarterly sales reports. The characteristics of Vintage Music Shop’s database are typical of many databases you encounter on and off the Web. DATABASE BASICS What is a database? In the broadest definition, a database is a collection of information. Today, databases are typically stored as computer files. A database can be a simple personal list, such as your address book, or it can be a massive list, such as New York City telephone numbers. Databases can even incorporate several lists. For example, the database for an e-commerce site, such as Amazon.com, includes inventory lists and customer lists. How is database information used? The tasks associated with creating, maintaining, and accessing the information in databases are referred to as data management, file management, or database management. Databases can be used in a variety of ways, from a simple tool for collecting and tracking data, to a comprehensive source for making decisions and predicting future trends. • Collect and store data. A database is a collection of data, but that collection typically grows as additional data is obtained. Data can be collected and entered manually or electronically. For example, you manually add names to your address book. The Red Cross manually adds new names to its donor list as donations arrive. Wal-Mart updates its inventory by electronically scanning RFID tags affixed to pallets of new merchandise. FedEx clerks use bar code readers to enter package information into the shipping database. Information can also be removed from a database when it is no longer needed. Keeping a database lean can speed up searches and conserve storage space. However, historical data can be valuable, so rather than delete it, old data is often removed from an active database and moved to an archive. As a consumer, you should be aware that records can remain in databases and archives years after transactions have been completed, your name has been “removed,” or your records are designated as “inactive.” (See Figure 11-1.) • Update data. One of the primary database management activities is keeping data up to date. As with collecting data, updates can be made manually or electronically. For example, your friend moves to a different FIGURE 11-1 Database data that is no longer current is typically moved to an archive, which can be stored on a hard drive, secondary server, or tape. High-volume archives can be stored in a tape silo containing thousands of data tapes and a tape robot that pulls tapes off the shelves and loads them into a tape drive. 611 DATABASES apartment, so you have to change her address in your address book. If an employee claims an additional deduction for a new baby, her employer has to update the payroll database. When a Best Buy customer purchases a digital camera, the store’s point-of-sale system automatically decreases the quantity of that item in the inventory database. Database updates are sometimes problematic. Data entry errors can result in database inaccuracies. When meter readers issue tickets for improperly parked vehicles, they write the tickets by hand. License plate numbers of ticketed vehicles are later entered into a database. If the data entry operator misreads or miskeys a license plate number, the database will contain inaccurate data and the wrong person could receive a Failure to Pay notice. Data entry errors are not always easy to correct (Figure 11-2). Horror stories about data entry errors abound, including individuals—very much alive—whose records were mistakenly marked “deceased” and victims of identity theft who had trouble restoring their credit ratings. Organizations that maintain databases should be held accountable for data accuracy, especially when the data relates to individuals. Most countries, however, have only rudimentary regulations that offer consumers minimal recourse for mopping up after database snafus. FIGURE 11-2 Data entry errors that pertain to confidential information are sometimes difficult to rectify until the correct data is validated and approved. • Organize and output data. The data in a typical database is stored in no particular order. New data is appended to the end of the file because it is too cumbersome to insert it in, say, alphabetical order, then rearrange all the records that come after it. Reports created with this jumble of raw data would not be particularly useful. To make data into a more suitable report, it can be organized in a variety of ways. It can be alphabetized, placed in numeric order, grouped, and subtotaled. Database output is easy to organize and reorganize without actually rearranging the physical data on the disk. A database can be configured so that a librarian can extract a list of patrons with overdue books organized by date, while at the same time a student can look for a list of books written by Elizabeth Peters. The same database can be configured to print envelopes for a library fund-raiser in order by ZIP code to take advantage of cost-saving bulk mail rates. • Distribute data. Databases, combined with mail merge and other computerized technologies, offer efficient ways to distribute information to customers, employees, the press, government agencies, and other companies. Your monthly electric bill is generated from the power company’s database. That recall notice you received about the braking system in your 6-monthold car, your monthly bank statement, your class schedule for next semester all are generated from databases. Unfortunately, databases also generate mountains of Publishers Clearing House mailings and an irritating amount of v1agr*a spam that lands in your e-mail Inbox. Today’s digital databases are much more portable than oldfashioned paper-based databases, but the convenience of digital formats makes computer databases easier to misuse. Spammers, junk mailers, and telemarketers pay only a fraction of a penny for each name on a mailing list or call list. Millions of records can be easily copied, sent over the Internet, and stored on a single data DVD. The legal system has yet to iron out details regarding database ownership and under what conditions it is allowable to share database data. • Find data. Databases make it easy to locate information. You can use an online library card catalog to find books. A pharmacist can check a pharmaceutical database for drug interactions before filling a prescrip- 11 612 SECTION A, CHAP TER 11 tion. A computer tech can check a manufacturer’s database to find the part number for replacing your computer’s fried hard drive. In the software chapter, you learned about several ways to locate data in a database. A query language, such as SQL, offers a set of commands to help you formulate a search such as Select from MusicCollection where Artist = ‘Elvis’ that finds all the songs performed by Elvis Presley in your MP3 music collection. Natural query languages allow you to search by asking questions such as Show me a list of Elvis songs. You can also query by example using a fill-in form, like the one in Figure 11-3. FIGURE 11-3 A query-by-example interface displays a form and formulates a query based on what the user enters. • Analyze data. A database includes certain facts as raw data, such as names, addresses, bank balances, prices, and merchandise counts. Analyzing this data using statistics and other interpretive tools can produce information that is not readily apparent from simply looking at raw data. For example, a nationwide chain of bookstores issues discount cards and tracks books purchased using each card. An analysis of sales data shows that customers who purchase self-help books typically purchase other similar books within six months. Nowhere in the database does it explicitly state “self-help book purchasers tend to buy additional self-help books.” This conclusion is new information that can be gleaned from the raw data. Techniques for data analysis include data mining and OLAP. What is data mining? Data mining refers to the process of analyzing existing database information to discover previously unknown and potentially useful information, including relationships and patterns. The data accessed by data mining and other analysis techniques is often stored in a data warehouse, which is a repository for data from more than one database. Data from operational databases—those used for daily transactions—is transferred to a data warehouse where it can be combined with data from other databases to enhance the data set. Data mining can reveal relationships. For example, an analysis of over 10 million policies and accident claims in the Farmers Insurance Group database revealed a relationship between age, marital status, second car ownership, sportscar ownership, and accident claims. Married baby boomers who owned a full size car or minivan in addition to a sportscar tended to make far fewer claims than younger, single sportscar owners. As a result of the data analysis, lower insurance rates were offered to sportscar owners who fit the low-risk profile. 613 DATABASES A more complex type of data analysis can reveal sequences of events that predict future trends and patterns. Predictive analytics refers to a branch of data mining that focuses on predicting future probabilities and trends. It makes use of statistical algorithms, neural networks, and optimization research to discover patterns in data. For example, researchers might use predictive analytics to predict customer behavior, unmask terrorists, forecast storm paths, or determine genetic susceptibility to certain diseases. Data mining and predictive analytics are sometimes criticized for finding relationships, patterns, and trends when none actually exist. You could, for example, use data mining to look for trends in lottery numbers and locations. Suppose that data mining reveals that October’s winning numbers always include more even numbers than odd ones, and were purchased at convenience stores. Unhappily, probability theory would tell you that the pattern is an anomaly and won’t help you predict next week’s winning numbers. The misuse of data mining is sometimes called data dredging or data fishing. What is OLAP? One of today’s most advanced data analysis methods, OLAP (online analytical processing), allows decision makers to look for relationships between multiple data dimensions. It is a technology used in the context of business intelligence and decision support systems that helps decision makers by providing timely, accurate, and relevant information for business decisions. To understand how OLAP works, imagine a sales history database for a nationwide chain of bookstores. A manager might use OLAP to look for trends in fiction, nonfiction, and reference book sales across three states and over a three-month time span. The analysis includes three dimensions—book type, store location, and month. OLAP might show that trends seem to originate in State A and spread to State C, then to State B. Based on this analysis, a decision maker could assume that book-buying trends in State A can be used to stock bookstores in the other states. To analyze and mine complex data sets, decision makers sometimes use executive dashboard software, which provides tools for formulating OLAP queries and displaying results visually (Figure 11-4). FIGURE 11-4 Executive dashboard software helps decision makers visualize data from complex data sets. 11 614 SECTION A, CHAP TER 11 DATABASE MODELS What is the underlying structure of a database? Computer databases evolved from manual filing systems. A filing cabinet full of folders and papers would be classified as an unstructured file because every document has a unique structure and contains different kinds of data. For example, some documents might be old receipts, others could be photos or product brochures, whereas other documents might be handwritten letters. The electronic equivalent to this jumble of information might be the collection of documents and graphics stored at a Web site. In contrast, library card catalogs and Rolodexes would be classified as structured files. A structured file uses a uniform format to store data for each person or thing in the file. The focus of this chapter is on databases that are constructed with structured files because they comprise the majority of databases used in business, e-commerce, and government activities. Structured files can be used in different ways to build databases. The underlying structure of a database is referred to as a database model. Figure 11-5 lists basic database models. Some of these models are becoming obsolete, whereas other models are just beginning to develop a track record. Understanding the characteristics of each model will help you determine which type of database is right for your needs, and understand why certain types of databases are popularly deployed for various business and organizational applications. What’s the simplest way to store data? The simplest model for storing data is a flat file that consists of a single, two-dimensional table of data elements. Each row in the table is a record, and each column of the table is a field. Computer databases typically display records as rows in a table or as forms as shown in Figure 11-6. FIGURE 11-5 Database Models • • Flat file • • • • • Networked database Hierarchical database Relational database Dimensional database Object database Object-relational database FIGURE 11-6 Records can be displayed as rows in a table or as forms. X Use your digital textbook to review basic database terminology and take a tour of Microsoft Access. Each column of the table represents a field. In a table, a row contains the data for one record in the database. A database record can also be displayed as a form. 615 DATABASES A field contains the smallest unit of meaningful information, so you might call it the basic building block for a structured file or database. Each field has a unique field name that describes its contents. For example, in an iTunes playlist, the field called Name would hold the name of a song, the Time field holds the song length, the Artist field holds the name of the performer, the Album field holds the name of the album that the song came from, and the Genre field holds the type of song. A field can be variable length or fixed length. A variable-length field is like an accordion—it expands to fit the data you enter, up to some maximum number of characters. A fixed-length field contains a predetermined number of characters (bytes). The data you enter in a fixed-length field cannot exceed the allocated field length. Moreover, if the data you enter is shorter than the allocated length, blank spaces are automatically added to fill the field. The fields in Figure 11-7 are fixed length. The underscores indicate the number of characters allocated for each field. FIGURE 11-7 Name: Can’t Buy Me Love_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Time: 2:11 _ Artist: The Beatles _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Album: A Hard Day’s Night _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Genre: Rock _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Field name Underscores indicate length of fixed-length fields Field data When setting up a database, the length of text fields should be adequate to store the longest names or titles. The Time field can be short because the longest tracks are 60 minutes or less, which can be expressed in the format MM:SS, where MM is minutes and SS is seconds. In the world of databases, a record refers to a collection of data fields. You’re already familiar with several types of records, such as student records, medical records, and dental records. Each record stores data about one entity—a person, place, thing, or event. For example, a record in an iTunes playlist stores fields of data about a digital music track. The template for a record is referred to as a record type. It contains field names, but no data. Creating record types is part of the design process that lets database designers specify the information needed to complete each record. A record type, similar to a blank form, is usually shown without any data in the fields. A record that contains data is referred to as a record occurrence, or simply a record (Figure 11-8). Record Type Name Time Artist Album Genre R e c o rd O ccurrence Name Can’t Buy Me Love Time 2:11 Artist The Beatles Album A Hard Day’s Night Genre Rock FIGURE 11-8 A record type (left) is simply a list of fields, whereas a record occurrence (right) contains data for a particular entity. In this case, the entity is a track called “Can’t Buy Me Love” on The Beatles’ album A Hard Day’s Night. 11 616 SECTION A, CHAP TER 11 The flat file model is the foundation for simple databases, such as an e-mail address book, an iTunes playlist, or the addresses for a mail merge. It is also the model used for spreadsheets. With a flat file, you can search for, update, group, and organize records. Each record in a flat file, however, is an independent entity and no relationships can be established between records. For example, you can’t set up links between all of The Beatles’ songs in your iTunes playlist. If you are listening to “A Hard Day’s Night,” you can’t automatically link to The Beatles’ next most popular top ten song. Why would a database need to keep track of relationships? FIGURE 11-9 In database jargon, a relationship is an association between data that’s stored in different record types. Relationships are important because there are important associations among the real-life things that database data represents. There are, for example, relationships between customers and the goods they purchase and between an album and the song tracks it contains. Although you can work with an iTunes playlist without establishing relationships, other databases, such as the one used at Vintage Music Shop, are more efficient if relationships can be defined. An entity-relationship diagram depicts each record type as a rectangle. Relationships and cardinality are shown by connecting lines. An important aspect of the relationship between record types is cardinality. Cardinality refers to the number of associations that can exist between two record types. For example, a Vintage Music Shop customer can place more than one order. The reverse is not true, however. A particular order cannot be placed jointly by two customers. When one record is related to many records, the relationship is referred to as a one-to-many relationship. In contrast, a many-to-many relationship means that one record in a particular record type can be related to many records in another record type, and vice versa. For example, an album contains many songs. At the same time, a song could be included on several different albums. George Harrison’s song “Something” was included in The Beatles’ Abbey Road album and the best hits release, The Beatles 1. A one-to-one relationship means that a record in one record type is related to only one record in another record type. This kind of relationship is rare in the world of databases. It is sometimes used to conserve disk space when an item of information will not be stored for every record in the database. For example, the marketing director at Vintage Music Shop sometimes wants to include a description of an album in the database, but only for historically notable albums. If a Description field is included in the Albums record type, it will be empty for most records. Empty fields take up space on the disk, so it’s not desirable to have fields that will most likely be blank. Creating another record type, called Album Description, allows this data to be stored efficiently. Only historically significant albums would have a corresponding Album Description record. The Album record and its description record would have a one-to-one relationship. The relationship between record types can be depicted graphically with an entity-relationship diagram (sometimes called an ER diagram or ERD). Figure 11-9 shows ERDs for one-to-many, many-to-many, and one-to-one relationships. Customer Album One-to-many relationship One customer can order many albums. Album Song Many-to-many relationship One album contains many songs, and a song can be included on several different albums. Album Description One-to-one relationship An album has only one description. KEY TO ERD SYMBOLS The crossbar indicates exactly one occurrence. The crossbar and crow’s foot indicate one or more occurrences. 617 DATABASES What kind of databases track relationships? Except for flat files, other database models allow you to track relationships. The way database models work with relationships is a key to their differences. A hierarchical database allows one-to-one and one-to-many relationships, linked in a hierarchical structure. A network database uses a mesh-like structure to offer the additional capacity to define many-to-many relationships. Compare the structures of these two database models in Figure 11-10 and Figure 11-11. FIGURE 11-10 Customer Album Track Album Track Order Order Order Album In this hierarchical database, Customer, Album, Track, and Order are record types. All of the relationships are one-tomany. Album Album Album Album Track FIGURE 11-11 A network database allows many-to-many relationships as well as one-to-many relationships between record types. Customer One-to-many relationships Order Album Album Track Order Order Album Track Album Track Album Album Many-to-many relationships Album Track Although hierarchical and network databases offer lightning quick searches and utilize a minimum amount of disk space for storage, they are rarely used today for business, consumer, and other mainstream database applications. Instead, they remain in use only for specialized applications. For example, Windows uses a hierarchical database to store Registry data that keeps track of the software and hardware configuration of your PC. The DNS system that keeps track of Internet addresses uses a network database structure. Outside of such specialized applications, databases built on hierarchical and network models have been replaced by relational or object databases. 11 618 SECTION A, CHAP TER 11 What’s a relational database? A relational database stores data in a collection of related tables. Each table is a sequence of records, similar to a flat file. All the records in a table are of the same record type. Each row of a table is equivalent to a record. Each column of the table is equivalent to a field. A relational database typically contains several tables. For example, the Vintage Music Shop’s database uses six tables to store data, as shown in Figure 11-12. Vintage Music Shop stores data in six tables. TRACKS A L B U M DE S CRIP T IO N Cat# FIGURE 11-12 Cat# Description TrackTitle Track Length TrackSample O R D E R DE T AILS OrderNumber Cat# QTY DiscountPrice ORDERS OrderNumber CustomerNumber TotalPrice OrderDate C U S T O M ERS CustomerNumber FirstName LastName Street City ALBUMS Cat# AlbumTitle ArtistName Release Date In Stock Value LPM-2256 G.I. Blues Elvis Presley 10/01/1960 4 20.00 7499-2 Between the Buttons Rolling Stones 02/06/1967 1 13.99 LSP-246 Blue Hawaii Elvis Presley 10/01/1961 5 50.00 N16014 Surfin’ Safari Beach Boys 10/29/1962 8 18.95 In a relational database, relationships are specified by joining common data stored in the fields of records in different tables. For example, most albums contain many tracks, an example of a one-to-many relationship. The Vintage Music database stores general information about an album in one table and information about individual tracks in another table. Both tables have a Cat# field containing album numbers and that field can be used to establish a relationship between the two tables, as shown in Figure 11-13. FIGURE 11-13 A relationship in this database shows that “Blue Suede Shoes,” “Frankfort Special,” and “Wooden Heart” are all tracks from the G.I. Blues album. ALBUMS Cat# AlbumTitle ArtistName Release Date In Stock Value LPM-2256 G.I. Blues Elvis Presley 10/01/1960 4 20.00 7499-2 Between the Buttons Rolling Stones 02/06/1967 1 13.99 T RACKS LSP-246 N16014 10/1/1961 Track5 Length Surfin’ Safari LPM-2256 Dave Matthews 2/27/2001 Blue Suede Shoes 104 8 Blue Hawaii The Cat# LPM-2256 links records in both tables that refer to Elvis Presley’s album G.I. Blues. Cat# Elvis Presley TrackTitle 50.00 TrackSample 18.95 BlueSuede.mp3 LPM-2256 Frankfort Special 132 FrankSpec.mp3 LPM-2256 Wooden Heart 163 WoodenHE.mp3 7499-2 Ruby Tuesday 197 RubyT.mp3 619 DATABASES The way a relational database establishes relationships allows the tables to be essentially independent, but the tables can be joined for a particular task as required. Relationships can be added, changed, or deleted on demand, making this database model very flexible. The relational database model’s flexibility is a major factor in its use for the majority of databases that handle the everyday query and reporting needs of businesses, government agencies, and organizations. It is also the database model supported by many consumer-level database products, such as Microsoft Access. What’s a dimensional database? A dimensional database, sometimes referred to as a multidimensional database, organizes relationships over three or more dimensions. Each field is contained within a cell that can be accessed directly from a query or from following a relationship. Dimensional databases are an extension of the relational database model in which tables are stacked in addition to being linked side by side. One way to visualize the dimensional database model is as a three-dimensional cube (Figure 11-14). FIGURE 11-14 March 2011 February 2011 January 2011 A data cube represents data in multiple dimensions. This data cube has three dimensions— months, states, and book categories. Nonfiction The orange cube represents data for nonfiction books sold in Indiana in January 2011. Fiction Reference Michigan Colorado Indiana Compared to a relational database with complex queries based on relationships and joins, a dimensional database offers a simpler way to visualize data and formulate queries. Dimensional databases are easy to maintain and efficient to use because data is stored in the same way as it is viewed. However, formulating and populating a dimensional database requires more expertise than a relational database. Consequently, dimensional databases are most often deployed for data analysis and decision support systems in which data from operational databases is moved into a dimensional data warehouse before being queried by managers. 11 620 SECTION A, CHAP TER 11 What’s an object database? An object database, also referred to as an object-oriented database, stores data as objects, which can be grouped into classes and defined by attributes and methods. The Programming chapter covers object-oriented terminology in detail; but in the context of object databases, a class defines a group of objects by specifying the attributes and methods these objects share. The attributes for an object are equivalent to fields in a relational database. A method is any behavior that an object is capable of performing. For example, Vintage Music Shop has to keep track of objects that represent customer orders. To set up an object database for this task, the first step would be to define a class called Orders that can hold data such as the order number, order date, customer number, and albums ordered. A method called Check Inventory can be defined for this class. Its job is to make sure the album is in stock. Object databases excel in representing objects that have slightly different attributes, which is the case in many real-world business applications. Suppose that Vintage Music Shop accepts phone orders and Web orders. These two types of orders differ slightly because an e-mail address is used to communicate with Web customers, whereas a telephone number and order clerk name need to be recorded for customers who order by phone. A relational database would require two record types, but an object database can be set up so that the Orders class has two derivative classes, one for Web customers and one for phone customers. Figure 11-15 illustrates classes, derivative classes, and methods in an object database. Attributes OrderNumber OrderDate CustomerNumber OrderedAlbums Derivative Class: Phone Orders Methods Check inventory FIGURE 11-15 An object database can easily store data about different types of orders. A class called Orders holds data and methods common to all types of orders. A derivative class called Phone Orders inherits all the characteristics of Orders, but it has attributes and methods unique to orders placed by telephone. Web Orders is a derivative class that has attributes and methods unique to orders placed over the Web. Class: Orders Derivative Class: Web Orders Attributes PhoneNumber OrderClerkName Attributes EmailAddress Methods Enter order information Cancel/Modify order Methods Process Web order form Cancel/Modify order E-mail confirmation The object database model is newer than the relational model and has not yet gained a substantial foothold in mainstream database applications. Its advocates, however, cite advantages over rival database models, including the idea that object databases best reflect real-world entities and relationships. 621 DATABASES What’s an object-relational database? The term object-relational FIGURE 11-16 database is used to describe a variety of technologies that combine object-oriented and relational concepts. The object-relational database model has been described as an attempt to add object-oriented characteristics to tables. Basically, an object-relational database is organized as one or more tables, just as in a traditional relational database. Objectrelational databases, however, have the flexibility to store unique types of data and program code necessary to access that data. A relational database sends a file name to an external player (top), but an object-relational database can store the song data and the routine to play it. To understand the distinction between relational databases and objectrelational databases, suppose you restructure your iTunes playlist as a table in a relational database containing fields for the song title, artist, time, and so on. The database does not actually contain the .m4p data for the song, but it probably contains the name of the computer file that holds the song. When you select a song to play, the database doesn’t play it. Instead, the file name is passed to your iTunes jukebox, which plays the song. In contrast, you could use an object-relational database to store the actual digital data for songs in a field called SongFile. Your database could also hold a routine called PlaySong. If you select the database record for “Blue Suede Shoes,” for example, the database uses its PlaySong routine to play the data stored in the SongFile field, so there is no need to use external music player software (Figure 11-16). Most of today’s relational database tools offer object-oriented features. For example the popular database query language SQL, which you’ll learn about later in the chapter, can be used to define custom functions to process the data in a database. However, object-relational hybrids do not typically support a full set of object-oriented characteristics. The distinction is somewhat technical. Suffice it to say that database models are still evolving as the best elements are blended and optimized to meet the needs of today’s complex database applications. Relational Database TRACKS Title TrackName Yesterday Yesterday.m4p Yesterday.m4p iTunes Jukebox Object-relational Database ALBUMS Title SongFile PlaySong Do while SongFile Yesterday Open(audioport) SECTION A QuickCheck 1. Data refers to the process 4. of analyzing existing information in databases to discover previously unknown and potentially 5. file is a structured file In an ERD, relationships and are shown by connecting lines. processing Online 6. allows decision makers to look for relationships between multiple data dimensions. 3. A(n) containing only one record type. useful information. 2. Check(bitrate) A database consists of one or more record that contain data. A(n) database is one that can link tables through shared fields on demand. 7. The database model uses classes, derivative classes, and methods to reflect real-world relationships. X CHECK ANSWERS 11 622 SECTION CHAP TER 11 B Data Management Tools ONE OF THE FIRST decisions to make when creating a database is what type of data management tools to use. Different tools are designed for different uses. Simple tools that easily store address book information might not be suited for managing a worldwide airline reservation system. On the other hand, database software designed for huge corporations might be overkill for keeping track of your social calendar or storing customer data for a small business. Some tools provide ways to display information on the Web from a database, and some are designed only to print basic reports. How do you know which data management tools to use for a project? Section B describes the different types of tools available and explains how to decide which one best suits your needs. DATA MANAGEMENT SOFTWARE Are simple data management tools available? Yes. The simplest tools for managing data are software packages dedicated to a specific data management task, such as keeping track of appointments or managing your checking account. You can purchase these tools or download them from various Web sites. Some are available as shareware or open source software. Although these tools are easy to use, they don’t generally allow you to create new record types because the record types are predefined. To use one of these tools, you simply enter your data. The software includes menus that allow you to manipulate your data after entering it. How about a simple, generic tool that allows me to define a file structure? Most spreadsheet and word processing software packages feature simple tools that allow you to specify fields, enter data, and manipulate it. For example, your word processing software probably allows you to maintain data as a set of records, as shown in Figure 11-17. FIGURE 11-17 Microsoft Word allows you to create a table of information, such as a mailing list, which you can edit, sort, search, and print. In addition, you can merge data from the table with a template letter to create form letters, mailing labels, and envelopes. X Access your digital textbook to learn how to use Microsoft Word to create mailing lists and mail merges. 623 DATABASES Most spreadsheet software also includes basic data management features. It’s quite easy to create simple flat files using a spreadsheet. Depending on the spreadsheet software, it may be possible to sort records, validate data, search for records, perform simple statistical functions, and generate graphs based on the data. Figure 11-18 illustrates Microsoft Excel data management functions applied to a list of merchandise. Excel stores data in a table, where each row can be treated as a record and each column as a field. FIGURE 11-18 Spreadsheet software usually provides tools for working with flat files. X Learn how to use the data features within Microsoft Excel. The ribbon provides access to data manipulation commands, such as Sort & Filter. In addition to displaying records in a table, Excel can display one record at a time in form view. Simple file management tools provided by word processing and spreadsheet software are popular for individuals who want to maintain flat files that contain hundreds, not thousands, of records. These tools work well for a simple address book, an inventory of household goods, a record of health insurance costs, and a variety of other simple lists. They do not, however, offer database capabilities for establishing relationships between different record types, and they are not powerful enough to maintain the large volume of records required for business information systems. Can I create my own data management software? It is possible to simply enter data as an ASCII text file, and then use a programming language to write routines to access that data. Custom software can be created to accommodate flat files and other database models. Custom data management software has the advantage of being tailored to the exact needs of a business or an individual. This advantage is offset, however, by several disadvantages. Custom software requires skilled programmers. The development time for each module can be lengthy and costly. In addition, programmer efforts are sometimes redundant because similar modules are often required for different data files. For example, programmers who write a report routine for one data file might have to repeat their efforts a few weeks later for a different data file. 11 624 SECTION B, CHAP TER 11 Poorly designed custom software can result in data dependence—a term that refers to data and program modules being so tightly interrelated that they become difficult to modify. Imagine a database in which programs and data all exist in one large file! It would be impossible to access the data while editing any of the programs. Furthermore, changing the file structure in any way might make the programs unusable. Modern database software supports data independence, which means separating data from the programs that manipulate data. As a result, a single data management tool can be used to maintain many different files and databases. In addition, standard search, sort, and print routines continue to function, regardless of changes to field names or record structure. Figure 11-19 further explains data dependence and independence. FIGURE 11-19 Search Program Data Print Program Data dependence is typically found in poorly written custom software when programmers tie the program code too tightly to specific field names, record structures, report formats, and calculations. If these aspects of the database change, programs cannot adapt and must be rewritten. Search Programs Print Data Data independence is a design concept based on the idea that databases are most flexible when programs that manipulate a database are not too tightly tied to the structure of fields, records, calculations, and reports. Commercial database software promotes data independence because a generic set of programs for searching and printing can be used on any set of data. What’s the best data management tool? The best tool depends on several factors. When selecting a data management tool, consider its cost, versatility, and ease of use (Figure 11-20). FIGURE 11-20 Data Management Tools Tool Cost Versatility Ease of Use Dedicated software, such as an address book Inexpensive shareware available for simple applications; dedicated software for business applications can be costly Typically dedicated to a single type of database Easy; minimal setup required because fields are predefined Word processing software Most consumers have word processing software Best for simple flat files, such as mailing lists Easy; uses an interface familiar to most users Spreadsheet software Most consumers have spreadsheet software Best for simple flat files that involve calculations Easy; uses an interface familiar to most users Custom software Expensive development and programming time Very versatile because programs can be tailored to any data The programming can be difficult, but the final result may be easy to use Database software Basic shareware database software is inexpensive; high-end database software can be expensive High-end packages provide excellent versatility High-end database software often has a steep learning curve 625 DATABASES DATABASE MANAGEMENT SYSTEMS What kinds of tools are specifically designed for creating and manipulating databases? The term DBMS (database management system) refers to software that is designed to manage data stored in a database. Each DBMS typically specializes in one database model, but some DBMS software offers versatility by dealing with a variety of models and data. An XML DBMS, for example, is optimized for handling data that exists in XML format. (You’ll learn more about XML later in the chapter.) An ODBMS (object database management system) is optimized for the object database model, allowing you to store and manipulate data classes, attributes, and methods. An RDBMS (relational database management system) allows you to create, update, and administer a relational database. Most of today’s popular RDBMS software also provides the capability to handle object classes and XML data, making it unnecessary to purchase a separate ODBMS or XML DBMS. TERMINOLOGY NOTE An ODBMS is also referred to as an OODBMS (object-oriented database management system). Which DBMS should I use for my projects? Today most database projects are implemented with a relational database management system. The particular RDBMS package you choose, however, depends on the scope of your project, the number of people who will simultaneously access the database, and the expected volume of records, queries, and updates. Entry-level RDBMS software, such as Microsoft Access, is a good fit for small businesses and individuals whose data can’t be efficiently handled as a flat file spreadsheet. An entry-level DBMS typically includes all the tools you need to manipulate data in a database, specify relationships, create data entry forms, query the database, and generate reports, as shown in Figure 11-21. INFOWEBLINKS Get the latest scoop on relational, object, and XML database software at the DBMS InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 FIGURE 11-21 An entry-level DBMS usually includes all the tools you need to manipulate data in a database. Microsoft Access provides tools for working with tables and for creating queries, forms, reports, and Web pages. Database table 11 626 SECTION B, CHAP TER 11 If an entry-level DBMS is located on a network, it is possible for multiple users to access the database at the same time. As shown in Figure 11-22, each workstation typically uses database client software to communicate with the DBMS. Database client software allows any remote computer or network workstation to access data in a database. FIGURE 11-22 Client software Multiple users can access a database using client software. Client software Database Client software An entry-level DBMS that resides on a network server might be able to handle many simultaneous searches. However, these DBMSs are limited in their ability to deal with problems that arise when multiple users attempt to update the same record at the same time. This limited multiuser capability might be able to handle, for example, a civic center ticketing system operated by a box office clerk. It would not be sufficient, however, to handle the volume of simultaneous transactions for Ticketmaster’s 6,700 retail ticket center outlets, 21 telephone call centers worldwide, and online Web site. In situations with many users who make simultaneous updates, it is usually necessary to move to database server software, such as Oracle Database, IBM DB2 Universal Database, Microsoft SQL Server, Sun Microsystem’s open source favorite MySQL, or public domain SQLite. Database server software is designed to manage billions of records and several hundred transactions every second. It provides optimum performance in client/ server environments, such as LANs and the Internet. It can also handle a distributed database, in which a database is stored on several computers, on multiple networks, or in different geographical locations. As shown in Figure 11-23, database server software passes query requests from client software to the database and sends query results back to the client. FIGURE 11-23 Database server software is optimized to provide fast access to multiple simultaneous users. Client software Client software Client software DATABASE SERVER SOFTWARE Database 627 DATABASES DATABASES AND THE WEB Is it possible to access a database over the Web? The Web allows access to many databases. When you shop at an online store, for example, the photos, descriptions, and prices you see are pulled from the merchant’s database and displayed as Web pages. More direct database access is offered by online card catalogs, such as the U.S. Library of Congress. A database also provides the foundation for online access to course registration systems, yellow pages, real estate listings, movie reviews, flight schedules, and a host of other information. INFOWEBLINKS The Web Databases InfoWeb offers links to lots of useful tips about database access via the Web. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 The Web provides both opportunities and challenges for accessing the information in a database. Obviously, with its global reach, the Web provides an opportunity for many people to gain access to data from multiple locations. Web access is constrained, however, by the stateless nature of HTTP and the necessity to provide access by using a browser as client software. Providing access to databases over the Web requires some tricks. It does not, however, require special databases or special DBMSs. What’s the simplest way to provide Web access to a database? A technique called static Web publishing is a simple way to display the data in a database by converting a database report into an HTML document, which can be displayed as a Web page by a browser. Static publishing provides extremely limited access to a database because it creates a Web page that essentially displays a snapshot of your data at the time the report was generated. Data on the Web page cannot be manipulated, except to be searched in a rudimentary way by the Find feature of your Web browser. The advantages of static publishing include security and simplicity. Your data remains secure because you have not provided direct access to your database, so unauthorized users cannot change your data. Static publishing is simple because most entry-level DBMS software includes a menu option that allows you to easily produce an HTML page from a database report, as shown in Figure 11-24. FIGURE 11-24 Many entry-level DBMSs include an easy way to turn a report into an HTML document that you can post as a Web page. X Learn how to generate an HTML report from a Microsoft Access database. 11 Microsoft Access has an Export option that creates an HTML document from a database report. 628 SECTION B, CHAP TER 11 What if I want to provide access to current data? Each time regular customers at Vintage Music Shop connect to the site, they see Web pages tailored to their music preferences. Country music fans, for example, see descriptions of Nashville classics and a list of discount albums by their favorite artists. Obviously, these pages cannot be the result of static publishing. They are created by a dynamic Web publishing process that generates customized Web pages as needed, or “on the fly.” Dynamic Web publishing relies on a program or script, referred to as a server-side program, that resides on a Web server and acts as an intermediary between your browser and a DBMS. In the Vintage Music Shop example, a server-side program reads a cookie from the customer’s computer to find the unique number assigned to the customer. The server-side program then uses the customer number to generate a query, which is sent to the database server software. This software accesses the database to locate the customer’s music preferences and favorite artists. The serverside program then asks the database server software to locate all the specials that apply to this customer’s preferences. A list of applicable albums, descriptions, and prices is sent back to the Web server, where it is formulated as an HTML document and sent to the browser. The architecture for dynamic publishing requires a Web server in addition to database server software, a database, and a browser, as shown in Figure 11-25. FIGURE 11-25 Dynamic Web publishing requires several components, including a browser, a Web server, database server software, and a database. Browser DATABASE SERVER SOFTWARE Browser Browser Server-side program running on a Web server Is it possible to add and update database records over the Web? In several situations, such as e-commerce, it is important for people to use a browser to add or update records in a database. For example, the process of ordering merchandise at Vintage Music Shop creates a new order record, changes the InStock field in the Albums table, and creates a customer record for first-time customers. These dynamic database updates require an architecture similar to that used for dynamic Web publishing, plus the use of forms. A form can collect data, such as customer name and address, or it can collect the specifications for a query, such as a search for Frank Sinatra albums. A completed form is sent from your browser to the Web server, which strips the data or query out of the document and sends it to the DBMS. Results are sent to the Web server, formatted into an HTML document, and sent back to your browser. Database 629 DATABASES A form usually exists on a Web server, which sends the form to your browser. Most forms are created using the HTML <form> tag and <input> tag. Figure 11-26 illustrates an HTML document with <input> tags and shows the Web page form it produces. The <form> tag specifies how to treat the form— in this case by posting the form data to a serverside program. FIGURE 11-26 An HTML document (top) produces a form (lower-right) when displayed by a browser. The <input> tags define each field of the form. A technology called XForms provides an alternative to HTML forms. XForms offer more flexibility than HTML forms, and they interface with XML documents. XForms were designed as the successor to HTML forms for interactive exchange of data over the Web, such as e-commerce payment information. Use of XForms requires an XForms-enabled browser or a plugin that adds XForms capability. How do I create server-side programs? Several tools, including ASP, CGI, PHP, and ColdFusion, help you create server-side programs. ASP (Active Server Pages) technology can be used to generate an HTML document that contains scripts, which are run before the document is displayed as a Web page. These scripts are small embedded programs that can be designed to get user input, run queries, and display query results. 11 630 SECTION B, CHAP TER 11 ASP technology, developed by Microsoft, originally worked only on Windows-based Web servers. A plug-in is now available for UNIX servers. Figure 11-27 illustrates how an ASP script displays database information that has been requested by a remote user. Enter query Query FIGURE 11-27 An ASP script can collect user input, run queries, and display query results. ASP script Database Run queries Display query results Query results CGI (Common Gateway Interface) offers a non-proprietary way to create HTML pages based on data in a database. A CGI script can be written in a variety of programming languages, such as C, C++, Java, and Perl. PHP (PHP: Hypertext Preprocessor) is a cross-platform scripting language that can accomplish the same tasks as CGI. Specialized Web database development tools, such as Adobe ColdFusion, also provide tools for scripting and linking HTML pages to a database. XML How does XML relate to the Web and databases? XML is a markup language that allows field tags, data, and tables to be incorporated into a Web document. It was developed in response to several deficiencies that became apparent as HTML gained widespread use. For example, suppose you are interested in speeches given by Martin Luther King, Jr. Entering his name in a search engine produces thousands of entries, including MLK biographies, streets and schools named after the famous civil rights leader, historic locations relating to the civil rights movement, and so on. Wouldn’t it be nice if King’s speeches were stored in HTML documents that identified their content as speeches and their author as Martin Luther King, Jr.? XML provides tags that can be embedded in an XML document to put data in context, as shown in Figure 11-28. FIGURE 11-28 A document with XML tags allows you to make a targeted search for author = Martin Luther King, Jr. and document_type = SPEECH. 631 DATABASES How is XML typically used today? One of XML’s most positive contributions to data management is the potential to add context to the information contained in a widely diverse pool of documents on the Web. Although it is easy to see how XML tags might make the free-form documents currently on the Web much easier to manage, today XML is more often used for structured data. XML can be used to specify a standard structure of fields and records, such as SportsML and Chemical Markup Language, for storing data that can be accessed from a browser. Using this standard structure, data entered into an XML document can be identified by field names. Figure 11-29 provides an example of an XML document that contains data similar to that in Vintage Music Shop’s Albums table. FIGURE 11-29 This XML document contains data that looks similar to the fields and records from a table of a relational database. Can I search the data in an XML document? Yes. Access to XML data is provided by XML query engines, such as XPath and XQuery. Direct access to structured data like that shown in Figure 11-29 above, however, requires knowledge of its location, access rights, and a list of field names. Therefore, like many relational databases, access to structured data in XML documents is typically provided by some type of client software designed specifically to accept queries, access the data, and return results. XML clients can be offered as browser plug-ins. What are the pros and cons of XML for storing data? Storing data in an XML document offers several advantages. It exists as a document in human-readable format. It is also portable so that it can be easily accessed from virtually any computer platform—PCs, Macs, Linux computers, mainframes, and even handhelds. All that’s required on the platform is an XML-enabled browser, such as Internet Explorer or Firefox. XML documents are not, however, optimized for many operations you would customarily associate with databases, such as fast sorts, searches, and updates. 11 632 SECTION B, CHAP TER 11 To get the best out of XML and relational databases, some experts recommend storing data in a relational database, managing it with RDBMS software, and using server-side software to generate XML documents for exchanging data over the Web. Some RDBMSs include features that allow a database server to receive queries in the form of XML commands. After receiving a query, the database compiles the results and uses XML to format the data into a Web page, as shown in Figure 11-30. FIGURE 11-30 Manipulating XML Data with an RDBMS XML query Relational DATABASE SERVER Database Database server accepts XML query and uses it to query relational database XML results As you can see, many techniques exist for storing, accessing, and displaying the data from databases. Individuals can use simple tools to create personal databases, such as address books. Corporate database managers, however, need to be familiar with more complex tools used to distribute data over networks and the Web. Sometimes more than one tool has the potential to work for a specific application. Now that you’ve had an introduction to the options, you should be able to evaluate when and how to use them. SECTION B QuickCheck 1. A custom database can be stored as a simple data separated from the program modules that file and can be accessed by routines written in a standard programming 2. manipulate the data. Web publishing uses the 4. language. (Hint: Use the acronym.) data in a database to generate customized Web Spreadsheet software typically includes some pages as needed. data management features suitable for working with relational databases. True or false? 5. ASP, CGI, and PHP are used to create XML documents that are processed on a server before being sent to your browser. True or false? 3. Modern database software supports data , which means keeping X CHECK ANSWERS 633 DATABASES SECTION C Database Design THE KEY to an effective database is its initial design. In a well-designed database, data can be flexibly manipulated to produce timely, meaningful, and accurate information for decision making. Bad database design can lead to messy databases, lost records, and inaccurate data. The goal of good database design is to store information so that it is easy to access and maintain, but concise enough to take up as little disk space as possible. Section C looks at databases from the perspective of the database designer and describes how to create an efficient structure for a relational database. You can apply many of these design principles when you create your own databases. DEFINING FIELDS How does a database designer know what data to store? The term database structure refers to the arrangement of fields, tables, and relationships in a database. The first step in structuring a relational database is to determine what data should be collected and stored. To do so, a database designer might begin by consulting users and studying the current filing system to compile a list of available data as well as any additional data necessary to produce on-screen output or printed reports. If you are designing the database structure for Vintage Music Shop, for example, you would probably recognize that data such as the album title, artist name, release date, catalog number, record label, quantity in stock, value, discount price, and album cover photo should be collected and stored. After the database designer determines what data to store, the next step is to organize that data into fields. It is usually easy to break data into fields just by using common sense and considering how people might want to access the data. Any data that people would want to search for, sort on, or use in a calculation should be in its own field. Why are last names stored in a different field than first names? The treatment of first and last names illustrates the concept of breaking data into fields. A database designer could define a field called CustomerName to hold an entire customer’s name, such as Gilbert B. Grape. With the entire name in one field, however, the database would not be able to easily access individual parts of the name, making it difficult to alphabetize customers by last name or to produce a report in which names appear in a format such as Grape, Gilbert B. (Figure 11-31). First Name Last Name Gilbert MI B. Grape Gilbert B. Grape Grape, Gilbert B. FIGURE 11-31 When a field contains an entire name, it is difficult to individually manipulate the first name, last name, and middle initial. A more flexible design provides separate fields for each part of the name. 11 634 SECTION C, CHAP TER 11 What makes each record unique? Although two people might have the same name or two paychecks might contain the same amount, a computer must have some way to differentiate between records. A primary key is a field that contains data unique to a record. Designers commonly designate fields such as CheckNumber, SocialSecurityNumber, TelephoneNumber, and PartNumber as primary keys. How does a database designer know what data types to use? The data that can be entered into a field depends on the field’s data type. From a technical perspective, a data type specifies the way data is represented on the disk and in RAM. From a user perspective, the data type determines the way data can be manipulated. When designing a database, each field is assigned a data type. Data can be broadly classified as numeric or character. As you learned in earlier chapters, character data contains letters, numerals, and symbols not used for calculations. Numeric data contains numbers that can be manipulated mathematically by adding, averaging, multiplying, and so forth. As an example, the Price field in Figure 11-32 contains numeric data, which can be added to the prices for other albums to calculate a total price when a customer buys more than one album. FIGURE 11-32 Numeric data can be used for calculations. INVOICE Qty Album Title Price $70.00 1 1 1 That’s All $70.00 Surfin’ Safari $10.00 Blue Hawaii $18.00 Total There are several numeric data types, including real, integer, and date. Database designers assign the real data type to fields that contain numbers with decimal places—prices, percentages, and so on. The integer data type is used for fields that contain whole numbers—quantities, repetitions, rankings, and so on. Database designers typically use the integer data type unless the data requires decimal places because real numbers require more storage space. As you might expect, the date data type is used to store dates in a format that allows them to be manipulated, such as when you want to calculate the number of days between two dates. The text data type is typically assigned to fixed-length fields that hold character data—people’s names, album titles, and so on. Text fields sometimes hold data that looks like numbers, but doesn’t need to be mathematically manipulated. Telephone numbers and ZIP codes are examples of data that looks numeric, but is stored in text fields because database users would never want to add two telephone numbers together or find the average of a group of ZIP codes. As a general rule, information such as telephone numbers, ZIP codes, Social Security numbers, and item numbers should be stored in text fields. A memo data type usually provides a variable-length field into which users can enter comments. For example, the Vintage Music Shop database might contain a memo field for storing comments about a particular album, such as “Where Did Our Love Go was The Supremes’ first hit album.” The logical data type (sometimes called a Boolean or yes/no data type) is used for true/false or yes/no data using minimal storage space. For example, a database designer might define a logical field called OrigCov, which would contain a Y if an album includes the original dust cover. Price $98.00 635 DATABASES Some file and database management systems also include additional data types, such as BLOBs and hyperlinks. A BLOB (binary large object) is a collection of binary data stored in a single field of a database. BLOBs can be just about any kind of data you would typically store as a file, such as an MP3 music track. For example, the Vintage Music Shop database stores a short music sample of each song on an album in a BLOB field called TrackSample. INFOWEBLINKS BLOBs are a relatively new data type. Learn more about them at the BLOB InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 The hyperlink data type stores URLs used to link directly from a database to a Web page. For example, data stored in a hyperlink field of the Vintage Music Shop database could provide a link to a musician’s Web site. Figure 11-33 summarizes the most commonly used data types in today’s databases. FIGURE 11-33 Commonly Used Data Types Data Type Description Sample Field Sample Data Real Numbers that include decimal places DiscountPrice 9.99 Integer Whole numbers QTY 5 Date Month, day, and year OrderDate 9/30/2011 Text Letters or numerals not used for calculations Name ZipCode Gilbert 49866 Logical Data that can have one of two values InStock Y Memo Variable length comment field Condition Some wear on album cover BLOB Binary data SampleTrack [An MP3 file] Hyperlink URLs MusicianWebSite www.bobdylan.com How does a database handle computations? When a customer looks for an album at Vintage Music Shop’s Web site, three pieces of pricing information are provided. The first is the value. The second is the discounted price that Vintage Music Shop offers. The third is the amount of money a customer will save by purchasing the album through Vintage Music Shop. The Albums record type, however, contains only two pieces of pricing information—Value and DiscountPrice. The third piece of information—the amount of money a customer saves by purchasing through Vintage Music Shop—is a computed field. A computed field is a calculation that a DBMS performs during processing, and then temporarily stores in a memory location. An efficiently designed database uses computed fields whenever possible because they do not require disk storage space. Figure 11-34 illustrates how a computed field produces the amount saved with purchases at Vintage Music Shop’s discount price. TERMINOLOGY NOTE A computed field works somewhat like a function in a spreadsheet; you set up a formula for the calculation, which is applied to compute the data. FIGURE 11-34 Creating a Computed Field Value $47.00 RAM DiscountPrice $45.00 AmountSaved $2.00 The database includes a field containing the value and another field containing the discount price. The amount in one field can be subtracted from the amount in the other field. The result is temporarily stored in a field in RAM and can appear on a screen or report. 11 636 SECTION C, CHAP TER 11 Can a database designer prevent people from entering inaccurate data? There’s an old saying in the computer industry: “garbage in, garbage out.” This adage is especially true when dealing with databases. The information produced by reports and processing routines is only as accurate as the information in the database. Unfortunately, data entry errors can compromise the accuracy and validity of a database. When designing a database, it is important to think ahead and envision potential data entry errors. Most DBMSs provide tools that database designers can use to prevent some, but not all, data entry errors. People who enter data into a database sometimes have difficulty deciding whether to use uppercase or lowercase characters. In a case sensitive database, uppercase letters are not equivalent to their lowercase counterparts. For example, in a case sensitive database, the artist name Elvis is not equivalent to elvis. Inconsistent use of case can lead to several problems. A search for elvis will not produce records for Elvis or ELVIS. Furthermore, in a sorted or indexed list, elvis and ELVIS might not be grouped together. Most, but not all, DBMSs give database designers an option to turn case sensitivity on or off. They might also have the option to force data to all uppercase or all lowercase as it is entered. Neither technique is an infallible solution to case sensitivity; but as you gain experience designing databases, you’ll become familiar with the advantages and disadvantages of each technique. People who enter data might not be consistent about the way they enter numbers. For example, a data entry operator might enter a telephone number as 555-555-7777, (555) 555-7777, or 1-555-555-7777. If multiple data entry operators enter telephone numbers in different formats, it becomes difficult to produce nicely formatted reports or locate a particular telephone number. To prevent this sort of inconsistent formatting, a database designer can specify a field format. A field format is a template that adds the correct formatting as data is entered. If someone attempts to enter data in the wrong format, the database rejects that entry. A telephone number field might use a field format such as the one shown in Figure 11-35. FIGURE 11-35 A field format helps maintain consistent data by providing a structure for entering data into a field. With this telephone number field format, you simply enter the number without any punctuation. Telephone Number: For example, typing 9035552378 produces this result. Telephone Number: Sometimes people who enter data simply make a mistake and press the wrong keys. Preventing every typographical error is not possible. However, it is possible to catch some of these errors by using field validation rules, list boxes, or lookups. A field validation rule is a specification that the database designer sets up to filter data entered into a particular field. For example, the price of albums in the Vintage Music Shop database ranges from $0 (for promotions) to $800. No albums have a value greater than $1000. When intending to enter $19.98 in the value field, however, the omission of a decimal point could set the price of an album to $1998.00! When designing the Vintage Music Shop database, a database designer can use a field validation rule to limit entries in the Value field to less than $1000. If the DBMS receives a number such as 1998 in the value field, it displays a message requesting the correct price. 637 DATABASES Another technique that prevents typographical and case sensitivity errors is to limit data entry to the items on a specified list. For example, the state abbreviation for Michigan might be entered as MI, Mi, Mich, or NI if your fingers slipped. However, most database software allows database designers to specify a list of acceptable entries for each field. You are probably familiar with clickable lists of states, such as the one in Figure 11-36. FIGURE 11-36 Clickable lists are an easy way for users to enter data in a standard format. Database designers can also prevent entry errors by using lookup routines. A lookup routine validates an entry by checking data in a file or database table. For example, suppose that a Vintage Music Shop employee is entering new albums. It is important that each album has a unique catalog number. When data is entered in the Cat# field, the database can use a lookup routine to search every existing record to make sure the new catalog number does not duplicate an existing catalog number. NORMALIZATION How does a database designer group fields into tables? A process called normalization helps database designers create a database structure that can save storage space and increase processing efficiency. The goal of normalization is to minimize data redundancy—the amount of data that is repeated or duplicated in a database. To normalize a database, one of the designer’s main tasks is to decide how best to group fields into tables. The first step to grouping fields is to get an idea of the big picture of the data. Often, groupings correspond to the physical items, or entities, that are tracked in the database. For example, Vintage Music Shop data is grouped into several tables: Albums, Tracks, Customers, Orders, and Order Details. Some of these groupings seem obvious, but other groupings might seem a bit puzzling. You might wonder why it is necessary to use three tables— Customers, Orders, and Order Details—to store data about an order. Why won’t one table suffice? To answer this question, first take a look at the data relevant to each order in Figure 11-37. INFOWEBLINKS Explore normalization and work with several examples at the Database Normalization InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 FIGURE 11-37 A typical Vintage Music Shop order contains customer data and data about the merchandise being ordered. 11 638 SECTION C, CHAP TER 11 If customer information and order information are grouped in the same table, each time Jorge Rodriguez places an order, his name, shipping address, billing address, telephone number, and e-mail address must be entered and stored. This data redundancy not only requires extra storage space, but also could lead to storing inconsistent or inaccurate data. The solution is to create separate tables for Orders and Customers, which can be related by including a CustomerNumber field in both tables, as shown in Figure 11-38. C U S T O ME RS C u s t o me rNu m b e r F i r s t N a me LastName Street City State Z i p C o de E m a i l A d d re ss P h o n e Nu mb e r O RDE R S FIGURE 11-38 Or d e r N umber C u st o mer Number T o t a lP r ice Or d e r D ate Qt y Cat# D isco u n tPr i c e Fields for each order are separated into two tables— one for customer information and one for order information. Information in these two tables can be linked using the CustomerNumber field. This field makes it easy to find all the orders for for a specific customer. Even after separating customer data from order data, the structure of the Vintage Music Shop database can be further improved. The Orders table in the previous figure allows customers to purchase only one album per order because the fields Cat# and DiscountPrice occur only once. Obviously, the Vintage Music Shop database should be able to handle orders for more than one album. It might seem reasonable to provide several fields for the albums on an order. Perhaps they could be named AlbumNumber1, AlbumNumber2, AlbumNumber3, and so on. But how many fields should the database designer provide? If the designer provides fields for ordering ten albums, the database still cannot handle large orders for more than ten albums. Furthermore, if a customer orders fewer than ten albums, space is wasted by having empty fields in each record. You might recognize that a one-to-many relationship exists between an order and the ordered items. That clue indicates that the database designer should separate the data into two tables, such as Orders and Order Details. These two tables are related by the OrderNumber field. Figure 11-39 illustrates how the Orders table is further normalized into two tables to store data more efficiently. ORDERS ORDERS FIGURE 11-39 O r d e r N u mb e r OrderNumber The fields pertaining to the ordered merchandise are further divided into two record types and related by the OrderNumber field. C u s t o m e rN u m b e r Fields pertaining to each order CustomerNumber TotalPrice TotalPrice OrderDate O r d e r D a te Qty Cat# D i s c o u n t P rice ORDER DETAILS Fields pertaining to each album ordered OrderNumber Cat# Qty DiscountPrice 639 DATABASES ORGANIZING RECORDS How are database records organized? Records can be organized in different ways depending on how people want to use them. For example, a customer visiting Vintage Music Shop’s Web site will most often view the information in the Albums table by AlbumTitle or ArtistName. The inventory manager usually wants the data sorted by quantity in stock so that it is easy to see which albums are overstocked. In contrast, the marketing manager is more interested in the Value field, so that rare and expensive albums can be aggressively marketed. No single way of organizing the data accommodates everyone’s needs, but tables can be sorted or indexed in multiple ways. What happens when the data in a table is sorted? A table’s sort order is the order in which records are stored on disk. Sorted tables typically produce faster queries and updates because they take advantage of clever algorithms that quickly pinpoint records. In a sorted table, new records are inserted to maintain the order. If no sort order is specified, new records are appended to the end of the file, resulting in a file that is not in any particular order. Queries and updates within an unsorted database are slow because the only algorithm for searching an unsorted table requires a sequential look at each record. Most DBMSs use a sort key to determine the order in which records are stored. A table’s sort key is one or more fields used to specify where new records are inserted in a table. A table can have only one sort key at a time, but the sort key can be changed. Changing a sort key can take a long time, however, because the process physically rearranges records on the disk. The database designer usually specifies the sort key for a database table at the time the database structure is created. How is indexing different from sorting? A database index can be used to organize data in alphabetical or numeric order. It is very similar to an index in a book that contains a list of keywords and pointers to the pages where they can be found. A database index contains a list of keys, and each key provides a pointer to the record that contains the rest of the fields related to that key. Figure 11-40 illustrates how an index works. FIGURE 11-40 When arranged by date, Blue Hawaii is the second record in the index. The index file contains a list of keys and the record number (R#) that contains more information about the album released on that date. X To see how indexing works, click this figure in your digital textbook. INDEX Key R# 10/01/1960 1 10/01/1961 3 10/29/1962 4 02/06/1967 2 ALBUMS R# Cat# AlbumTitle ArtistName Release Date In Stock Value Elvis Presley 10/01/1960 4 20.00 1 LPM-2256 G.I. Blues 2 7499-2 Between the Buttons Rolling Stones 02/06/1967 1 13.99 3 LSP-246 Blue Hawaii Elvis Presley 10/01/1961 5 50.00 4 N16014 Surfin’ Safari Beach Boys 10/29/1962 8 18.95 11 640 SECTION C, CHAP TER 11 Unlike a sort order, an index has no bearing on the physical sequence of records on disk. An index simply points to the record where the data can be found. The advantage of an index over a sort is that a table can have multiple indexes, but only one sort order. For example, the Albums table could be indexed by AlbumTitle to facilitate searches for specific albums. The same table could also be indexed by ArtistName to facilitate searches using artist names. Database tables should be indexed by any field or fields that are commonly used as search fields. The database designer typically creates indexes at the time the database structure is designed. Indexes can also be created at a later date, as needed. DESIGNING THE INTERFACE Does a database designer have control over the user interface? The way that database queries, records, and reports appear on the screen depends on the user interface. An operating system typically provides some conventions for the user interface, such as dialog and button styles, but additional design decisions must be made for the database user interface. Designing a database user interface can be a challenging task. If a company’s database includes multiple tables used by many different people, a professional user interface designer usually creates and maintains the user interface. Large databases might even require a group of user interface designers. The interface for smaller databases, such as those used by small businesses or individuals, is most likely created by the database designer. Some DBMSs include tools to create database interfaces. Others require separate tools for this task. What makes a good database interface? A well-defined user interface for a database should be clear, intuitive, and efficient. Take a moment to look at the data entry screen in Figure 11-41, and imagine that you are using the screen to finalize the purchase of several albums. FIGURE 11-41 Imagine entering your own name and address using this on-screen form. Does it seem easy to use? Do you enter data next to the labels or under them? Why are there two boxes here? What are you supposed to enter in the DOFO field? 641 DATABASES Using the data entry screen pictured on the previous page might be awkward because it does not follow good user interface design principles. The data entry fields seem out of order, and users might have difficulty discerning which entry box corresponds to each label. In addition, several fields have cryptic labels that don’t provide good clues about the data you’re supposed to enter. INFOWEBLINKS To improve this database interface, a designer might consider the following principles: www.infoweblinks.com/np2011/ch11 • Arrange fields in a logical order beginning at the top-left of the screen. The first fields should be those used most often or those that come first in the data entry sequence. • Provide visual clues to the entry areas. An edit box, line, or shaded area can delineate data entry areas. • Entry areas should appear in a consistent position relative to their labels. By convention, labels are placed to the left of the entry areas or above them. • Provide a quick way to move through the fields in order. By convention, the Tab key performs this function. • If all fields do not fit on a single screen, use scrolling or create a second screen. • Provide buttons or other easy-to-use controls for moving from one record to another. • Supply on-screen instructions to help ensure that data is entered correctly. Web databases can benefit from links to help pages. Compare the good, the bad, and the ugly at the Database Interface InfoWeb. w CLICK TO CONNECT Figure 11-42 contains an improved interface for the database in the previous figure. FIGURE 11-42 Fields are arranged in logical order. Data entry areas are clearly delineated as white spaces. A well-designed data input screen should be easy to use. On-screen instructions help users enter data correctly. Buttons make it easy to get to the second page of this record. 11 642 SECTION C, CHAP TER 11 DESIGNING REPORT TEMPLATES How can I display or print data as a formatted report? A report is a printed or on-screen list of some or all of the data in a database. To create reports, most DBMSs include a report generator, which is a software tool for specifying the content and format for a database report. End users might use report generators, but more typically they are used by database designers. A report template contains the outline or general specifications for a report, including such elements as the report title, fields to include, fields to subtotal or total, and report format specifications. The template does not, however, contain data from the database. Data is merged into the template when you actually run a report. As an example, suppose that a manager at Vintage Music Shop wants to create a report that lists albums arranged by price. The manager can create a report template called AlbumPriceGroup, which specifies the following: • • The title of the report is Vintage Music Shop Albums by Price. • The headings for the columns are Discount Price, Album Name, Artist Name, and Qty in Stock. • The report is grouped by price. The report contains data from the Albums table, arranged in four columns, with data from the DiscountPrice, AlbumTitle, ArtistName, and InStock fields. These specifications would be used to produce a report similar to the one shown in Figure 11-43. FIGURE 11-43 A report template contains the specifications to produce this report. Report Date: 8/21/2011 Vintage Music Shop Albums by Price Discount Price Album Name Artist Name Qty in Stock $9.00 Magical Mystery Tour Beatles 3 $10.00 Surfin’ Safari Beach Boys 3 Cheap Thrills Janis Joplin 12 Surrealistic Pillow Jefferson Airplane 1 One Day at a Time Joan Baez 2 $14.00 Between the Buttons Rolling Stones 1 $15.00 Let It Be Beatles 2 Abbey Road Beatles 4 Joan Baez Joan Baez 1 Chuck Berry’s Golden Hits Chuck Berry 1 Strange Days Doors 9 $18.00 643 DATABASES When a report is actually produced, it is based on the data currently contained in the database table. For example, the report on the previous page was produced on August 21st and includes albums that were stored in the database as of that date. Now suppose that at the beginning of October, Vintage Music Shop receives a new shipment of vintage albums. The AlbumPriceGroup report template is used again to print a report on October 12th. This report, shown in Figure 11-44, follows the same format as the previous report, but includes the new albums. FIGURE 11-44 Using the Same Report Specifications as the 8/21/2011 Report, but Different Data Report Date: 10/12/2011 Vintage Music Shop Albums by Price Discount Price Album Name Artist Name Qty in Stock $9.00 Magical Mystery Tour Beatles 3 In Person Kingsmen 1 Cheap Thrills Janis Joplin 8 About This Thing Called Love Fabian 2 One Day at a Time Joan Baez 2 Between the Buttons Rolling Stones 1 $10.00 $14.00 How does the database designer create effective report templates? The reports created by a report generator can be displayed, printed, saved as files, or output as Web pages. Some data management software also provides tools to output data as graphs, sounds, or graphics. The database designer can create templates for reports that effectively present information by observing the following guidelines: • Supply only the information required. Too much information can make it difficult to identify what is essential. • Present information in a usable format. For example, if subtotals are necessary for making a decision, include them. The people who use reports should not have to make additional manual calculations. • Information should be timely. Reports must arrive in time to be used for effective decision making. Some decisions require periodic information— for example, monthly sales reports. Other decisions require ongoing information, such as current stock prices, that will be best satisfied by a continuous display. • Information should be presented in a clear, unambiguous format and include necessary titles, page numbers, dates, labels, and column headings. • Present information in the format most appropriate for the audience. In many cases, a traditional report organized in rows and columns is most appropriate. In other cases, graphs might be more effective. 11 644 SECTION C, CHAP TER 11 LOADING DATA How is data loaded into database tables? After the design for the database structure is complete, it is time to load the database with an initial set of data. For example, before the Vintage Music Shop database went online, it was populated with data for all the albums in the inventory. Data can be loaded into a database manually by using generic data entry tools supplied with the DBMS or by using a customized data entry module created by the database designer. Entering data manually can take a long time, however, and mistakes such as misspellings are common. If the data exists electronically in another type of database or in flat files, it is usually possible to transfer the data using a custom-written conversion routine or import and export routines. A conversion routine converts the data from its current format into a format that can be automatically incorporated into the new database. It takes some time and requires knowledge about database formats to write conversion routines; but for large databases, it’s much quicker to convert data than to re-enter it manually. Converting data also results in fewer errors. Some DBMSs provide built-in import and export routines that automatically convert data from one file format to another. An import routine brings data into a database. For example, if data was previously stored as a spreadsheet file, an import routine in Microsoft Access can be used to transfer data from the spreadsheet to an Access database. In contrast, an export routine copies data out of a software package, such as spreadsheet software, and into the database. Typically, you would use either an import routine or an export routine to move data from one location to another, but not both. SECTION C QuickCheck 1. 2. A primary contains data 4. To filter data entered into a field, the database unique to a record, such as a Social Security designer can set up a field number or ISBN. rule. Real, integer, text, logical, BLOB, and date are 6. . examples of data 3. 5. A computed field is calculated during process- One of the goals of the normalization process is to minimize data 7. A report . contains the out- ing and stored temporarily in memory. True or line or general specifications for a report, but false? does not contain data from the database. In a case database, a data entry such as MI is not the same as Mi. X CHECK ANSWERS 645 DATABASES SECTION D SQL ADDING RECORDS, finding information, and making updates are all important aspects of database use. Most people who access a database on a casual basis—to shop online or withdraw cash from an ATM, for example—interact with very simple user interfaces. These user interfaces shield users from the intricacies of sophisticated query languages. Nevertheless, a little background in query languages can help you understand the power and capabilities of databases. In Section D, you’ll explore SQL, a database query language, by working with examples that illustrate major database functions, such as deleting records, adding records, searching for information, updating records, and joining tables. SQL BASICS TERMINOLOGY NOTE How does a query language like SQL work? Query languages like SQL (Structured Query Language) typically work behind the scenes as an intermediary between the database client software provided to users and the database itself. Database client software provides an easy-to-use interface for entering search specifications, new records, data updates, and so on. The client software collects your input, and then converts it into an SQL query, which can operate directly on the database to carry out your instructions, as shown in Figure 11-45. SQL commands interact directly with the database to locate data, update records, and perform other functions the user requests Client software converts the entries in a form into SQL commands The American National Standards Institute’s official pronunciation of SQL is “ESS que el,” but you also hear it called “SEE quell.” FIGURE 11-45 Database SELECT AlbumTitle FROM Albums WHERE ArtistName = ‘Beatles’ Database client software provides database users with simple forms that can be used to enter search specifications or update data. Here a customer uses an online form to search for Beatles albums in LP (longplaying 331/3 rpm) format. and Format = ‘LP’ 11 Form-based user interface 646 SECTION D, CHAP TER 11 What does a simple SQL query look like? An SQL query is a sequence of words, much like a sentence. For example, an SQL query that searches for a song called “Ruby Tuesday” in Vintage Music Shop’s database might look like this: SELECT TrackTitle FROM Tracks WHERE TrackTitle = ‘Ruby Tuesday’ The SQL query language provides a collection of special command words called SQL keywords, such as SELECT, FROM, INSERT, and WHERE, which issue instructions to the database. Although the SQL examples in this section of the chapter use uppercase letters for keywords, most implementations of SQL accept either uppercase or lowercase keywords. Most SQL queries can be divided into three simple elements that specify an action, the name of a database table, and a set of parameters. Let’s look at each of these elements. How does SQL specify the action that I want carried out in the database? An SQL query typically begins with an action keyword, or command, which specifies the operation you want carried out. For example, the command word DELETE removes a record from a table. Figure 11-46 lists some of the most commonly used SQL command words. FIGURE 11-46 SQL Command Words Command Description Example CREATE Create a database or table CREATE TABLE Album DELETE Remove a record from a table DELETE FROM Tracks WHERE TrackTitle = ‘Blue Suede Shoes’ INSERT Add a record INSERT INTO AlbumDescription (Cat#, Condition) VALUES (‘LPM2256’, ‘Mint condition; no visible scratches; original album cover’) JOIN Use the data from two tables SELECT FROM Albums JOIN Tracks ON Albums.Cat# = Tracks.Cat# SELECT Search for records SELECT FROM Albums WHERE ArtistName = ‘Beatles’ UPDATE Change data in a field UPDATE Albums SET DiscountPrice = 15.95 WHERE Cat# = ‘LPM2256’ How does SQL specify which table to use? SQL keywords such as USE, FROM, or INTO can be used to construct a clause specifying the table you want to access. The clause consists of a keyword followed by the name of the table. For example, the clause FROM Tracks indicates that you want to use the Tracks table from Vintage Music Shop’s database. An SQL query that begins with DELETE FROM Tracks means that you want to delete something from the Tracks table. To complete the query, you provide parameters that specify which record you want to delete. 647 DATABASES How does SQL specify parameters? Parameters are detailed specifications for a command. Keywords such as WHERE usually begin an SQL clause containing the parameters for a command. Suppose that Vintage Music Shop’s inventory manager wants to delete all the albums in the Vintage Music Shop database recorded by Bobby Darin. The SQL looks like this: DELETE FROM Albums WHERE ArtistName = ‘Bobby Darin’ SQL command word FROM clause specifies the table to use WHERE clause specifies the field name and its contents Now that you’ve learned the basic structure of an SQL query, take a closer look at the SQL for specific database tasks, such as adding records, searching for information, updating fields, organizing records, and joining tables. ADDING RECORDS How are records added to a database? Suppose you want to purchase an album from Vintage Music Shop’s Web site. As a first-time customer, you fill out a form with your name, address, and so on. The client software that you use collects the data you enter in the form and generates an SQL statement using the INSERT command, which adds your data to the Customers table of the Vintage Music Shop database. Figure 11-47 shows the Customer form, the SQL statement that adds the customer data to the database, and the data that is added to the Customers table. Customer form FIGURE 11-47 Data from the Customer form is added to the database. SQL statement INSERT INTO Customers (LastName, FirstName, Street, City, State, ZipCode, PhoneNumber) VALUES (‘Rodriguez’, ‘Jorge’, ‘101 Las Vegas Court’, ‘Taos’, ‘NM’, ‘87571’, ‘5055553412’) Customers table 11 648 SECTION D, CHAP TER 11 SEARCHING FOR INFORMATION How do SQL queries carry out searches? One of the most common database operations is to query for a particular record or group of records by using the SELECT command. Suppose you’re looking for Jefferson Airplane albums. You fill in the Search box at the Vintage Music Shop site, as shown in Figure 11-48. FIGURE 11-48 This search form is used by customers to query the database. Here the search is for Jefferson Airplane albums. The database client software uses your search specification to create the SQL query: SELECT AlbumTitle, AlbumCover FROM Albums WHERE ArtistName = ‘Jefferson Airplane’ As a result of this query, the Vintage Music Shop Web page displays a list beginning with Jefferson Airplane Takes Off—the band’s first album— and a photo of the album cover. Take a closer look at the parts of this query. The phrase SELECT AlbumTitle, AlbumCover specifies that the database should show you only the album title and cover. Until you confirm that this is the album you’re interested in, it will not show you additional information, such as the price or list of tracks. FROM Albums tells the DBMS to search for the album in the Albums table. WHERE ArtistName = ‘Jefferson Airplane’ specifies that the record you want contains the data Jefferson Airplane in the ArtistName field. Can SQL perform complex searches? Yes. SQL uses search operators such as AND, OR, and NOT to form complex queries. Because search operators were originally the idea of mathematician George Boole, they are also referred to as Boolean operators. Let’s see how they work in the context of SQL queries. How does AND work in an SQL query? AND (sometimes indicated by a + sign) is used when you want to retrieve records that meet more than one criterion. For example, suppose a customer wants to find all the albums by Jefferson Airplane, but wants to display only albums that are on sale for less than $10.00. You might enter something like Jefferson Airplane <$10.00 in the Vintage Music Shop search box. The database client creates an SQL query: SELECT AlbumTitle FROM Albums WHERE ArtistName = ‘Jefferson Airplane’ AND DiscountPrice < 10.00 In this example, a record is selected only if the ArtistName field contains Jefferson Airplane and the value in the DiscountPrice field is less than $10.00. If the discount price is $10.00 or more, the record is not selected. The AND operator specifies that both of the search criteria must be true for the record to be selected. INFOWEBLINKS At the Boolean InfoWeb, you can learn how a guy born in 1815 had such an immense effect on a modern technology like the Web. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 DATABASES 649 How does OR differ from AND? Two variations of the OR operator exist. One variation, the inclusive OR, designates records that meet one criterion or both. The other variation, called the exclusive OR, designates records that meet one criterion or the other, but not both. SQL uses the inclusive OR. A query such as SELECT AlbumTitle FROM Albums WHERE ArtistName = ‘Jefferson Airplane’ OR DiscountPrice < 10.00 produces all the Jefferson Airplane albums, regardless of price. It also produces any albums that are less than $10.00, regardless of the artist. You can combine AND and OR clauses to formulate complex queries. For example, Jefferson Airplane became Jefferson Starship in 1974. If you’d like a list of Jefferson Airplane or Jefferson Starship albums for less than $10.00, you can use a query like the following: SELECT AlbumTitle FROM Albums WHERE (ArtistName = ‘Jefferson Airplane’ OR ArtistName = ‘Jefferson Starship’) AND DiscountPrice < 10.00 Note the use of parentheses around the OR clause. Parentheses tell the DBMS to process this part of the query first. The placement of parentheses can change the results of a query, sometimes drastically. Compare the previous query to the following query: SELECT AlbumTitle FROM Albums WHERE ArtistName = ‘Jefferson Airplane’ OR (ArtistName = ‘Jefferson Starship’ AND DiscountPrice < 10.00) The first query (in blue) returns albums by Jefferson Airplane or Jefferson Starship that are less than $10.00. The second query (in green) returns all albums by Jefferson Airplane, regardless of price, and any albums by Jefferson Starship that cost less than $10.00. How does NOT work in an SQL query? The NOT operator can be used to omit records from a search by specifying a not-equal relationship. For example, the following query returns all records in the Albums table where the ArtistName is not equal to Jefferson Airplane: Select AlbumTitle from Albums WHERE NOT(ArtistName = ‘Jefferson Airplane’) Sometimes NOT relationships are specified with a not-equal operator, such as <> or !=, depending on the specifications of the query language. For example, the following query returns the same records as one that uses the NOT operator: Select AlbumTitle from Albums WHERE ArtistName <> ‘Jefferson Airplane’ 11 650 SECTION D, CHAP TER 11 UPDATING FIELDS Can I change the contents of a record? You can change records in a database only if you have authorization to do so. At Vintage Music Shop’s site, for example, customers do not have authorization to change album prices or alter the name of the songs on an album. The process of purchasing an album, however, does cause an update in the Vintage Music Shop database. Suppose you purchase Elvis Presley’s G.I. Blues album. Your purchase reduces the number of G.I. Blues albums in Vintage Music Shop’s inventory. To accomplish this update, one of the software modules in Vintage Music Shop’s inventory system issues an SQL UPDATE command to reduce the number in the InStock field of the G.I. Blues record: INFOWEBLINKS From all these examples, you can tell that SQL is a key factor in database manipulation. At the SQL InfoWeb, you’ll find additional examples and links to tutorials. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 UPDATE Albums SET InStock = InStock - 1 WHERE AlbumTitle = ‘G.I. Blues’ Is it possible to update a group of records? In addition to changing the data in a single record, SQL can perform a global update that changes the data in more than one record at a time. Suppose you’re Vintage Music Shop’s marketing manager, and you want to put all Rolling Stones albums on sale by reducing the DiscountPrice to $9.95. You could do it the hard way by searching for an ArtistName field that contains Rolling Stones, adjusting the DiscountPrice field for that record, and then looking for the next Rolling Stones album. However, it would be easier to change all the records with a single command. The following SQL statement accomplishes this global update: UPDATE Albums SET DiscountPrice = 9.95 WHERE ArtistName = ‘Rolling Stones’ Let’s see how this command performs a global update. The UPDATE command means you want to change the data in some or all of the records. Albums is the name of the record type containing the data you want to change. SET DiscountPrice = 9.95 tells the DBMS to change the data in the DiscountPrice field to $9.95. WHERE ArtistName = ‘Rolling Stones’ tells the DBMS to change only those records where the artist name is Rolling Stones. What are the limitations of the global UPDATE command? Although the global UPDATE function is powerful, it works only for records that have similar characteristics—for example, all albums by the Rolling Stones or all albums produced in 1955. Custom programming is required to perform global operations on information that does not have any similar characteristics. Figure 11-49 provides an example. Vintage Music Shop’s marketing manager picks ten albums each week to place on a special promotional sale. These albums have no common data that can be used to formulate a global UPDATE command. FIGURE 11-49 Database designers can write modules that provide custom update capabilities. Hard Blue Day’s Ni ght H Stran awaii Chea ge Days p Yello Thrills w Surfi Subma n r Blon ’ Safari ine de o n Drag Blon o de Rubb n Fly er So Anth em o ul f the Sun Custom programming would allow the marketing manager to simply submit a list of ten albums as a document. The module would “read” the document and issue an UPDATE command for each of the chosen albums. 651 DATABASES JOINING TABLES How is data retrieved from more than one table at a time? Recall that the process of normalization creates tables that can be related by fields that exist in both tables. In SQL terminology, creating a relationship between tables is referred to as joining tables. Suppose you want some information on Elvis Presley’s G.I. Blues album. It would be nice to see not only the album name and cover, but also a list of the songs included on the album. The songs, however, are not stored in the same table as the rest of the album data. The Albums table holds the album name, the artist’s name, the release date, and other data about the album. The Tracks table holds the name of each song track, the track length, and an MP3 sample of the track. Both tables also contain a Cat# field. FIGURE 11-50 Records in the Albums table and Tracks table both include a Cat# field. When the data in these fields is the same, the records refer to the same entity—in this case, an Elvis Presley album called G.I. Blues. Earlier in the chapter you learned that a relationship can exist between Vintage Music Shop’s Albums table and Tracks table, based on the data in the Cat# field, as shown in Figure 11-50. ALBUMS R# Cat# AlbumTitle 1 LPM-2256 G.I. Blues 2 7499-2 ArtistName Release Date In Stock Value Elvis Presley 10/01/1960 4 20.00 02/06/1967 1 13.99 5 50.00 TrackSample 8 18.95 BlueSuede.mp3 Between the Buttons Rolling Stones TRACKS 3 LSP-246 Blue Hawaii Cat# 4 N16014 Surfin’ Safari LPM-2256 Elvis Presley TrackTitle 10/01/1961 Track Length Beach Boys 10/29/1963 Blue Suede Shoes 104 LPM-2256 Frankfort Special 132 FrankSpec.mp3 LPM-2256 Wooden Heart 163 WoodenHE.mp3 7499-2 Ruby Tuesday 197 RubyT.mp3 To take advantage of the relationship between these two tables, you first have to join the tables. Why? Remember that in a relational database, the tables are essentially independent unless you join them together. The SQL JOIN command allows you to temporarily join and simultaneously access the data in more than one table. How does the JOIN command work? A single SQL query can retrieve data from the Albums table and the Tracks table for Elvis Presley albums. To do so, however, requires some way to distinguish the data contained in each table. In the example, both tables contain a field called Cat#. How can you differentiate the Cat# field that belongs to the Albums table from the Cat# field in the Tracks table? SQL uses dot notation to make this distinction. Albums.Cat# is the full specification for the Cat# field in the Albums table. Tracks.Cat# specifies its counterpart in the Tracks table. 11 652 SECTION D, CHAP TER 11 When joining two tables, the convention is to use the full specification for table and field name. Figure 11-51 dissects an SQL query that joins two Vintage Music Shop tables. SELECT Albums.AlbumTitle, FIGURE 11-51 The JOIN command links the Albums and Tracks tables to produce the album name, cover, price, and tracks for item number LPM-2256. The SELECT clause specifies the fields that should appear. Albums.AlbumTitle refers to the AlbumTitle field of the Albums table. Albums.AlbumCover, Albums.DiscountPrice, Tracks.TrackTitle The JOIN command links the Albums and Tracks tables. FROM Albums JOIN Tracks on The tables are joined when the same data appears in the Cat# fields of records from the two tables. Albums.Cat# = Tracks.Cat# WHERE Album.Cat# = ‘LPM-2256’ The WHERE clause specifies that you want to see the album with item number LPM-2256. How extensive is SQL? In this section, you were introduced to some of the most commonly used SQL commands, and you explored how they might be used in the context of an e-commerce music business. SQL is a very extensive and powerful language that can be used not only to manipulate data, but also to create databases, tables, and reports. Because SQL is one of the most popular database tools, many computer professionals consider SQL fluency an essential career skill. SECTION D QuickCheck 1. SQL include SELECT, 5. FROM, and INSERT. 2. 3. To search for data in a specific field, you can use . the SQL command The term parameter refers to detailed specifica- 6. The SQL command can tions for a command. True or false? change the data in a specified field in one or In search specifications, AND, OR, and NOT are more records. examples of operators and are used to specify relationships between search 7. In SQL, the JOIN command allows you to add fields to a database. True or false? criteria. 4. In SQL, the DATA command adds fields to a database. True or false? X CHECK ANSWERS 653 DATABASES SECTION E Database Security IN THE PAST FEW YEARS, data for millions of people has been stolen, hacked, or simply gone missing. No one is quite sure what happened to a Bank of America backup tape containing personal information for 1.2 million federal employees, senators, and representatives. A U.S. Air Force spokesperson confirmed that personal data for 33,000 soldiers was hacked from an online system. A hacker gained access to a research database of 600,000 people registered with the California Department of Social Services. ChoicePoint, a consumer data firm, was duped into distributing personal information for more than 145,000 people. Consumers are alarmed that databases are so vulnerable. In Section E you’ll learn why. DATABASE VULNERABILITIES How vulnerable are databases? Databases are vulnerable to theft, hacking, and unauthorized access. A disk or tape containing a backup or archive could be stolen. A notebook computer containing a database used by a field representative or teleworker can go missing. Hackers can gain unauthorized access to a database over the Internet or an unsecured wireless connection. Legitimate database entry personnel could make unauthorized copies, changes, and deletions. The qualities that make databases efficient also make them vulnerable. Data stored in digital format is easy to copy, back up, store, and transmit. Although it would be impractical to steal millions of paper records from filing cabinets, to steal a digital database a criminal simply has to pocket a small backup drive or make a copy of the original database (Figure 11-52). FIGURE 11-52 Database theft is all too common. Electronic databases can typically be accessed over local area networks and the Internet, offering convenience to customers, clients, and employees. Security holes can allow intruders to infiltrate computer systems housing databases, copy data, delete it, or change it. When a database is illicitly copied, it is stolen but not missing, as it would be if a crook made off with the folders in a filing cabinet. The theft might not be discovered for days or weeks, if ever, preventing organizations and individuals from taking steps to prevent pilfered data from being misused. Easy access to information is an essential characteristic of a database. Many databases, however, contain confidential information, such as medical records, corporate memos, military plans, or financial data. Confidentiality breaches can occur when intruders gain access to a database, as well as when curious insiders make unauthorized queries. How do database security breaches affect individuals? There is hardly a person in America who is not in at least one computer database. Every time you fill out a survey, register to use a Web site, visit your doctor, use your credit card, or make a phone call, that information is stored somewhere in a database. According to the Electronic Frontier Foundation, the average American is in at least 50 commercial databases and the average Web user could be profiled in hundreds more. With personal data stored in so many databases and those databases at risk for being stolen or misused, citizens have valid concerns about their privacy, the validity of recorded data, and the security of their identities. 11 654 SECTION E, CHAP TER 11 Privacy is typically viewed as an inherent right. You expect personal information to remain confidential. When your data is in a computer database, there is a risk that it can be viewed by unauthorized individuals or distributed without your permission. Many people are concerned about misuse of medical records. Pregnant women are not always happy to get stacks of unsolicited mail with baby food, crib, and car seat ads. More insidious is the use of medical information by prospective employers, who might not hire atrisk employees who would become a burden on the corporate health insurance plan. But what about seemingly innocuous databases? Your local Blockbuster probably has a list of the movies you’ve rented. A preferred customer card at your favorite supermarket could be used to collect data about the groceries you purchase. Accepting the fact that personal data is stored in countless databases, it would be comforting to know that the data is accurate. However, data entry errors, update errors, and hacking all add to doubt about the veracity of database data. A mistake in your credit rating could prevent you from purchasing a car or home. A mixup in your student records could keep you out of graduate school. Criminals have become sophisticated in the use of cybertools, using bots, keyloggers, and redirection to access data stored on personal computers and corporate databases. The data stored in a single database is often sufficient to provide a criminal with enough information to access your bank account or use your credit card. New trends in data aggregation and analysis make it possible to assemble a detailed picture of an individual’s life with enough critical ID numbers and PINs to steal an entire identity and then run up debt, acquire a criminal record, and put a real person’s life in shambles. How do database security breaches affect organizations? When a database security breach occurs in a legitimate organization, its customers lose confidence and might take their business elsewhere. Conscientious businesses will try to assist victims of a data break-in by notifying them and offering guidance for changing PINs and watching for unauthorized account activity. The customer notification process is usually costly and can affect profitability. It also reduces productivity while the business devotes time and computer system resources to the notification effort. Most legitimate businesses are serious about database security and take steps—sometimes costly steps—to protect personal and corporate data. DATABASE SECURITY MEASURES Can databases be secured? Today’s computers are under assault from hackers and natural disasters. Although no computer system can be 100% secure, system administrators can take steps to secure computer systems and the databases they contain. Security measures include encryption, access controls, data security policies, and intrusion monitoring. How does encryption secure a database? Although encryption cannot prevent a database from being lost or stolen, it can make the data it contains unintelligible to a hacker. It might seem that a prudent approach to database security would be encrypting the entire database and leaving it that way, but encrypted databases are not always practical. Encrypted databases are less efficient than unencrypted databases. Typically all or part of the database has to be decrypted for the query to locate information. The process of decrypting database information in response to a query typically increases the amount of time necessary to process each query. INFOWEBLINKS For links to more information about database break-ins and security measures, connect to the Database Security InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 655 DATABASES Most active, operational databases are not encrypted while being used, but the data they contain can be encrypted before it is archived. Thieves who gain access to a database archive cannot make sense of the data if it is encrypted. Also, database data that’s transmitted over the Web can be encrypted using encryption technologies such as SSL or SHTTP. Encryption is a useful tool in the security arsenal, but database administrators must take additional steps to secure database data. What are access controls? An access control limits access to systems, such as computer databases. Access controls can block unauthorized users and limit activities of authorized users. IT professionals sometimes classify access controls as identification and authentication, authorization, and accountability. Identification and authentication determine who can log on to a system, authorization defines what an authenticated user can do, and accountability tracks what a user did. A simpler way to understand access controls is that they restrict the who and how of data access. Access controls do the following: • Control who accesses the database by restricting network and physical access to the computer that hosts the database. Physical access can be limited to authorized personnel by housing the computer in a locked data center. Online access can be limited by firewalls and passwords. System administrators should be sure to change all default administrator passwords before opening the database to internal and external users. Most DBMSs ship with a standard administrator password. Hackers know it. Surveys show that as many as 25% of businesses never remember to change it, leaving their systems wide open to unauthorized access. Security experts also recommend separating the server that hosts the database from the server that hosts publicly accessible services, such as Web pages. Database servers that supply information to Web servers should be configured to allow connections only from that Web server to prevent portjumping exploits from unauthorized intruders. FIGURE 11-53 A database administrator can limit the way individuals or groups access data. In this example, library patrons are given permission to read data in the Books table, but they cannot update, insert, or delete data from it. • Control how users interact with the database by defining user privileges and views. Customers, clients, and even most employees who use a database have no need to change its structure by adding fields, changing field names, and setting keys. User privileges (also referred to as user rights or permissions) delineate what activities a user can perform within a database. The lowest level privilege is read access, which allows a user to see the data, but not change it. Adding the write privilege allows a user to also change data in the database. Privileges can also be granted for deleting, adding, indexing, printing, and copying (Figure 11-53). A data view establishes which fields and records a particular user is allowed to access. In a medical insurance database, for example, a customer service representative might be allowed to view an insured person’s account, including the customer name and address; however the treatment summary might display only dates and charges, not the nature of the treatment. 11 656 SECTION E, CHAP TER 11 How can policies help to secure databases? A notebook computer is an easy target. Most thieves are after the hardware, but they might hit the jackpot if a computer contains a corporate or government database. To minimize vulnerabilities caused by employee inattention, organizations can formulate database use policies, such as requiring employees to log off the system before going to lunch and prohibiting employees from removing sensitive data from the workplace. A good set of policies decreases the risk of unauthorized access within the workplace, minimizes the chance of confidential data escaping from the workplace, and helps improve data entry accuracy. What can monitoring accomplish? A database audit is a procedure that monitors and records user activity within a database. In some instances, auditing can identify potential intruders before they can compromise a system. If an intruder breaches database security, an audit can help to identify the damage and correct it. Database auditing tools can be configured to keep a record of who is accountable for changes to the database, gather general usage statistics, or investigate suspicious activity (Figure 11-54). Tracking who makes changes in a database helps an organization maintain accountability, trace the source of errors, and make comprehensive corrections. If a database has been compromised by a hacker, for example, an audit report can be used to check recent changes to the database to make sure they are legitimate. General usage statistics help database administrators maintain optimal performance, so that query response is quick even at peak usage times. General statistics gathered by LAN management software, for example, can also reveal abnormal usage patterns and alert system administrators to possible intrusion attempts. If abnormal usage patterns become evident, database auditing tools can be configured to check specific types of database activity. For example, if a system administrator suspects that data is being surreptitiously deleted or changed, an audit can be set up to record any successful or unsuccessful deletions from tables in the database. DATABASE SECURITY REGULATIONS Is my government protecting me from database security breaches? International e-commerce has made database security a global concern and many countries have enacted laws to protect personal data stored on databases. For example, the European Union’s Privacy Directive 95/46/EC and Canada’s Personal Information Protection and Electronics Documents Act (PIPEDA) mandate that database breaches from accidental loss or electronic attack are disclosed, rather than swept under the carpet. Despite progress, governments around the world still have much work to do in designing and enforcing effective privacy laws. Canada, the European Union, and Japan have more stringent privacy regulations than the U.S. Although it leads the world in technology development, the United States has some of the weakest privacy regulations in the developed world. Its patchwork of laws regulates some types of databases, but not others. FIGURE 11-54 Database auditing software such as SoftTree Technologies DB Audit can be used to track intrusion attempts. 657 DATABASES Surprisingly, government databases have some of the most stringent regulations. The U.S. Privacy Act of 1974 requires government agencies to disclose to an individual the contents of his or her records. It places restrictions on how agencies can share an individual’s data with other people and agencies. The Act also requires agencies to follow “fair information practices” when gathering and handling personal data, and allows individuals to sue the government for violating its provisions. There are exceptions to the restrictions, such as when information is needed in the course of a criminal investigation. In addition, subsequent legislation, such as the USA PATRIOT Act, further delineates the rules governing the collection and use of data about U.S. citizens and visitors. Regulations in the private sector are, in many cases, less stringent than those imposed on the government. Most consumers probably have more to fear from private sector criminals than from government misuse of databases. One worrisome development has been criminal database aggregation. Here’s how it works. A hacker obtains a database containing moderately sensitive data, such as e-mail addresses and frequent flier account numbers. The list is sold to the highest bidder who devises a datarich phishing attack, like the one in Figure 11-55, to gain even more data. FIGURE 11-55 A bland but irritating spam that appears to originate from a legitimate air carrier might contain an opt-out clause that contains accurate data, such as your frequent flyer number. An average person reads this message and reasons, “If they have my frequent flyer number, it must be a legitimate site,” and proceeds to enter his or her PIN, which gets sent directly to a hacker. The hacker’s database, which now contains e-mail addresses, frequent flyer numbers and PINs, can be sold at a profit to another hacker who can devise other phishing schemes to gather even more data. Eventually, the database will contain a fairly complete dossier on its subjects, and it will be worth big bucks when sold to identity theft criminals. Laws governing private sector databases offer only spot coverage of specific types of data, such as telephone records. Laws dating back to the 1950s cover disclosure of telephone and cable records. A U.S. law also prohibits video rental stores from disclosing the titles of videos rented by customers. The Video Privacy Protection Act, passed in 1988, requires video stores to provide consumers with the opportunity to opt out from mailing lists that might be sold to other businesses. The Health Insurance Portability and Accountability Act (HIPAA) of 1996 addresses the security and privacy of medical records. Its privacy provisions protect all individually identifiable health information. Medical records that include an individual’s name, Social Security number, or other personal identification cannot be disclosed without consent. HIPAA’s security provisions prescribe policies, procedures, and reporting mechanisms that must be in place for all information systems that process medical records. The Gramm-Leach-Bliley Act of 1999 requires financial institutions to establish security standards that protect customer data from internal and external threats, including unauthorized access that occurs through networks and online systems. The law also contains an opt-out clause designed to protect consumer data from being sold or disclosed to third parties. Laws are complex, however, and the Gramm-Leach-Bliley Act includes a number of cases in which data can be shared. 11 658 SECTION E, CHAP TER 11 Seemingly reasonable steps to protect U.S. consumers have not yet been incorporated into comprehensive national database legislation. For example, in 2003 California passed CA SB1386, usually referred to as California’s Security Breach Information Act, which requires businesses to make timely disclosure of database security breaches to any California residents whose personal information might have been compromised. Unfortunately, an attempt to pass a similar law on the national level failed. The patchwork of U.S. law that applies to database security offers no guidelines that apply to all databases, leaving irritating loopholes that allow some types of personal data to be gathered, aggregated, and shared with third parties. Rules for financial databases are slightly different than for medical, telephone, cable, or video rental databases. Even if businesses adhere to the applicable database laws, consumers cannot be expected to understand the nuances for different types of databases and are therefore in the dark about their rights and responsibilities. Many consumer advocates are calling for comprehensive one-stop security-privacy legislation that applies to all databases. Can industry self-regulation be effective? Some business sectors have instituted their own regulatory standards, which can enhance the security blanket surrounding databases. For example, major credit card companies formulated the PCI (Payment Card Industry) Data Security Standards that specify security standards for merchants that handle credit card information. Participating merchants are responsible for the security of cardholder data and must not store certain types of data on their computer systems or the systems of third-party service providers. The PCI Data Security Standards are based on ISO 17799, an internationally recognized standard for information security practices. WHAT INDIVIDUALS CAN DO What can I do to minimize my vulnerability to database security breaches? You can’t protect your personal data once you’ve released it, so the key to minimizing your risk is to be vigilant about the information you divulge. Be aware of any activities that can possibly collect information about you for a database, such as registering to use a Web site, participating in a survey, submitting your resume to an online data bank, sending for a product rebate, participating in online discussion groups, clicking pop-up ads, and so on. Sometimes the gains aren’t worth the risk or the potential nuisance of dealing with a deluge of junk mail. When asked for information, supply only what’s required. Never divulge your Social Security number and be cautious about other personal information, such as your telephone number or address. When in doubt, you might consider using phony data. Make sure you look for the opt-out button if you don’t want your data distributed to third parties. Some Web sites have the opt-in button selected as the default and if you don’t want your data distributed, you will need to change to the opt-out status. Consider using a USB flash drive containing a portable password manager that stores strongly encrypted passwords and enters them when you want to access a password protected database or site, but can be removed from your computer when it is not in use to foil intrusion attempts (Figure 11-56). Be wary of offers for free services in exchange for personal information or permission to track your online footprints. FIGURE 11-56 Portable password managers that you can use from a USB flash drive include: • Siber Systems RoboForm2go • DobySoft KeyPass • Bruce Schneier’s Password Safe • Dominik Reichl’s KeePass 659 DATABASES Make sure your antivirus software is running and up-to-date. Use a personal firewall and pop-up blocker to protect your computer from unauthorized intrusions. Never send personal information in response to an e-mail request that could be a phishing attack from an illegitimate source. When a privacy policy exists, check it out—especially the part that explains whether your data might be shared with a third party (Figure 11-57). Even if the policy indicates that data will not be shared, don’t assume the data will never be released. You’ll have to weigh the sensitivity of the data and the dependability of the source to decide whether to supply the requested data. FIGURE 11-57 Investigate a site’s privacy policy before you provide personal information. X Learn more about protecting your privacy online. SECTION E QuickCheck 1. cannot prevent a database 4. The Gramm-Leach-Bliley Act of 1999 requires institutions in the U.S. from being lost or stolen, but it can make the data 2. it contains unusable. to establish security standards that protect cus- The lowest level of permission allows users tomer data from internal and external threats. access to a database. 3. 5. A(n) password manager is a procedure stores strongly encrypted passwords and enters that monitors and records user activity within a them when you want to access a password pro- database. tected database or site, but can be removed from A database your computer when it is not in use to foil intrusion attempts. X CHECK ANSWERS 11 660 CHAP TER 11 Issue: Do You Want a National ID Card? THE 9/11 TERRORIST ATTACKS were a wake-up call for America to shore up its defenses. Terrorists who boarded planes that September morning were ready to show legitimate driver licenses if questioned about their identity. The ensuing national security investigation reported the obvious: U.S. borders were porous and there was really no way to differentiate between legal and illegal residents. The 9/11 Commission recommended ID cards as an important step in combating terrorist threats. Shortly after the 9/11 attacks, 70% of Americans surveyed liked the idea of a national ID card. Recent polls show continued support for a national ID card among the majority of Americans. Most states have developed security enhancements for driver licenses that comply with the requirements for federally approved ID cards. For example, Florida now issues a driver license with 17 layers of security. Each license contains three photos, including one that can be seen only under ultraviolet light. The card’s security features make it difficult for a terrorist, illegal immigrant, or identity thief to alter or forge the data. National ID cards are used all over the world to enhance national security, unmask potential terrorists, and guard against illegal immigrants. More than 100 European, Asian, and South American countries require their citizens to carry government-issued ID cards at all times. In 2005, the U.S. Congress passed the Real ID Act, a cleverly crafted piece of legislation that doesn’t directly establish a national ID, but forces individual states to issue an approved ID card and link together the databases that contain card holder data. People born on or after December 1, 1964 will be required to have a Federal ID card by 2014. People born before that date will have until 2017 to obtain their ID cards. Without an approved ID card, it will be much more difficult to open a bank account, travel on an airplane, collect Social Security payments, or obtain other government services. ID cards can be issued by states, but the card format must be approved by the federal Department of Homeland Security. The cards must include anticounterfeiting technology and contain a version of the data in a standardized machine-readable format, such as on a magnetic strip or an embedded RFID chip. Civil liberties watchdogs are suspicious of RFID chips, which can be read from a distance without notifying the card holder. Unauthorized access and abuse of data contained on the card could lead to security breaches. Magnetic strip technology, however, is less threatening because it is used for credit cards that many people currently carry. So now that a national ID card is about to become reality, why did states such as New Hampshire, with its “live free or die” motto, oppose the Real ID Act? Why was the Act opposed by more than 600 organizations, including the American Library Association, the American Association of Motor Vehicle Administrators, the Association for Computing Machinery, the American Immigration Lawyers Association, the National Conference of State Legislatures, the National Association of Evangelicals, and the National Governors Association? The card in and of itself is harmless. People carry all kinds of identification cards. The controversy stems from a clause in the Real ID Act that requires states to link their ID databases in order to discover duplicate applications, monitor potential terrorists, and uncover illegal immigrants. Opponents to the Real ID Act fear that a massive centralized ID database could be abused by government agencies, businesses, and criminals. Although most Americans are willing to accept national ID cards, far fewer support a national ID database. The Real ID Act contains provisions that require states to store and share ID data, including name, birth date, gender, ID number, address, digitized 661 DATABASES photo, and biometric data such as a digitized fingerprint or retinal scan. Barry Steinhardt, director of the American Civil Liberties Union’s technology and liberty program, explains, “It’s going to result in everyone, from the 7-Eleven store to the bank and airlines, demanding to see the ID card. They’re going to scan it in. They’re going to have all the data on it from the front of the card...It’s going to be not just a national ID card but a national database.” Presumably, the database and electronic scanning technology will work together so that the card can be swiped, data transmitted to the central database, and verified. That scheme has privacy advocates worried. Will a simple ID card scan to verify your identity at your neighborhood supermarket add data about the transaction to the national database? How much other data might be collected? Will the government ID database eventually contain detailed dossiers on every citizen? editorial in Scientific American points out, “Suppose that there are 1,000 terrorists in the U.S. and that the data-mining process has an amazing 99 percent success rate. Then 10 of the terrorists will probably still slip through—and 2.8 million innocent people will also be fingered.” The government is only one potential source of abuse for a national ID database; businesses are another. If a business can scan an ID card to validate it, the reader might also be able to copy the data into the business’s own database to use for mass mailings and other marketing activities. Some stores would want to collect and store ID data “just until the check clears,” but who is to say that the data would not be stored longer and sold to a credit union, for example, or mailing list broker? A national ID database would also draw the attention of every hacker in the world. The database would be, as one analyst colorfully put it, the “big red target, the bullseye, the holy grail of black hats.” Optimists hope that encryption will protect the data. However, the encryption technology used for a prototype RFID passport planned for use by the Netherlands was hacked in just two hours by a security firm partnering with a local television show. Laws to limit additional data collection and restrict access could help prevent abuse of a national ID database, just as the Fourth Amendment protects citizens against illegal searches and seizures. However, many citizens in this country founded on liberty do not find that idea reassuring. Privacy watchdogs continue to monitor a National Security Agency data mining project designed to pre-emptively identify terrorists by looking for suspicious patterns in library book borrowing, car rentals, e-mail, banking, and other transactions. A similar system applied to a dossier-like national ID database has ramifications even for law abiding citizens. As an What Do You Think? INFOWEBLINKS You’ll find lots more information about this issue at the Database Privacy InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 I S S UE 1. Do you support the idea that a national ID card can help combat terrorism and help secure U.S. borders? Yes No Not sure 2. Are you comfortable about the tradeoff between privacy and security that accompanies a national ID database? Yes No Not sure 3. Do you think most citizens are well informed about the privacy risks associated with a national ID database? 4. Will you get a national ID card? Yes No Not sure Yes No Not sure X SAVE RESPONSES 11 662 CHAP TER 11 Computers in Context: Medicine THE HEALTH CARE INDUSTRY was an early adopter of computer technology for traditional data processing applications, such as client billing and employee payroll. A computer’s ability to process and store thousands of records helps reduce hospital administrative costs. Linking hospital billing to health insurance companies streamlines cumbersome manual procedures for submitting insurance claims. These behind-the-scenes applications do not, however, directly affect the quality of health care, where computer technology has recently made a significant contribution. Until recent years, paper charts dangled from the foot of every hospital bed and additional information was stored in thick file folders in nursing stations or the hospital’s medical records department. Patient records include doctors’ diagnoses, laboratory test results, medication schedules, and charts depicting a patient’s vital signs. The process of maintaining these paper-based records is time consuming and quite open to errors. Effective treatments might be dangerously delayed while a slip of paper that holds laboratory results wends its way through the hospital corridors. In a hospital where a patient’s condition can change suddenly and unexpectedly, health care providers need instant and ubiquitous access to the information contained in the patient’s record. Today, technology allows hospitals to store patient records in computer databases that are instantly accessible to doctors, nurses, and other health care workers. A nurse can access a patient’s record from a computer in the nursing station to check care instruc- tions and enter vital statistics. Doctors can access a patient’s record from an office or home computer to check progress, order tests, and make decisions when minutes count. Lab technicians can enter test results immediately into a patient’s record. Patient records tie into a comprehensive hospital information system (HIS) that integrates just about every aspect of hospital management. Even the hospital dietitian can access relevant parts of a patient’s record to work out menus that fit a patient’s dietary needs, while avoiding allergies. According to technology pioneer Ray Kurzweil, “medicine is among the most knowledge-intensive professions.” Most doctors agree that medicine has grown too complex to have all the answers “in their heads.” Today, in just about every aspect of their practices, doctors use computer applications and Internet technologies. At one time, doctors dictated the results of an examination or surgical procedure. The dictated notes were later transcribed into computer records by staff members. Today’s technology allows doctors to enter this information directly into computerized patient records by typing or by dictating into a speech recognition system that digitally converts the spoken word into computer text. The Internet supplies physicians with many informational and diagnostic resources. Health libraries provide online access to reference databases, such as MEDLINE, and STAT!Ref. Doctors use drug databases to choose appropriate medications, avoid dangerous drug interactions, determine correct dosages, and print out prescriptions. One pediatrician says, “I use the computer to make sure the medicine will work with any other medicines the patient takes, the patient won’t be allergic, and to check for warnings about certain foods or alcohol.” Hospitals are ideal candidates for wireless technologies because just about everything and everyone is on the move, including doctors, nurses, patients, and equipment. Overlake Hospital in Bellevue, Washington is a model of future wired, paperless hospitals. Nurses tote portable computer stations, physicians use voice recognition software to enter prescriptions, and bar coded patient wrist bands help caregivers administer and track medications. 663 DATABASES The Internet’s ability to rapidly disseminate information worldwide makes it a crucial tool for tracking global health threats. During the H1N1 outbreak in 2009, Web sites maintained by the World Health Organization (WHO) and Centers for Disease Control (CDC) provided statistics on the spread of infection. They also kept doctors, researchers, and reporters up to date on efforts to identify the virus, develop a vaccine, and devise treatment options. Many doctors use Internet technology to communicate with their colleagues by e-mail and send imaging data, such as X-rays, to specialists. Telemedicine uses communications links to supply medical services at a distance. It can be used to provide specialty medical services to rural patients, and allow medical personnel from several locations to collaborate on patient diagnosis and treatment. Once limited to telephone consultations and fax transmission of paper-based patient records, today telemedicine takes full advantage of the Internet to transfer electronic patient records, still images, and even full motion video sequences. Images from diverse sources, such as X-rays, MRIs, and CT scans, stored in the standard DICOM (Digital Imaging and Communications in Medicine) format, can be easily transferred over the Internet and displayed using a single software package. Computers have become an integral part of modern medical equipment. The use of X-rays was a huge medical breakthrough in the early 1900s, but X-rays capture only a two-dimensional image. A technology called CT (computerized tomography) essentially assembles a series of X-ray images taken from slightly different angles. A computer works with the data to generate a three-dimensional image that can be rotated and viewed from any angle. Computers, data, and telecommunications technology team up in a number of mobile medical devices that have revolutionized emergency medical ser- vices. An EMS worker describes a device used to monitor cardiac patients: “We can do a comprehensive 12-lead EKG at the scene and the computer inside the LIFEPAK 12 tells us what kind of arrhythmia we may be dealing with and even gives us suggestions for treatments.” Today, most patients want to be informed participants in their health care team. Patients use Web sites such as MedlinePlus to find information on diseases, drugs, and treatment options. Doctors frequently recommend health-related Web sites and support groups to patients. Patients can gather information from these sites at their own pace and refer back to it as necessary. The availability of information on the Web reduces the need for doctors to make lengthy explanations that patients often cannot absorb or remember during an office visit. The computer’s use in medicine is not without potential pitfalls. Online patient records raise issues of confidentiality. Many patients are concerned about unauthorized access to their records by employers, human resources staff, and hackers. The Health Insurance Portability and Accountability Act (HIPAA) requires insurance companies to protect the privacy of their policy holders from inappropriate use or disclosure. Insurance company employees are allowed to look at clients’ personal health information only in the course of administering claims. Insurance companies are not allowed to disclose personal health information to any other company or to a client’s employer without permission. Insurance companies are, however, allowed to divulge information to government agencies if a serious threat to public health and safety exists. HIPAA also gives patients the right to amend incorrect or missing information in their records, and it allows clients to request a list of the disclosures. The next time you’re in a hospital or doctor’s office, look around for computers. You’re sure to find these essential tools used to improve the effectiveness of health care. INFOWEBLINKS You can find more information for this Computers in Context topic at the Computers and Medicine InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch11 11 664 CHAP TER 11 New Perspectives Labs On the BookOnCD To access the New Perspectives Lab for Chapter 11, start the BookOnCD, or other NP2011 BookOn product, and then click the icon next to the lab title below. X WORKING WITH DATABASE SOFTWARE IN THIS LAB YOU’LL LEARN: • How relational database software depicts data as tables, records, and fields • • • • • • • • • • • • How to use tables and forms to view data How to create a table How to use primary keys How to enter and edit data Why relationships between tables are so important How to sort data and create an index How to search for data How to set filters How to create queries How to view the SQL code for a query How to create a report How to modify a report in Design view LAB ASSIGNMENTS 1. Start the interactive part of the lab. Make sure you’ve enabled Tracking if you want to save your QuickCheck results. Perform each lab step as directed, and answer all the lab QuickCheck questions. When you exit the lab, your answers are automatically graded and your results are displayed. 2. A friend wants to create a table to store information about a collection of old books. List the fields you might include in the table to store information about the books. For each field, specify the field name, data type (text, numeric, date, etc.), and field length. Indicate the primary key(s), and describe how you would sort and/or index the data. 3. Use Microsoft Access or any available file or database management software to create the structure for the table you specified in Assignment 2. Enter at least ten records. Print a list of all your data. 4. Make a list of five queries that might be useful if your database had hundreds of records. Try these queries on your table. For each query, list the records that were selected. 5. Sketch a report on paper that uses some of the fields in your table. Make sure your report contains a title and headings for each field. Specify whether you would like to align your data at the right, center, or left of each column. Use your software to generate and print the report. 665 DATABASES Key Terms Make sure you understand all the boldfaced key terms presented in this chapter. If you’re using the NP2011 BookOnCD, or other NP2011 BookOn product, you can use this list of terms as an interactive study activity. First, try to define a term in your own words, and then click the term to compare your definition with the definition presented in the chapter. Access control, 655 BLOB, 635 Cardinality, 616 Case sensitive database, 636 Computed field, 635 Data dependence, 624 Data independence, 624 Data mining, 612 Data redundancy, 637 Data type, 634 Data view, 655 Data warehouse, 612 Database, 610 Database audit, 656 Database client software, 626 Database index, 639 Database model, 614 Database server software, 626 Database structure, 633 Date data type, 634 DBMS, 625 DELETE, 646 Dimensional database, 619 Distributed database, 626 Dynamic Web publishing, 628 Entity-relationship diagram, 616 Executive dashboard software, 613 Field, 615 Field format, 636 Field name, 615 Field validation rule, 636 Fixed-length field, 615 Flat file, 614 Global update, 650 Hierarchical database, 617 Hyperlink data type, 635 INSERT, 647 Integer data type, 634 JOIN, 651 Joining tables, 651 Logical data type, 634 Lookup routine, 637 Many-to-many relationship, 616 Memo data type, 634 Network database, 617 Normalization, 637 Object database, 620 Object-relational database, 621 ODBMS, 625 OLAP, 613 One-to-many relationship, 616 One-to-one relationship, 616 Parameters, 647 Predictive analytics, 613 Primary key, 634 RDBMS, 625 Real data type, 634 Record, 615 Record occurrence, 615 Record type, 615 Relational database, 618 Relationship, 616 Report generator, 642 Report template, 642 SELECT, 648 Server-side program, 628 Sort key, 639 Sort order, 639 SQL, 645 SQL keywords, 646 SQL query, 645 Static Web publishing, 627 Structured file, 614 Table, 618 Text data type, 634 Unstructured file, 614 UPDATE, 650 User privileges, 655 Variable-length field, 615 XForms, 629 XML, 630 XML DBMS, 625 11 666 CHAP T E R 1 1 Interactive Summary To review important concepts from this chapter, fill in the blanks to best complete each sentence. When using the NP2011 BookOnCD, or other BookOn product, click the Check Answers buttons to automatically score your answers. SECTION A: A is a collection of one-to- relationships, one-to-many rela- information, typically stored as computer files. The information tionships, or many-to-many relationships. The number of asso- it contains can be stored, updated, organized, output, distrib- ciations that can exist between two record types is referred to uted, searched, and analyzed. A filing cabinet full of folders as and papers would be classified as an ically by using file. A file uses a uniform format to store data for each person or thing in the file. The simplest model file that consists for storing data is a . Relationships can be depicted graph-relationship diagrams. databases allow only one-to-many rela- tionships. databases allow one-to-many data- and many-to-many relationships. of a single, two-dimensional table of data elements. Each bases exist as a series of tables that can be related by common row in the table is a , and each col- fields. A umn of the table is a . Each kind of over three or more dimensions. An . A record is referred to as a record record that contains data is sometimes referred to as a record database organizes relationships data- base stores data in objects that can be grouped into classes and defined by attributes and methods. . In databases, records can be related by X CHECK ANSWERS SECTION B: Flat files can be created and manipulated by The data in a database can be accessed over the Web. A simple using a variety of tools, including word processing and spread- process called sheet software. For databases composed of more than one a database report into an HTML document, which can be dis- record type, however, it is best to use a database management played by a browser. More sophisticated system, which is abbreviated as Web publishing produces data from a database on demand. An . -level database management system typically handles many simultaneous searches, but has limited capability to deal with multiple simultaneous updates. Handling billions of records and performing hundreds of transactions every second requires database software. Web publishing converts HTML forms and XForms not only provide search capabilities, but can also be used to add or modify data in a database with a Web browser. documents provide a Web- based data management tool that uses special tags as field names within a document. X CHECK ANSWERS 667 DATAB ASE S SECTION C: The first step in designing a relational data- field formats, field base is to define its fields by specifying a field name and data routines to reduce data entry errors. type. Integer, date, and data types are used for fields containing data that might be mathematically manipulated. The data type is used for fixed-length fields containing text that is not intended to be mathematically manipulated. The data type is used to store true/false data type can be used to store URLs. The The number of tables in a database can be determined by a process called , which helps a data- base designer group fields into record types and avoid data redundancy. A database designer must also consider how to sort or index records. The data type is a variable-length field for entering text. The or yes/no data. The rules, and lookup data type is used to store binary data, such as MP3 files or graphics. When designing fields, a database designer can also include key for a table specifies the order in which records are stored and indicates where new records are inserted in a table. A database provides an alternative way to organize records, using a series of keys and pointers to temporarily arrange data without affecting the physical sequence of records specified by the sort order. X CHECK ANSWERS SECTION D: SQL is a database query language that typi- that specify the details of the com- cally works behind the scenes as an intermediary between the mand. Records can be removed from a database using the database SQL software provided to users and command. Records can be added the database itself. Although the specifications for searches to a table using the SQL and other database tasks are collected by easy-to-use graphi- search for data, you can use the SQL cal user interfaces, those specifications are converted into SQL command. To change or replace the data in a field requires , which can communicate directly with the the SQL command. SQL also pro- vides a database. An SQL query contains SQL , such as SELECT, FROM, INSERT, JOIN, and WHERE, plus command. To command that can be used to temporarily consolidate two tables so that data can be accessed simultaneously from both of them. X CHECK ANSWERS SECTION E: Databases are vulnerable to theft, hacking, and unauthorized access. Although can help to identify the damage and cor- can- rect it. A patchwork of database security laws in the U.S. leaves not prevent a database from being lost or stolen, it can make loopholes that allow some types of personal data to be gathered, the data it contains unusable. This security technique, however, aggregated, and shared with third parties. Individuals can take is typically used for archived databases, rather than operational steps to protect their personal data by vigilantly monitoring what databases. Access controls can be used to restrict physical information is released, using strong passwords, running security access to a database, limit user privileges, and regulate data software, and becoming familiar with the that establish which fields a particular user policy for sites that store personal data. is allowed to access. Tracking database use is also an important security tool. If an intruder breaches database security, an X CHECK ANSWERS 11 668 CHAP T E R 1 1 Interactive Situation Questions Apply what you’ve learned to some typical computing situations. When using the NP2011 BookOnCD, or any other NP2011 BookOn product, you can type your answers, and then use the Check Answers button to automatically score your responses. 1. You’re working for a company that’s just getting started with a database project. Your supervisor wants “the most standard kind of database,” so you recommend using database management software. 2. You are analyzing a company’s customer and order information. Because each customer can place multiple orders, you know this is a(n) -to-many relationship. 3. names of the wholesalers from which you buy each item. Hot Rod Wholesalers just changed its name to Northern You are designing a record type that holds customer Rod and Reel, so you need to update your database. The information. You should use a(n) best way to accomplish this task would be to perform a(n) data type for the fields that hold information such as update that changes every instance telephone numbers and Social Security numbers because of “Hot Rod Wholesalers” to “Northern Rod and Reel.” although this data looks like numbers, you’ll never need to use it to perform mathematical calculations. 4. 7. company. You recognize that a many-to-many relationship You are creating a movie review database, and one field exists between an order and the items listed on the order. stores the “star rating” that a popular reviewer gave each That clue indicates that you should separate the data into movie. Movies are rated from one to four stars, so the Stars two field is valid only if the number is between 1 and 4. To 5. rule to filter the data , one called Orders and the other called Order Details. ensure that nobody enters a value below 1 or above 4, you can use a field You are designing the structure for a mail-order catalog 8. Your friend is working on some Web pages, and you notice as it’s entered into the table. that they contain tags such as <editor>Ella Ellison</editor> You want to print a professionally designed list of all the <born>1960/05/26</born>. records in your database. To organize and format the list, you use a report generator to create a reusable report You surmise that your friend is using instead of HTML. . 6. You own a fly-fishing shop and maintain an inventory database that, along with inventory data, stores the X CHECK ANSWERS Interactive Practice Tests Practice tests that consist of ten multiple-choice, true/false, and fill-in-the-blank questions are available on both the NP2011 BookOn products and the NP2011 Web site. The questions are selected at random from a large test bank, so each time you take a test, you’ll receive a different set of questions. Your tests are scored immediately, and you can print study guides that help you find the correct answers for any questions that you missed. X CLICK TO START 669 DATAB ASE S Learning Objectives Checkpoints Learning Objectives Checkpoints are designed to help you assess whether you have achieved the major learning objectives for this chapter. You can use paper and pencil or word processing software to complete most of the activities. 1. List eight ways the information in a database can be used and applied. 9. List the techniques that a database designer can use to reduce data entry errors. 2. Create a descriptive example that would help explain the concepts of data mining, data warehouses, predictive analytics, and OLAP to an average adult who has no technical expertise. 10. Using a real-world entity, like a comic book collection or a recipe file that can be stored in a database, divide the information into fields and record types. Explain the steps you need to take to normalize the data. 3. Define basic database terminology, such as fields, records, record types, record occurrences, and cardinality. 11. Using your own examples, explain the differences between sorting and indexing. 4. For each of the following pairs of record types, draw an ERD showing whether the relationship is one-to-one, one-to-many, or many-to-many: Author—Book Person—Social Security number House—Mailbox Musician—CD 12. Describe how a database report template works. List five principles for creating effective report templates. 13. Imagine that you must access a library card catalog using SQL. Write an SQL query that you would use to search for any books by J. K. Rowling in a table called Books, where authors’ names are stored in a field called AuthorName and book titles are stored in a field called Title. 5. Describe flat files and six other database models. Give examples that illustrate each model. 14. Explain the extent to which encryption, user privileges, and audits can secure a database. 6. Explain the capabilities of various data management tools, such as commercial applications, word processing software, spreadsheet software, custom data management software, and database management software. 15. Describe the status of privacy legislation in your country, providing examples of relevant laws and regulations. 7. Use diagrams to explain different ways of providing Web access to the data in a database. 16. List the steps you can take to protect your privacy and identity when working with databases. 8. Provide five examples of data you would store in real, integer, text, logical, date, memo, BLOB, and computed fields. Study Tip: Make sure you can use your own words to correctly answer each of the red focus questions that appear throughout the chapter. Concept Map Data File Fill in the blanks to correctly represent the hierarchy of relationships among the database terms used in this chapter. a. _______________ b. _______________ Data File Data File c. ____________ File Dimensional Database Objecte. _______________ f. _______________ Database Database d. _______________ Hierarchical Database Network Database g. _______________ Database Object h. _______________ (Relation) i. _______________ j. _______________ (Row) (Column) Attributes k. _______________ X CHECK ANSWERS 11 670 CHAP T E R 1 1 Projects CRITICAL THINKING Type your name into the Google search engine. How much information can you currently find about yourself? How much privacy are you willing to release? Create a table with rows for the following: name, address, e-mail address, SS#, credit card#, phone#, height, weight, gender, hobbies, medical history, employer, spouse name, children’s names. Put the following columns across the top: applying for a job, visiting the doctor, subscribing to a Web site, making an online purchase, opening a bank account, responding to an e-mail message, registering for classes. Add two more situations to the list. Use a check mark or OK to indicate if you would be willing to provide each type of information. Put an R in a column if you believe the information is legitimately required. Use a question mark when you’re not sure if the information is required. GROUP PROJECT Form a group of four to five students. Suppose you must design the record structure for a new information system that holds driver license data. Using your own driver licenses, design an effective record structure, indicating record types, field names, field lengths, and data types. Where appropriate, indicate ways that you could minimize data entry errors. Submit your record structure to your instructor. CYBERCLASSROOM Look at the Internet Movie Database (www.imdb.com) and search for your favorite movie. Examine the field names and content (i.e., title, genre, tagline) IMDb uses to organize data about movies. How would you distribute these fields among tables in a relational database? Create the structure for a database that you think duplicates the fields for the Internet Movie Database. You can use Microsoft Access or similar relational database management software. Send your structure to one other member of your team who will try to enter the data for at least three movies (you can limit the number of actors to five per movie). Your team partner should also send you comments for changes or improvements. When you are satisfied with the structure of your database, send it to your instructor. MULTIMEDIA PROJECT Create a multimedia database. At least two of the field types should be defined to hold media, such as photos, sounds, narration, or video. Set up a prototype of your database using software, such as Microsoft Access. You can create the media or download it from the Web, giving appropriate citations for its source. Populate your database with at least five records. Follow your instructor’s guidelines for submitting your database. RESUME BUILDER When you look for a job, you might send query letters and resumes out to several employers. To track the status of each, you can use a database. Use database or spreadsheet software to create a job-hunting database that includes company contact information plus fields to indicate the status of your inquiry. Load the database with at least five sample contacts. Make sure you can use the database to generate mailing labels. You should also be able to make queries to determine which job prospects are still “active” possibilities. Follow your instructor’s guidelines for submitting your database and mailing labels. GLOBALIZATION Computer databases often store personal information about the citizens of more than one country, yet privacy expectations and laws differ. For this project, explore the differences in privacy laws around the globe. Which countries have the strongest privacy laws and which have the weakest? Which laws would govern the data stored by multinational companies? As a global consumer, which databases would concern you most for potential privacy violations? Consolidate your thoughts into a one- to two-page paper and submit it to your instructor. ISSUE The Issue section of this chapter focused on the controversy surrounding national ID cards. To begin this project, consult the Database Privacy InfoWeb and link to the recommended Web pages to get an in-depth overview of the issue. Next, script the dialog for a town meeting between a group of typical small-town citizens and a panel that includes the head of Homeland Security, a representative of the American Civil Liberties Union (ACLU), and the head of your local driver license office. Follow your professor’s instructions for submitting your paper by e-mail or as a printed document. COMPUTERS IN CONTEXT The Computers in Context section of this chapter focused on several ways computers are used to enhance health care. It pointed out that many Web-based medical resources are available. For this project, explore the Web to find five sites: 1) a site that attempts to make a diagnosis based on a set of symptoms, 2) a site that provides information on various drugs used to treat diseases, 3) a site dedicated to providing information and patient support for a particular disease, 4) a site that evaluates medical care given at hospitals or nursing homes, and 5) a government site dedicated to health or medicine. Record the URL and name for each site, along with the organization that maintains it. Write a paragraph that describes each site’s content and who would find the site most useful. 671 DATAB ASE S On the Web STUDENT EDITION LABS w CLICK TO ACCESS THE NP2011 WEB SITE or open your browser and connect to www.cengage.com/computerconcepts/np/np2011. Lab results can be stored in the Universal Gradebook. Work hands-on in structured simulations practicing important skills and concepts ADVANCED DATABASES In the Advanced Databases Student Edition Lab, you will learn about the following topics: • • • Using primary and foreign keys • Using normalization to design a collection of tables without redundancy Identifying relationships between tables Identifying determinants, partial dependencies, and transitive dependencies CHAPTER COURSECAST TEST YOURSELF Use your computer or iPod to hear a five-minute audio presentation of chapter highlights. Review chapter material by taking these ten-question tests, then send your results to the Universal Gradebook. FLASHCARD COURSECAST ONLINE GAMES Interact with audio flashcards to review key terms from the chapter. Have some fun while refreshing your memory about key concepts that might appear on the next test. You can even send your results to the Universal Gradebook! DETAILED OBJECTIVES AND MORE! Make sure that you’ve achieved all the objectives for a chapter before it’s time for your test! At the NP2011 Web site you’ll also find Extra Content and InfoWebLinks. 11 12 Chapter Contents X SECTION A: PROGRAMMING BASICS Computer Programming and Software Engineering Programming Languages and Paradigms Program Planning Program Coding Program Testing and Documentation Programming Tools X SECTION B: PROCEDURAL PROGRAMMING Algorithms Expressing an Algorithm Sequence, Selection, and Repetition Controls Procedural Languages and Applications X X X SECTION C: OBJECT-ORIENTED PROGRAMMING Objects and Classes Inheritance Methods and Messages Object-oriented Program Structure Object-oriented Languages and Applications SECTION D: DECLARATIVE PROGRAMMING The Declarative Paradigm Prolog Facts Prolog Rules Input Capabilities Declarative Languages and Applications SECTION E: SECURE PROGRAMMING Black Hat Exploits Secure Software Development Mitigation X ISSUE: WHO’S MINDING THE ASYLUM? X COMPUTERS IN CONTEXT: AGRICULTURE Computer C Co omp pute uter Programming Programming Learning Objectives After reading this chapter, you will be able to answer the following questions by completing the outcomes-based Learning Objectives Checkpoints on page 739. 1 How many lines of code are in a typical computer program? 2 Do the activities performed by computer programmers differ from those performed by software engineers and systems analysts? 3 What’s the best computer programming language? 4 What is a programming paradigm? 5 How is a computer program created? 6 What kinds of errors are discovered when programs are tested? 7 In addition to programming languages, what other tools do programmers use? 8 What is an algorithm? 9 What’s the point of flowcharts, pseudocode, and structured English? 10 How do programmers make programs do things in the right order? 11 How does object-oriented programming work? 12 How does declarative programming work? 13 Is it easy to write Prolog rules? X NEW PERSPECTIVES LABS 14 What makes computer programs vulnerable to hackers? X REVIEW ACTIVITIES 15 How can programmers produce more secure code? X ON THE WEB 16 Can consumers take steps to avoid vulnerabilities that exist in software with code defects? Web Site Multimedia and Interactive Elements Visit the NP2011 Web site to access additional resources w that accompany this chapter. When using the BookOnCD, or other BookOn products, the are clickable to access multimedia resources. X icons 12 COMPUTER PROGRAMMING Pre-Assessment Quiz Take the pre-assessment quiz to find out how much you know about the topics in this chapter. X Apply Your Knowledge The information in this chapter will give you the background to: • Read simple computer programs written in Pascal, Java, and Prolog • Select programming tools appropriate for basic programming projects • Read program flowcharts, pseudocode, and structured English • Formulate algorithms • Visualize objects and classes that might be used in object-oriented computer programs • Take steps to avoid security problems that stem from software defects Try It CAN I WRITE A SIMPLE COMPUTER PROGRAM? Think about your favorite computer game. Chances are the program that makes it tick is huge and complex. Yet, all computer programs are based on simple ideas that are easy to grasp. Do the following steps to try your hand at writing a program that produces a message based on the time of day. Windows: 1. From the All Programs menu, select Accessories, then click Notepad. Mac: 1. From Finder’s Applications menu, select the Utilities folder, and then double-click Terminal. 2. When the Notepad window opens, type the following program: 2. When the Terminal window opens, type pico Greeting and then press the Enter key. REM Program to check time of day @echo off 3. In the blank entry area type the following program (make sure you put spaces where indicated): set time = %time% #!/bin/sh echo %time% TIMEOFDAY=$[ $(date + %H )] if %time% lss 12 echo Good Morning! echo TIME $TIMEOFDAY if %time% gtr 12 echo Good Day! if [ $TIMEOFDAY -lt 12 ]; then echo Good Morning! pause 3. Save the program in your main user folder C sers Your Name with the name Greeting.bat. Make sure you use bat as the file extension! Write down the full path (such as C sers Your Name). 4. Click the Start button, point to All Programs, point to Accessories, and then select Command Prompt. 5. When the black Command Prompt window opens, make sure the Command Prompt lists your main user folder (i.e., C sers Your Name). If you need to change it, type CD followed by the full path that you wrote down in step 3. 6. Type Greeting and press the Enter key. Your program should start, display the time and “Good Morning!” or “Good Day!”, depending on the time. 7. Close the Command Prompt window. else echo Good Day! ; fi 4. To save your program press Ctrl-O (hold down the Ctrl key while pressing O), press the Enter key, and then press Ctrl-X. 5. Back at the Terminal, type chmod 755 Greeting and then press the Enter key. 6. To run your program, type . Greeting and then press the Enter key. 7. Close the Terminal. 674 SECTION CHAP TER 12 A Programming Basics EVEN IF you are not planning to become a computer programmer or software engineer, you are likely to use many computer programs during your career. When you realize that your word processing software contains in excess of 750,000 lines of code, you can understand how a few bugs might exist. You can also understand why you would not want to undertake the task of writing word processing software on your own—that project is best left to professional programming teams. Although you would not typically write the productivity software you use, you might have an opportunity to participate in a software development project as a beta tester or some similar capacity. Understanding the basics of computer programming can help you constructively plan and productively participate in the development process. COMPUTER PROGRAMMING AND SOFTWARE ENGINEERING What is program code? As you learned in earlier chapters, a computer program is a set of step-by-step instructions that tell a computer how to solve a problem or carry out a task. The instructions that make up a computer program are sometimes referred to as code, probably because program instructions for first-generation computers were entered as binary codes. Coding refers to entering a list of commands that become a computer program. Today, program code contains familiar English-like words. Figure 12-1 illustrates the code for a short program that converts feet and inches into centimeters. 1. The first section of the program states there are 12 inches in 1 foot and 2.54 centimeters in 1 inch. FIGURE 12-1 A typical computer program consists of lines of code that tell a computer how to solve a problem or carry out a task. This program is written in a computer programming language called Pascal. program Conversion(input,output); const inchesPerFoot = 12; 2. The var (variable) section lists the factors that might change each time you use the program. centimetersPerInch = 2.54; var feet, inches, lengthInInches: integer; centimeters: real; 3. When you use the program, it asks you to enter the length you want to convert. begin write('What is the length in feet and inches?'); readln(feet, inches); 4. The program converts the length you entered into inches, then converts inches into centimeters. lengthInInches :=inchesPerFoot * feet + inches; centimeters :=centimetersPerInch * lengthInInches; writeln('The length in centimeters is ', centimeters:1:2) end. 5. Finally, the program displays the length in centimeters. 675 C O M PU T E R PR OGRA MMIN G A computer program is typically stored as a file and transferred into RAM when needed, but a computer program can also be embedded in computer hardware—in a ROM chip, for example. A computer program can exist as a single module that provides all the instructions necessary for a software application, device driver, or operating system. Alternatively, a computer program might consist of several modules that form a software application or operating system. How big is a typical computer program? Compared to commercial application software, the programs that you’ll work with in this chapter are relatively tiny. Windows 7 contains more than 50 million lines of code. Even a typical cell phone contains over a million lines of code. Research has shown that, on average, one person can write, test, and document only 20 lines of code per day. It is not surprising, then, that most commercial programs are written by programming teams and take many months or years to complete. Who creates computer programs? Computer programs are developed by computer programmers (programmers for short) or software engineers. Computer programmers typically focus on coding computer programs, whereas software engineers tend to focus on designing and testing activities (Figure 12-2). FIGURE 12-2 What’s the difference between computer programming and software engineering? Computer programming encompasses a broad set of activities that include planning, coding, testing, and documenting. Most computer programmers participate to some extent in all of these phases of program development, but focus on the coding process. Software engineering is a development process that uses mathematical, engineering, and management techniques to reduce the cost and complexity of a computer program while increasing its reliability and modifiability. It can be characterized as more formalized and rigorous than computer programming. It is used on large software projects where cost overruns and software errors might have disastrous consequences. Some software engineering activities overlap with the systems analysis and design activities presented in Chapter 10. To distinguish between the two, remember that systems analysis and design encompass all aspects of an information system, including hardware, software, people, and procedures. In contrast, software engineering tends to focus on software development. Although software engineers have the skills to design, code, test, and document software, they tend to focus on designing and testing activities. Software engineers approach these activities using formalized techniques based on mathematical proofs, computer science research, and engineering theory. For example, a computer programmer might code a search routine by simply instructing the computer to step through a list looking for a match. In contrast, a software engineer might consider several sophisticated methods for implementing the search, and select the one that provides the greatest efficiency based on the computer architecture and the data being processed. 12 676 SECTION A, CHAP TER 12 PROGRAMMING LANGUAGES AND PARADIGMS What is a programming language? A programming language, or computer language, is a set of keywords and grammar rules designed for creating instructions that a computer can ultimately process or carry out. Most people are familiar with names of popular programming languages, such as BASIC, C, Pascal, Fortran, Java, and COBOL. But many other programming languages, such as 8088 assembly, FORTH, LISP, APL, and Scratch, remain relatively unknown to the general public. The program you wrote at the beginning of the chapter to display a message based on the current time was written either in DOS scripting language (Windows) or Bash shell script (Mac). Just as an English sentence is constructed from various words and punctuation marks that follow a set of grammar rules, each instruction for a computer program consists of keywords and parameters that are held together by a set of rules. A keyword, or command, is a word with a predefined meaning for the compiler or interpreter that translates each line of program code into machine language. Keywords for the Pascal computer language include WRITE, READ, IF THEN, and GOSUB. The Greeting program you wrote used keywords such as ECHO, SET, IF, and PAUSE. Keywords can be combined with specific parameters, which provide more detailed instructions for the computer to carry out. Keywords and parameters are combined with punctuation according to a series of rules called syntax, as shown in Figure 12-3. write('The length is ', feet:1:2); Keyword Parameters FIGURE 12-3 An instruction for a computer program consists of keywords and parameters, formed into sentence-like statements according to a set of syntax rules. How are programming languages categorized? Programming languages are categorized in several ways. They can be divided into two major categories: low-level languages and high-level languages. They are also categorized by generation and by paradigm. What is a low-level language? A low-level language typically includes commands specific to a particular CPU or microprocessor family. Low-level languages require a programmer to write instructions for the lowest level of the computer’s hardware—that is, for specific hardware elements, such as the processor, registers, and RAM locations. Low-level languages include machine languages and assembly languages. FIGURE 12-4 A single high-level command does the work of multiple lowlevel commands. High-level Pascal command Total:=5+4 What is a high-level language? A high-level language uses command words and grammar based on human languages to provide what computer scientists call a level of abstraction that hides the underlying low-level assembly or machine language. High-level languages, such as BASIC, Java, Ada, and C, make the programming process easier by replacing unintelligible strings of 1s and 0s or cryptic assembly commands with understandable commands, such as PRINT and WRITE. High-level language commands eliminate many lines of code by substituting a single high-level command for multiple low-level commands (Figure 12-4). Low-level assembly commands LDA STA LDA ADD STA END 5 Num1 4 Num1 Total 677 C O M PU T E R PR OGRA MMIN G How did programming evolve from low-level to high-level languages? The first computers were programmed without programming languages. Technicians rewired a computer’s circuitry to prepare it for various processing tasks (Figure 12-5). The idea of storing programs in computer memory paved the way for computer programming languages, which allowed a programmer to write commands and load them into the computer for execution. Programming languages were very primitive at first, but they evolved through many generations into the computer languages of today. FIGURE 12-5 Technicians programmed the first computers by changing the circuitry. What was the first generation of programming languages? Machine languages were the first languages available for programming computers and, therefore, they are sometimes referred to as first-generation languages. In Chapter 1, you learned that a machine language consists of a set of commands, represented as a series of 1s and 0s, corresponding to the instruction set that is hard-wired into the circuitry of a microprocessor. A machine language is specific to a particular CPU or microprocessor family. For example, the machine language that is hardwired into an Intel Core 2 processor includes many unique commands that are not wired into older PCs with Intel 8088 microprocessors or Macintosh-based PowerPC microprocessors. Although machine languages continue to work on today’s computers, programmers rarely use machine languages to write programs. What is a second-generation language? An assembly language allows programmers to use abbreviated command words, called op codes, such as LDA for load, rather than the 1s and 0s used in machine languages. At the time assembly languages were first introduced, they were hailed as a significant improvement over machine languages, and came to be known as second-generation languages. Like a machine language, an assembly language is classified as a low-level language because it is machine specific—each assembly language command corresponds on a one-to-one basis to a machine language instruction. As you might expect, the assembly language instructions for an Intel Core 2 microprocessor differ from those for an 8088 or a PowerPC microprocessor. An assembly language is useful when a programmer wants to directly manipulate what happens at the hardware level. Today, programmers typically use assembly languages to write system software, such as compilers, operating systems, and device drivers. What is a third-generation language? When high-level languages were originally conceived in the 1950s, they were dubbed third-generation languages because they seemed a major improvement over machine and assembly languages. Third-generation languages used easy-to-remember command words, such as PRINT and INPUT, to take the place of several lines of assembly language op codes or lengthy strings of machine language 0s and 1s. Third-generation languages, such as COBOL and Fortran, were used extensively for business and scientific applications. Pascal and BASIC were popular teaching languages. C and its derivative languages remain popular today for system and application software development— for example, to develop Microsoft Windows and Linux. Many computer scientists believed that third-generation languages would eliminate programming errors. Errors certainly became less frequent, and program development time decreased significantly. Programmers using third-generation languages still made a variety of errors, however, so computer language development continued to progress. 12 678 SECTION A, CHAP TER 12 What is a fourth-generation language? In 1969, computer scientists began to develop high-level languages, called fourth-generation languages, which more closely resemble human languages, or natural languages, than do third-generation languages. Fourth-generation languages, such as SQL and RPG, eliminate many of the strict punctuation and grammar rules that complicate third-generation languages. Today, fourth-generation languages are typically used for database applications. A single SQL command, such as SORT TABLE Kids on Lastname, can replace many lines of third-generation code, as shown in Figure 12-6. SORT TABLE Kids on Lastname FIGURE 12-6 A single command written in a fourth-generation language can replace many lines of thirdgeneration code. PUBLIC SUB Sort(Kids As Variant, inLow As Long, inHi As Long) DIM pivot As Variant DIM tmpSwap As Variant DIM tmpLow As Long DIM tmpHi As Long tmpLow = inLow tmpHi = inHi pivot = Kids((inLow + inHi) \ 2) WHILE (tmpLow <= tmpHi) WHILE (Kids(tmpLow) < pivot And tmpLow < inHi) tmpLow = tmpLow + 1 WEND WHILE (pivot < Kids(tmpHi) And tmpHi > inLow) tmpHi = tmpHi - 1 WEND IF (tmpLow <= tmpHi) THEN tmpSwap = Kids(tmpLow) Kids(tmpLow) = Kids(tmpHi) Kids(tmpHi) = tmpSwap tmpLow = tmpLow + 1 tmpHi = tmpHi - 1 END IF WEND IF (inLow < tmpHi) THEN Sort Kids, inLow, tmpHi IF (tmpLow < inHi) THEN Sort Kids, tmpLow, inHi END SUB What about fifth-generation languages? In 1982, a group of Japanese researchers began work on a fifth-generation computer project that used Prolog—a computer programming language based on a declarative programming paradigm, which is described in detail later in the chapter. Prolog and other declarative languages became closely identified with the fifth-generation project and were classified by some experts as fifth-generation languages. Other experts disagree with this classification and instead define fifth-generation languages as those that allow programmers to use graphical or visual tools to construct programs, instead of typing lines of code. You’ll learn more about visual programming later in the chapter. What is the best programming language? Hundreds of programming languages exist, and each has unique strengths and weaknesses. Although it might be possible to select the best language for a particular project, most computer scientists would find it difficult to agree on one allaround best language. The table in Figure 12-7 on the next page briefly describes some of the programming languages discussed in this chapter. INFOWEBLINKS Programmers can choose from a wide array of programming languages. You can learn more about the most popular languages by visiting the Programming Languages InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 679 C O M PU T E R PR OGRA MMIN G FIGURE 12-7 Selected Programming Languages Ada: A high-level programming language developed under the direction of the U.S. Department of Defense and originally intended for military applications. LISP (LISt Processing): Developed in 1959 by famed artificial intelligence researcher John McCarthy, LISP is used for artificial intelligence applications. APL (A Programming Language): A scientific language used to manipulate tables of numbers. Pascal: Named in honor of Blaise Pascal, who invented one of the first mechanical adding machines, Pascal is a third-generation language developed to teach students programming concepts. BASIC (Beginner’s All-purpose Symbolic Instruction Code): Developed by John Kemeny and Thomas Kurtz in the mid-1960s, BASIC is a simple, interactive programming language. C: Developed in the early 1970s by Dennis Ritchie at Bell Laboratories, C is used today for a wide range of commercial software. C and C#: Languages derived from C that provide object-oriented (OO) capabilities. COBOL (COmmon Business Oriented Language): A procedural language developed in the early 1960s and used extensively for mainframe business applications. CPL (Combined Programming Language): A language developed in the 1960s for scientific and commercial programming. PL 1 (Programming Language 1): A complex business and scientific language developed in 1964 by IBM that combines Fortran, COBOL, and ALGOL. Prolog (PROgramming in LOGic): A declarative language developed in 1972 and used for artificial intelligence applications. REALbasic (RB): A modern OO version of BASIC that works cross platform on Windows, Macs, and Linux. RPG (Report Program Generator): An IBM programming platform introduced in 1964 for easily generating business reports. Scheme: A dialect of LISP, used for computer research and teaching. Eiffel: An advanced OO language developed in 1988 with syntax similar to C. Scratch: A simple, visual programming language based on Smalltalk/Squeak and used for teaching. Fortran (FORmula TRANslator): One of the original third-generation languages; developed in the 1950s and is still used today for scientific applications. SIMULA (SIMUlation LAnguage): Believed to be the first object-oriented programming language. Haskell: A functional programming language named for the mathematician Haskell Brooks Curry. Java: A C++ derivative developed by Sun Microsystems used extensively for Web-based programming. Smalltalk: A classic object-oriented programming language developed by Xerox researchers in 1980. Visual Basic: Windows-based software development kit created by Microsoft in the early 1990s designed for developing Windows-based applications. What is a programming paradigm? In addition to being classified by level and by generation, programming languages can also be classified by paradigm. Programmers approach problems in different ways. Whereas one programmer might focus on the steps required to complete a specific computation, another programmer might focus on the data that forms the basis for the computation. The phrase programming paradigm refers to a way of conceptualizing and structuring the tasks a computer performs. Quite a number of programming paradigms exist, and they are not mutually exclusive. A programmer might use techniques from multiple paradigms while planning and coding a program. Some programming languages support a single paradigm. Other programming languages—referred to as multiparadigm languages—support more than one paradigm. Figure 12-8 provides a brief description of today’s most popular programming paradigms. Sections B, C, and D of this chapter give you a detailed look at three classic paradigms—procedural, object-oriented, and declarative. Paradigm Languages FIGURE 12-8 Programming Paradigms Description Emphasizes linear steps that provide the computer with instructions on how to solve a problem or carry out a task Formulates programs as a series of objects and methods that interact to perform a specific task Focuses on the use of facts and rules to describe a problem Procedural BASIC, Pascal, COBOL, Fortran, Ada Object-oriented Smalltalk, C++, Java, Scratch Declarative Prolog Functional LISP, Scheme, Haskell Emphasizes the evaluation of expressions, called functions Visual Basic, C# Focuses on selecting user interface elements and defining event-handling routines that are triggered by various mouse or keyboard activities Event-driven 12 680 SECTION A, CHAP TER 12 PROGRAM PLANNING How does a programmer plan a computer program? Suppose a group of market analysts—or even a group of hungry students—wants to determine which pizza shop offers customers the best deal. Problems you might try to solve using a computer often begin as questions—for example, “Which pizza place has the best deal?” But such questions might not be stated in a way that helps you devise a method for a computer to arrive at an answer. A question like “Which pizza place has the best deal?” is vague. It does not specify what information is available or how to determine the best deal. Do you know the price of several pizzas at different pizza places? Do you know the sizes of the pizzas? Do you know how many toppings are included in each price? What does “best deal” mean? Is it merely the cheapest pizza? Is it the pizza that gives you the most toppings for the dollar? Is it the biggest pizza you can get for the $24.63 that you and your friends managed to scrape together? The programming process begins with a problem statement that helps you clearly define the purpose of a computer program. What is a problem statement? In the context of programming, a problem statement defines certain elements that must be manipulated to achieve a result or goal. A good problem statement for a computer program has three characteristics: • • • It specifies any assumptions that define the scope of the problem. It clearly specifies the known information. It specifies when the problem has been solved. Study Figure 12-9 and see if you can formulate a problem statement that is better than the initial vague question, “Which pizza place has the best deal?” What is an assumption? In a problem statement, an assumption is something you accept as true in order to proceed with program planning. For example, with the pizza problem, you can make the assumption that you want to compare two pizzas. Furthermore, you can assume that some pizzas are round and others are square. To simplify the problem, you might also assume that none of the pizzas are rectangular—that is, none will have one side longer than the other. This assumption simplifies the problem because you need to deal only with the size of a pizza, rather than the length and width of a pizza. A fourth assumption for the pizza problem is that the pizzas you compare have the same toppings. Finally, you can assume that the pizza with the lowest cost per square inch is the best buy. How does known information apply to a problem statement? The known information in a problem statement is the information that you supply to the computer to help it solve a problem. For the pizza problem, the known information includes the prices, shapes, and sizes of pizzas from two pizzerias. The known information is often included in the problem statement as givens. For example, a problem statement might include the phrase, “given the prices, shapes, and sizes of two pizzas... .” Factors, such as price, shape, and size, are often treated as variables in computer programs. A variable represents a value that can change. For example, the price of a pizza can vary or change, depending on the pizza shop from which it is purchased, so PizzaPrice could become a variable in the pizza program. In contrast, a constant is a factor that remains the same throughout a program. For example, the mathematical constant pi always FIGURE 12-9 Two pizza shops advertise special prices. Which one offers the best deal? Can you formulate a problem statement that describes the pizza problem? 681 C O M PU T E R PR OGRA MMIN G has a value of 3.142. Computer programmers think of variables and constants as named memory locations, equivalent to empty boxes where data can be temporarily stored while being manipulated by a computer program. In the Greeting program, %time% was a variable. The command set time = %time% put the value for the actual time into the %time% variable. How can a problem statement specify when a problem is solved? After identifying the known information, a programmer must specify how to determine when the problem has been solved. Usually this step means specifying the output you expect. Of course, you cannot specify the answer in the problem statement. You won’t know, for example, whether VanGo’s Pizzeria or The Venice has the best deal before you run the program, but you can specify that the computer should output which pizza is the best deal. Suppose we assume that the best deal is the pizza with the lowest price per square inch. For example, a pizza that costs 5 per square inch is a better deal than a pizza that costs 7 per square inch. The problem is solved, therefore, when the computer has calculated the price per square inch for both pizzas, compared the prices, and printed a message indicating which one has the lower price per square inch. You could write this part of the problem statement as, “The computer will calculate the price per square inch of each pizza, compare the prices, and then print a message indicating which pizza has the lower price per square inch.” What’s the problem statement for the pizza program? You can incorporate your assumptions, known information, and expected output into a problem statement, such as the one in Figure 12-10. Does the problem statement provide sufficient planning to begin coding? Formulating a problem statement provides a minimal amount of planning, which is sufficient for only the simplest programs. A typical commercial application requires far more extensive planning, which includes detailed program outlines, job assignments, and schedules. Several software development methodologies exist to help program designers and coders plan, execute, and test software. Methodologies can be classified as predictive or agile. A predictive methodology requires extensive planning and documentation up front. It allows little room for adaptation and change once specifications for the software have been completed in the design phase. Predictive methodologies are typically preferred for large software development projects involving more than ten developers, geographically dispersed development teams, and life-critical applications. TERMINOLOGY NOTE In the Mac program, TIMEOFDAY was a variable. The command TIMEOFDAY=$[ $(date + %H )] put the hour of the day into the TIMEOFDAY variable. FIGURE 12-10 Pizza Problem Statement Assuming that there are two pizzas to compare, that both pizzas contain the same toppings, and that the pizzas could be round or square, and given the prices, shapes, and sizes of the two pizzas, the computer will print a message indicating which pizza has the lower price per square inch. In contrast to predictive methodologies, an agile methodology focuses on flexible development and specifications that evolve as a project progresses. In an agile-driven project, for example, programmers might produce a subset of the entire project, show it to users, and then plan the next phase of development based on the feedback received. Agile methods seem best for projects with a small core of developers working at a single location. To some extent, program planning depends on the language and paradigm used to code a computer program. Program planning tools, such as flowcharts, structured English, pseudocode, UML diagrams, and decision tables, are discussed in Sections B, C, and D of this chapter. Regardless of the tools used, when planning is complete, programmers can begin coding, testing, and documenting. 12 682 SECTION A, CHAP TER 12 PROGRAM CODING How do I code a computer program? The process of coding a computer program depends on the programming language you use, the programming tools you select, and the programming paradigm that best fits the problem you’re trying to solve. Programmers typically use a text editor, program editor, or VDE to code computer programs. What is a text editor? A text editor (sometimes referred to as a generic text editor) is any word processor that can be used for basic text editing tasks, such as writing e-mail, creating documents, or coding computer programs. Notepad, the accessory program supplied with Microsoft Windows, is one of the most popular text editors used for programming PCs. Text editors such as Pico and TextEdit are popular on Macs. When using a text editor to code a computer program, you simply type in each instruction. The lines of code are stored in a file, which can be opened and modified using the usual editing keys. TERMINOLOGY NOTE Files produced with a text editor are sometimes referred to as ASCII files. They don’t contain embedded codes for centering, bold, and other formatting attributes, which are not allowed in program code. What is a program editor? A program editor is a type of text editor specially designed for entering code for computer programs. These editors are available from several commercial, shareware, and freeware sources. Features vary, but can include helpful programming aids, such as keyword colorizing, word completion, keyboard macros, and search/replace. Figure 12-11 illustrates the difference between a text editor and a program editor. FIGURE 12-11 A text editor such as Notepad (top) allows programmers to enter lines of code using a familiar word processing interface. A program editor (bottom) offers tools more targeted to programmers. 683 C O M PU T E R PR OGRA MMIN G What is a VDE? A VDE (visual development environment) provides programmers with tools to build substantial sections of a program by pointing and clicking rather than typing lines of code. A typical VDE is based on a form design grid that a programmer manipulates to design the user interface for a program. By using various tools provided by the VDE, a programmer can add objects, such as controls and graphics, to the form design grid. In the context of a VDE, a control is a screen-based object whose behavior can be defined by a programmer. Frequently used controls include menus, toolbars, list boxes, text boxes, option buttons, check boxes, and graphical boxes. Figure 12-12 shows a form design grid and illustrates a variety of controls that can be added. FIGURE 12-12 A form design grid is an important part of a VDE. This form was designed for the pizza program using Visual Basic. A text box collects users’ typed input. A picture box holds a graphic. An option button can be selected by clicking the circle. A button waits for a user’s mouse click. A control can be customized by specifying values for a set of built-in properties. For example, a button control can be customized for the pizza program by selecting values for properties such as shape, color, font, and label (Figure 12-13). FIGURE 12-13 Controls, such as buttons, can be selected by a programmer from a properties list. Here a programmer is changing the text property of a button so that its label will be “Cancel”. X Learn how to work with properties in a VDE. To change the label for this button, the programmer first selects it. Using the properties list, the programmer clicks the Text property, and types a new label for the button. 12 684 SECTION A, CHAP TER 12 In a visual development environment, each control comes with a predefined set of events. Within the context of programming, an event is defined as an action, such as a click, drag, or key press, associated with a form or control. A programmer can select the events that apply to each control. For example, a programmer might decide that pizza program users will be allowed to left-click either the Round or Square Pizza button in each Pizza Shape box. Users will not be allowed to right-click, double-click, or drag these buttons, however. An event usually requires the computer to make a response. Programmers write event-handling code for the procedures that specify how the computer responds to each event. For example, if a user clicks an icon depicting a round pizza, an event-handling procedure might set a variable called pizzashape equal to round. When a user clicks the Best Deal button, another event-handling procedure must perform the calculations to determine which pizza is the best deal. Event-handling code is usually entered using a program editor supplied by the visual development environment. Figure 12-14 illustrates how event-handling code works. FIGURE 12-14 The “Best Deal” event-handling code tells the computer what to do when users click the Best Deal button. The event is clicking a button. The event-handling code is a list of instructions for calculating the price per square inch of two pizzas. Is a visual development environment better than an editor? A programmer’s choice of development tools depends on what is available for a particular programming language and the nature of the programming project. Microsoft Visual Basic was one of the first programming languages to feature a visual development environment. VDEs are not available for all programming languages, but they can be found for most of today’s popular programming languages, including C++, C#, Java, REALbasic, and Prolog. Text editors and program editors provide a fine toolset for programs with minimal user interfaces. Many so-called back-end applications, such as device drivers, middleware, and scripts embedded in HTML documents, require little or no user interaction and, therefore, can be created just as easily with an editor as with a visual development environment. 685 C O M PU T E R PR OGRA MMIN G A visual development environment is a powerful tool for programming software applications for GUI environments, such as Windows, Linux desktops, and Mac OS. Most GUI applications are event-driven, which means that when launched, the program’s interface appears on the screen and waits for the user to initiate an event by clicking a menu, dragging an object, double-clicking an icon, typing text, or clicking a button. The fact that the sequence of user actions cannot be predicted introduces a level of complexity that doesn’t fit well with traditional programming languages, which tend to approach programs as a fixed sequence of procedures. Visual development environments have spawned an approach to programming that is sometimes referred to as the event-driven paradigm, in which a programmer develops a program by selecting user interface elements and specifying event-handling routines. The programmer is never required to deal with the overall program sequence because the VDE automatically combines user interface elements and event-handling routines into a file that becomes the final computer program. This event-driven paradigm can significantly reduce development time and simplify the entire programming process. PROGRAM TESTING AND DOCUMENTATION How does a programmer know if a program works? A computer program must be tested to ensure that it works correctly. Testing often consists of running the program and entering test data to see whether the program produces correct results. If testing does not produce the expected results, the program contains an error, sometimes called a bug. This error must be corrected, and then the program must be tested again and again until it runs error-free. FIGURE 12-15 Common Syntax Errors What can cause program errors? When a program doesn’t work correctly, it is usually the result of an error made by the programmer. A syntax error occurs when an instruction does not follow the syntax rules, or grammar, of the programming language. For example, the BASIC command If AGE = 16 Then "You can drive." produces a syntax error because the command word PRINT is missing. The correct version of the command is If AGE = 16 Then Print "You can drive." Syntax errors are easy to make, but they are usually also easy to detect and correct. Figure 12-15 lists some common syntax errors. Another type of program bug is a runtime error, which, as its name indicates, shows up when you run a program. Some runtime errors result from instructions that the computer can’t execute. The BASIC instruction DiscountPrice = RegularPrice/0 produces a runtime error because dividing by 0 is a mathematically impossible operation that the computer cannot perform. Some runtime errors are classified as logic errors. A logic error is an error in the logic or design of a program, such as using the wrong formula to calculate the area of a round pizza. Logic errors can be caused by an inadequate definition of the problem or an incorrect formula for a calculation, and are usually more difficult to identify than syntax errors. How do programmers find errors? Programmers can locate errors in a program by reading through lines of code, much like a proofreader. They can also use a tool called a debugger to step through a program and monitor the status of variables, input, and output. A debugger is sometimes packaged with a programming language or can be obtained as an add-on. • Omitting a keyword, such as THEN • Misspelling a keyword, as when mistakenly typing PIRNT instead of PRINT • Omitting required punctuation, such as a period • Using incorrect punctuation, such as a colon where a semicolon is required • Forgetting to close parentheses 12 686 SECTION A, CHAP TER 12 Do computer programs contain any special documentation? TERMINOLOGY NOTE Anyone who uses computers is familiar with program documentation in the form of user manuals and help files. Programmers also insert documentation called remarks into the program code. Remarks are identified by language-specific symbols, such as // in Java, or keywords, such as Rem in BASIC. Remarks are sometimes called comments and the process of adding remarks is sometimes referred to as commenting the code. Remarks are useful for programmers who want to understand how a program works before modifying it. For example, suppose you are assigned to make some modifications to a 50,000-line program that calculates income tax. Your task would be simplified if the original programmer included remarks that identify the purpose of each section of the program and explain the basis for any formulas used to perform tax calculations. A well-documented program contains initial remarks that explain its purpose and additional remarks in any sections of a program where the purpose of the code is not immediately clear. For example, in the pizza program, the purpose of the expression 3.142 * (size1 / 2) ^2 might not be immediately obvious. Therefore, it would be helpful to have a remark preceding the expression, as shown in Figure 12-16. FIGURE 12-16 A series of remarks in a BASIC program can explain to programmers the method used to calculate the square inches in a round pizza. Rem The program calculates the number of square inches Rem in a round pizza using the formula pi r squared Rem pi = 3.142, size/2 = radius, Rem and (size/2)^2 = radius squared Rem SquareInches = 3.142*(size/2)^2 PROGRAMMING TOOLS Where can I get programming tools? Some programmers like to obtain programming tools a la carte by picking up a compiler from one Web site, selecting an interactive debugger from another Web site, and using any handy editor, such as Notepad. More typically, programmers download or purchase an SDK or IDE that contains a collection of programming tools. An SDK (software development kit) is a collection of language-specific programming tools that enables a programmer to develop applications for a specific computer platform, such as Windows PCs. A basic SDK includes a compiler, documentation about the language and syntax, and installation instructions. More sophisticated SDKs might also include an editor, a debugger, a visual user interface design module, and APIs. The components of an SDK are sometimes a hodgepodge of tools without consistent user interfaces for the programmer. For a more polished development environment, programmers turn to IDEs. An IDE (integrated development environment) is a type of SDK that packages a set of development tools into a sleek programming application. The modules in the application—editor, compiler, debugger, and user interface development tool—have a uniform set of menus and controls, which simplifies the programming process. INFOWEBLINKS Programmers can select from a wide variety of components. To find out what’s available, connect to the Programming Tools InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 687 C O M PU T E R PR OGRA MMIN G SDKs and IDEs are available on the Web as shareware or commercial products. Some of these development tools—especially IDEs—are so large that they are not practical to download without a high-speed Internet connection. For programmers limited to dial-up speeds, SDKs and IDEs can be ordered on the Web and shipped on CDs. Do I need components for my programming projects? Every feature of a lengthy computer program is not necessarily created from scratch. Components can be incorporated into a program, saving days, weeks, or months of programming time. A component is a prewritten module, typically designed to accomplish a specific task. For example, one component might provide spreadsheet capabilities, while another component might provide encryption capabilities. What’s an API? In the context of computer programming, API is an abbreviation for application program interface or application programming interface. An API is a set of application program or operating system functions that programmers can access from within the programs they create. For example, the Windows API includes code for an assortment of dialog box controls familiar to anyone who uses a PC. The ability to browse through file folders is one element of the Windows API that might be useful in any application program that allows users to open or save files. APIs are usually supplied as part of an SDK. Do programmers use standard programming tools to develop computer games? Creating a computer game is a multifaceted project that includes creating a multiple-level virtual world, populating it with autonomous and user-controlled characters, providing characters with weapons and food, determining how characters interact with objects, adding sound effects, and keeping score (Figure 12-17). At the core of every computer game is a program that ties together the virtual game world, characters, weapons, and other objects. Most of these programs are written using standard SDK and IDE programming tools. What’s the most popular programming language for game development? C, Java, and C++ are the most popular programming languages for commercial games. Serious game programmers universally learn those languages and Microsoft’s Visual C++ is their IDE of choice. Microsoft’s XNA framework is a set of popular tools for creating Xbox 360 games. Although many independent game developers use C and C++, some indies prefer languages such as BASIC and Java. Popular IDEs and SDKs for these languages include GLBasic, REALbasic, Visual Basic, JCreator, Sun Java Studio Creator, and Eclipse. FIGURE 12-17 Game development is a hot career field. Independent, or indie, game developers work on a freelance basis for game publishers or create their own games and market them as shareware. Commercial game developers collaborate with artists, animators, musicians, and even Hollywood stars to create arcade-style and adventure games for companies such as Electronic Arts, LucasArts, Nintendo, and Sony. What other tools are handy for game programmers? Computer games take place in virtual 3-D worlds populated by animated characters and objects that characters can pick up, move, open, and shoot. On commercial game projects, artists usually create, render, and animate game objects using bitmap, vector, 3-D, and animation graphics software. For indies without artistic talent, 3-D animated characters can be obtained from freelance artists who peddle their creations on the Web at sites such as www. dcafe.com/. A type of special effects software called a particle renderer helps developers create explosions, flares, fog, and fairy dust. Pathfinder algorithms distributed as APIs map character routes, limiting them to valid paths and preventing them from walking through walls (unless they are magic users). 12 688 SECTION A, CHAP TER 12 Developers also use a variety of audio and sound software to record, edit, and mix sound effects for gun shots, explosions, footsteps, and so on. Even non-musicians can generate upbeat background music by using MIDI or tracker software. Tracker sound effects, popular for PC-based computer games, combine MIDI music and instrument sound patches in one file. Commercially available artificial intelligence APIs and components can plug into programs to control the actions of autonomous, non-player controlled monsters and foes. Physics APIs can tie into objects to make them respond with life-like realism to gravity, momentum, and collisions. Digital rights management (DRM) tools are also available to help game developers protect their creations from piracy and illegal copying. Developers on the Windows platform use Microsoft’s DirectX SDK, a library of APIs designed specifically for game programming, to quickly and efficiently communicate with video hardware, sound hardware, networks, and input devices. Figure 12-18 lists graphics, audio, API, and DRM tools that are popular with game developers. You’ll find more information about game programming tools at the Programming Tools InfoWeb. How can I learn computer programming? You can learn the fundamentals of programming by taking a class or working with an online tutorial. When you’ve gained fluency in a programming language, you can hone your skills by participating in an open source software development project. When you join, you’ll be given a programming task by an online project manager. Your work will be reviewed by experienced members of the team who will help you meet the exacting standards of professional developers. 2. The instructions that make up a computer pro- 5. A(n) Special Effects Adobe After Effects wondertouch particleIllusion Audio Recording and Mixing Steinberg Cubase Adobe Audition Audacity MIDI Music Generators Sony ACID Music Studio Apple GarageBand DRM SOFPRO PC Guard Arxan GuardIT General Purpose API Libraries Microsoft DirectX Allegro Artificial Intelligence TADS 3 Artificial Intelligence Pathfinding Argorha PathEngine OpenSkyNet Physics Havok Physics development environ- ment provides programmers with tools to build false? substantial sections of a program by pointing and clicking. plan and develop Software 6. Programmers can use a software tool called a(n) to step through a program based on mathematical proofs, computer sciand find errors. ence research, and engineering theory. A programming language typically supports one 7. A(n) is a set of application , such program or operating system functions that pro- as procedural, object-oriented, event-driven, or grammers can access from within the programs declarative. they create. (Hint: Use the acronym.) or more programming 4. 3-D Object Modeling Autodesk Maya and 3ds Max Khronos Group OpenGL Caligari trueSpace gram are sometimes referred to as code. True or computer software using formalized techniques 3. Game Programming Tools SECTION A QuickCheck 1. FIGURE 12-18 -generation programming languages, such as COBOL and Fortran, use easy-to-remember command words. X CHECK ANSWERS 689 C O M PU T E R PR OGRA MMIN G SECTION B Procedural Programming EARLY APPROACHES to computer programming were based on writing step-by-step instructions for the computer to follow. This technique is still in widespread use today and provides an easy starting point for learning what programming is all about. In this section, the examples are written in BASIC because it is one of the easiest programming languages to grasp. ALGORITHMS What is procedural programming? The traditional approach to pro- TIP gramming uses a procedural paradigm (sometimes called an imperative paradigm) to conceptualize the solution to a problem as a sequence of steps. A program written in a procedural language typically consists of self-contained instructions in a sequence that indicates how a task is to be performed or a problem is to be solved. This chapter presents some fairly technical material. You might want to consider taking a break between sections. A programming language that supports the procedural paradigm is called a procedural language. Machine languages, assembly languages, COBOL, Fortran, C, and many other third-generation languages are classified as procedural languages. Procedural languages are well suited for problems that can be easily solved with a linear, step-by-step algorithm. Programs created with procedural languages have a starting point and an ending point. The flow of execution from the beginning to the end of a program is essentially linear—that is, the computer begins at the first instruction and carries out the prescribed series of instructions until it reaches the end of the program. What is an algorithm? An algorithm is a set of steps for carrying out a task that can be written down and implemented. For example, the algorithm for making a batch of macaroni and cheese is a set of steps that includes boiling water, cooking the macaroni in the water, and making a cheese sauce (Figure 12-19). The algorithm is written down, or expressed, as instructions in a recipe. You can implement the algorithm by following the recipe instructions. An important characteristic of a correctly formulated algorithm is that carefully following the steps guarantees that you can accomplish the task for which the algorithm was designed. If the recipe on a macaroni package is a correctly formulated algorithm, by following the recipe, you should be guaranteed a successful batch of macaroni and cheese. How do I write an algorithm? An algorithm for a computer program is a set of steps that explains how to begin with known information specified in a problem statement and how to manipulate that information to arrive at a solution. Algorithms are usually written in a format that is not specific to a particular programming language. This approach allows you to focus on formulating a correct algorithm, without becoming distracted by the detailed syntax of a computer program- FIGURE 12-19 The algorithm for making macaroni and cheese is expressed as a recipe. 12 690 SECTION B, CHAP TER 12 ming language. In a later phase of the software development process, the algorithm is coded into instructions written in a programming language so that a computer can implement it. How do I figure out an algorithm? To design an algorithm, you might begin by recording the steps required to solve the problem manually. If you take this route with the pizza problem, you must obtain initial information about the cost, size, and shape of each pizza. The computer also needs this initial information, so part of your algorithm must specify how the computer gets it. When the pizza program runs, it should ask the user to enter the initial information needed to solve the problem. Your algorithm might begin like this: INFOWEBLINKS Donald Knuth’s multivolume collection of programming algorithms, called The Art of Computer rogramming, is considered one of the best scientific monographs of the twentieth century. You’ll find information about this book and more at the Algorithms InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 Ask the user for the shape of the first pizza and hold it in RAM as Shape1. Ask the user for the price of the first pizza and hold it in RAM as Price1. Ask the user for the size of the first pizza and hold it in RAM as Size1. Next, your algorithm should specify how to manipulate this information. You want the computer to calculate the price per square inch, but a statement like “Calculate the price per square inch” neither specifies how to do the calculation, nor deals with the fact that you must perform different calculations for square and round pizzas. A more appropriate set of statements for the algorithm is shown in Figure 12-20. 1. To calculate the area of a square pizza, multiply the length of one side by the length of the other side. The sides are the same size in a square, so you can use the formula Size1 * Size1. FIGURE 12-20 The algorithm for calculating the price per square inch must work for square pizzas as well as round ones. 2. To calculate the area of a round pizza, use the formula for the area of a circle: r . is approximately 3.142. r is the square of the radius of the circle. The size of a pizza is its diameter, so you need to divide the diameter by 2 to get the radius, using Size1 / 2. Then you need to square the radius. 2 is the notation that you use on a computer to indicate the exponent 2. π π 3. After calculating the area of a pizza, the computer can calculate the price per square inch. If Shape1 is square then calculate square inches using the formula: SquareInches1 = Size1 * Size1 If Shape1 is round then calculate square inches using the formula: SquareInches1 = 3.142 * (Size1 / 2) 2 SquareInchPrice1 = Price1 / SquareInches1 691 C O M PU T E R PR OGRA MMIN G So far, the algorithm describes how to calculate the price per square inch of one pizza. It should specify a similar process for calculating the price per square inch of the second pizza. Finally, the algorithm should specify how the computer decides what to display as the solution. You want the computer to display a message indicating which pizza has the lowest square-inch cost, so your algorithm should include steps like the following: If SquareInchPrice1 is less than SquareInchPrice2 then display the message Pizza 1 is the best deal. If SquareInchPrice2 is less than SquareInchPrice1 then display the message Pizza 2 is the best deal. But don’t forget to indicate what you want the computer to do if the price per square inch is the same for both pizzas: If SquareInchPrice1 equals SquareInchPrice2 then display the message Both pizzas are the same deal. The complete algorithm for the pizza problem is shown in Figure 12-21. FIGURE 12-21 The algorithm for the pizza problem, written in structured English, has five main sections. Ask the user for the shape of the first pizza and hold it in RAM as Shape1. Ask the user for the price of the first pizza and hold it in RAM as Price1. Ask the user for the size of the first pizza and hold it in RAM as Size1. If Shape1 is square then calculate the square inches using the formula: SquareInches1 = Size1 * Size1 If Shape1 is round then calculate the square inches using the formula: SquareInches1 = 3.142 * (Size1 / 2) 2 SquareInchPrice1 = Price1 / SquareInches1 Ask the user for the shape of the second pizza and hold it in RAM as Shape2. Ask the user for the price of the second pizza and hold it in RAM as Price2. Ask the user for the size of the second pizza and hold it in RAM as Size2. If Shape2 is square then calculate the square inches using the formula: SquareInches2 = Size2 * Size2 If Shape2 is round then calculate the square inches using the formula: SquareInches2 = 3.142 * (Size2 / 2) 2 SquareInchPrice2 = Price2 / SquareInches2 If SquareInchPrice1 < SquareInchPrice2 then display the message Pizza 1 is the best deal. If SquareInchPrice2 < SquareInchPrice1 then display the message Pizza 2 is the best deal. If SquareInchPrice1 = SquareInchPrice2 then display the message Both pizzas are the same deal. Get initial information for the first pizza. Calculate the price per square inch for the first pizza. Get initial information for the second pizza. Calculate the price per square inch for the second pizza. Compare the prices per square inch, then output the results. 12 692 SECTION B, CHAP TER 12 EXPRESSING AN ALGORITHM What’s the best way to express an algorithm? You can express an algorithm in several different ways, including structured English, pseudocode, and flowcharts. These tools are not programming languages, and they cannot be processed by a computer. Their purpose is to give you a way to document your ideas for program design. Structured English is a subset of the English language with a limited selection of sentence structures that reflect processing activities. Refer to Figure 12-21 on the previous page to see how structured English can be used to express the algorithm for the pizza problem. Another way to express an algorithm is with pseudocode. Pseudocode is a notational system for algorithms that has been described as a mixture of English and your favorite programming language. Pseudocode is less formalized than structured English, so the structure and wording are left up to you. Also, when you write pseudocode, you are allowed to incorporate command words and syntax from the computer language you intend to use for the actual program. Compare Figure 12-22 with Figure 12-21 and see if you can identify some of the differences between structured English and pseudocode. FIGURE 12-22 display prompts for entering shape, price, and size input Shape1, Price1, Size1 if Shape1 = square then SquareInches1 Í Size1 * Size1 if Shape1 = round then SquareInches1 Í 3.142 * (Size1 / 2) 2 SquareInchPrice1 Í Price1 / SquareInches1 display prompts for entering shape, price, and size input Shape2, Price2, Size2 if Shape2 = square then SquareInches2 Í Size2 * Size2 if Shape2 = round then SquareInches2 Í 3.142 * (Size2 / 2) 2 SquareInchPrice2 Í Price2 / SquareInches2 if SquareInchPrice1 < SquareInchPrice2 then output Pizza 1 is the best deal. if SquareInchPrice2 < SquareInchPrice1 then output Pizza 2 is the best deal. if SquareInchPrice1 = SquareInchPrice2 then output Both pizzas are the same deal. A third way to express an algorithm is to use a flowchart. A flowchart is a graphical representation of the way a computer should progress from one instruction to the next when it performs a task. The flowchart for the pizza program is shown in Figure 12-23 on the next page. Pseudocode for the pizza program mixes some English-like instructions, such as display prompts, with programming commands, such as INPUT. 693 C O M PU T E R PR OGRA MMIN G FIGURE 12-23 Start The pizza program flowchart illustrates how the computer should proceed through the instructions in the final program. X Learn more about flowcharts from this figure in your digital textbook. Input Shape1, Price1, Size1 No Key to Flowchart Symbols Is Shape1 square? SquareInches1 = 3.142 * (Size1 / 2) 2 Yes SquareInches1 = Size1 * Size1 z Start or end SquareInchPrice1 = Price1 / SquareInches1 Input or output Input Shape2, Price2, Size2 Decision Calculation z No Connector Is Shape2 square? Yes Flow line SquareInches2 = Size2 * Size2 SquareInches2 = 3.142 * (Size2 / 2) 2 z SquareInches2 = Price2 / SquareInches2 No No Is SquareInchPrice1> SquareInchPrice2? Is SquareInchPrice1< SquareInchPrice2? Yes Output Pizza 1 is the best deal. Yes Output Pizza 2 is the best deal. Output Both pizzas are the same deal. z z End 12 694 SECTION B, CHAP TER 12 How do I know if my algorithm is correct? Before finalizing the algorithm for a computer program, you should perform a walkthrough to verify that your algorithm works. To perform a walkthrough for a simple program, you can use a calculator, paper, and pencil to step through a sample problem using realistic test data. For more complex programs, a walkthrough might consist of a verbal presentation to a group of programmers who can help identify logical errors in the algorithm and suggest ways to make the algorithm more efficient. Figure 12-24 illustrates how to check the pseudocode for the pizza program. display prompts for entering shape, price, and size input Shape1, Price1, Size1 if Shape1 = square then SquareInches1 Í Size1 * Size1 if Shape1 = round then SquareInches1 Í 3.142 * (Size1 / 2) 2 SquareInchPrice1 Í Price1 / SquareInches1 display prompts for entering shape, price, and size input Shape2, Price2, Size2 if Shape2 = square then SquareInches2 Í Size2 * Size2 if Shape2 = round then SquareInches2 Í 3.142 * (Size2 / 2) 2 SquareInchPrice2 Í Price2 / SquareInches2 if SquareInchPrice1 < SquareInchPrice2 then output Pizza 1 is the best deal. if SquareInchPrice2 < SquareInchPrice1 then output Pizza 2 is the best deal. if SquareInchPrice1 = SquareInchPrice2 then output Both pizzas are the same deal. FIGURE 12-24 Pseudocode Walkthrough User asked to enter the first pizza’s shape, price, and size User enters square, $10.00, 12 The first pizza is square, so the computer should calculate: 12 * 12 = 144 for SquareInches1 The computer also calculates: $10.00/144 = .069 for SquareInchPrice1 User asked to enter the second pizza’s shape, price, and size User enters round, $10.00, 12 The second pizza is round, so the computer should calculate: 3.142*(12/2) 2 = 113.112 for SquareInches2 The computer should also calculate $10.00/113.112 = .088 for SquareInchPrice2 .069 < .088 so pizza 1 is the best deal 695 C O M PU T E R PR OGRA MMIN G SEQUENCE, SELECTION, AND REPETITION CONTROLS How do I specify the order in which program instructions are performed by the computer? Unless you specify otherwise, sequential execution is the normal pattern of program execution. During sequential execution, the first instruction in the program is executed first, then the second instruction, and so on, to the last instruction in the program. Here is a simple program written in the BASIC programming language that outputs This is the first line., and then outputs This is the next line. Print "This is the first line." Print "This is the next line." Is there an alternative to sequential execution? Some algorithms specify that a program must execute instructions in an order different from the sequence in which they are listed, skip some instructions under certain circumstances, or repeat instructions. Control structures are instructions that specify the sequence in which a program is executed. Most procedural languages have three types of control structures: sequence controls, selection controls, and repetition controls. A sequence control structure changes the order in which instructions are carried out by directing the computer to execute an instruction elsewhere in the program. In the following simple BASIC program, a GOTO command tells the computer to jump directly to the instruction labeled “Widget.” By performing the GOTO statement, the program never carries out the command Print "This is the next line." Print "This is the first line." Goto Widget Print "This is the next line." Widget: Print "All done!" End The flowchart in Figure 12-25 shows how the computer follows a series of sequential commands, and then jumps past other commands as the result of a GOTO command. FIGURE 12-25 Start Print "This is the first line." Goto Widget Executing a GOTO command directs the computer to a different part of the program. X To see how a computer executes the GOTO command, start this animation in your digital textbook. Print "This is the next line." Widget Print "All done!" End 12 696 SECTION B, CHAP TER 12 Although it is the simplest control structure, the GOTO command is rarely used by skilled programmers because it can lead to programs that are difficult to understand and maintain. In 1968, the journal Communications of the ACM published a now-famous letter from Edsger Dijkstra, called “Go To Statement Considered Harmful.” In his letter, Dijkstra explained that injudicious use of the GOTO statement in programs makes it difficult for other programmers to understand the underlying algorithm, which in turn means that such programs are difficult to correct, improve, or revise. Experienced programmers prefer to use sequence controls other than GOTO to transfer program execution to a subroutine, procedure, or function. A subroutine, procedure, or function is a section of code that is part of a program, but is not included in the main sequential execution path. A sequence control structure directs the computer to the statements it contains, but when these statements have been executed, the computer neatly returns to the main program. Figure 12-26 shows the execution path of a program that uses the GOSUB command to transfer execution to a subroutine. INFOWEBLINKS Read Dijkstra’s letter and find out why the GOTO command is considered bad programming at the GOTO InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 FIGURE 12-26 Executing a GOSUB command directs the computer to a different section of the program. 1. This is the main program. The computer executes the main program instructions until it reaches the GOSUB command. Rem This program multiplies a number by 12, Rem but the number entered must be between 1 and 10. Input "Enter a number from 1 to 10: "; Number Gosub checkinput Result = Number * 12 2. The GOSUB command transfers Print Result the computer to the subroutine called checkinput. End 5. When the computer returns to the main program, it executes the instructions that follow the GOSUB command. checkinput: Rem Rem 3. This is the subroutine checkinput. The computer executes instructions in the subroutine until it reaches the RETURN command. This subroutine makes sure that the user enters a number between 1 and 10. While Number < 1 or Number > 10 Input "You must enter a number between 1 and 10: "; Number Wend Return 4. The RETURN command transfers the computer back to the main program. 697 C O M PU T E R PR OGRA MMIN G Can the computer make decisions while it executes a program? A selection control structure tells a computer what to do, based TERMINOLOGY NOTE Selection control structures are also referred to as decision structures or branches. on whether a condition is true or false. A simple example of a selection control structure is the IF...THEN...ELSE command. The following program uses this command to decide whether a number entered is greater than 10. If the number is greater than 10, the computer prints That number is greater than 10. If the number is not greater than 10, the program performs the ELSE instruction and prints That number is 10 or less. Input "Enter a number from 1 to 10: "; Number If Number > 10 Then Print "That number is greater than 10." Else Print "That number is 10 or less." End FIGURE 12-27 Figure 12-27 uses a flowchart to illustrate how a computer follows commands in a decision structure. Start The computer executes a decision indicated on the flowchart by the question in the diamond shape. X Step through a decision structure using your digital textbook. Input a number between 1 and 10 No Is number > 10? Print "That number is 10 or less." Yes Print "That number is greater than 10." z End 12 698 SECTION B, CHAP TER 12 Can a computer automatically repeat a series of instructions? A repetition control structure directs the computer to repeat one or more instructions until a certain condition is met. The section of code that repeats is usually referred to as a loop or iteration. Some of the most frequently used repetition commands are FOR...NEXT, DO...WHILE, DO...UNTIL, and WHILE...WEND. The keyword FOR, DO, or WHILE marks the beginning of a loop. The keyword NEXT, UNTIL, or WEND (which means while ends) marks the end of a loop. The following simple BASIC program uses a FOR...NEXT command to print a message three times: For N = 1 to 3 Print "There's no place like home." Next N End Follow the path of program execution in Figure 12-28 to see how a computer executes a series of commands in a repetition structure. Start z Start loop Print "There's no place like home." No Loop Done? Yes End FIGURE 12-28 To execute a loop, the computer repeats one or more commands until some condition indicates that the looping should stop. X Remember Dorothy in The Wi ard of O ? Watch how a computer would execute her “No place like home” loop. 699 C O M PU T E R PR OGRA MMIN G To get a better idea of how a FOR...NEXT loop works, pretend that you’re the computer executing the FOR...NEXT instructions below. You can use the box labeled N in the margin as a RAM location. As the computer, you would also have a screen on which to display output—use the Screen Output box. Now, walk through the loop. For N = 1 to 3 Print "There's no place like home." Next N End 1. As the computer, the first time you see the instruction For N = 1 to 3, you set N equal to 1. To do so, write the number 1 in the N box in the margin. 2. You would then execute the next instruction, Print "There's no place like home." To do so, write the phrase “There’s no place like home.” in the Screen Output box. N 3. The instruction Next sends you back to the command For N = 1 to 3. Because this occasion is the second time you have executed this statement, put a 2 in the N box in the margin (you can erase the 1 that was there previously). 4. You must check whether the value in box N is greater than 3. Why? Because the command For N = 1 to 3 means you can continue to loop only if N is 3 or less. N is only 2, so you can proceed. 5. Go to the next instruction, which is Print "There's no place like home." Write this sentence again in the Screen Output box. 6. Moving on, you reach the Next statement again, which sends you back to the For statement. Screen Output 7. Continue by changing the value in the N box to 3. Check the N box to make sure it does not contain a value greater than 3. It doesn’t, so continue. 8. The next line instructs you to Print "There's no place like home." Write this sentence again in the Screen Output box. The Next statement sends you back to the For statement. Increase the value in the N box to 4. 9. This time when you check whether the value in N is greater than 3, it is. That means the loop is complete, and you should jump to the statement past the end of the loop. 10. The next statement is End, so you’ve completed the program. 11. When your program is complete, the variable N should contain the number 4, and the screen output box should contain three lines of “There’s no place like home.” 12 700 SECTION B, CHAP TER 12 How do I use control structures to write a program? To write FIGURE 12-29 the code for the pizza program, you use control structures, keywords, and syntax provided by your programming language. The completed pizza program, written in BASIC, is provided in Figure 12-29. Each line of code for the pizza program consists of keywords and parameters. Rem The Pizza Program Rem This program tells you which of two pizzas is the best deal Rem by calculating the price per square inch of each pizza. Rem Collect initial information for first pizza. Input "Enter the shape of pizza 1:"; Shape1$ Input "Enter the price of pizza 1:"; Price1 Input "Enter the size of pizza 1:"; Size1 Lines that begin with Rem contain remarks that explain each section of the program. The computer does not execute the remarks. Rem Calculate price per square inch for first pizza. Rem If the first pizza is square, calculate square inches by multiplying one side Rem by the other. If Shape1$ = "square" Then SquareInches1 = Size1 * Size1 Rem If the first pizza is round, calculate the number of square inches where Rem pi = 3.142, size / 2 = radius, and (size / 2) ^2 = radius squared. If Shape1$ = "round" Then SquareInches1 = 3.142 * (Size1 / 2)^2 SquareInchPrice1 = Price1 / SquareInches1 Data is stored in Rem Collect initial information for second pizza. Input "Enter the shape of pizza 2:"; Shape2$ Input "Enter the price of pizza 2:"; Price2 Input "Enter the size of pizza 2:"; Size2 Rem Calculate price per square inch for second pizza. If Shape2$ = "square" Then SquareInches2 = Size2 * Size2 If Shape2$ = "round" Then SquareInches2 = 3.142 * (Size2 / 2)^2 SquareInchPrice2 = Price2 / SquareInches2 variables, or memory locations, in RAM. The variable Shape2$ stores text, such as the word round. The $ indicates a text variable. Other variables, such as Price1 and Size1, store numbers; they do not include $ as part of the variable name. Rem Decide which pizza is the best deal and display results. If SquareInchPrice1 < SquareInchPrice2 Then Message$ = "Pizza 1 is the best deal." If SquareInchPrice2 < SquareInchPrice1 Then Message$ = "Pizza 2 is the best deal." If SquareInchPrice1 = SquareInchPrice2 Then Message$ = "Both pizzas are the same deal." Print Message$ End PROCEDURAL LANGUAGES AND APPLICATIONS What are the most popular procedural languages? The first programming languages were procedural. Fortran, developed in the United States in 1954, was the first widely used, standardized computer language. Its implementation of the procedural paradigm set the pattern for other popular procedural languages, such as COBOL, FORTH, APL, ALGOL, PL/1, Pascal, C, Ada, and BASIC. In 1958, a group of European researchers created a new programming language, dubbed ALGOL, an acronym for ALGOrithmic Language. ALGOL was used for research applications and is the ancestor of several languages in widespread use today. CPL, created by Ken Thompson of AT&T Bell Laboratories, descended from ALGOL and evolved into the C language. Pascal, the popular teaching language created by Niklaus Wirth, was an important step in the development of Ada. What kinds of problems are best suited to the procedural approach? The procedural approach is best used for problems that can be solved by following a step-by-step algorithm. One of the original problems tackled by computers was computing missile trajectories. Missiles follow an arcing path called a trajectory. Aim too high or too low, and the missile misses its target. 701 C O M PU T E R PR OGRA MMIN G The factors that affect a missile’s trajectory include the angle of the gun, weight of the missile, wind direction, wind speed, temperature, and distance to target. However, after these factors are known for a particular target, the calculation follows a simple mathematical algorithm. Therefore, the steps for calculating trajectories remain the same, regardless of the data. That concept is the key to understanding the kinds of problems that are best suited for the procedural approach. The procedural approach has been widely used for transaction processing, which is characterized by the use of a single algorithm applied to many different sets of data. For example, in the banking industry, the algorithm for calculating checking account balances is the same, regardless of the amounts deposited and withdrawn. Many problems in math and science also lend themselves to the procedural approach. What are the advantages and disadvantages of the procedural paradigm? The procedural approach and procedural languages tend to produce programs that run quickly and use system resources efficiently. It is a classic approach understood by many programmers, software engineers, and systems analysts. The procedural paradigm is quite flexible and powerful, which allows programmers to apply it to many types of problems. For example, although the programming example in this section worked only for round and square pizzas, it could be modified to handle rectangular pizzas, too. The downside of the procedural paradigm is that it does not fit gracefully with certain types of problems—those that are unstructured or those with very complex algorithms. The procedural paradigm has also been criticized because it forces programmers to view problems as a series of steps, whereas some problems might better be visualized as interacting objects or as interrelated words, concepts, and ideas. SECTION B QuickCheck 1. 2. BASIC is an easy-to-understand programming whereas a(n) paradigm because it requires no algorithms. change the order in which program instructions True or false? are executed. COBOL, Fortran, and C are examples of 5. languages. 3. Structured English, A subroutine is a section of code that is part of a program, but is not included in the main execution path. True or false? , and pseudocode are used by programmers to 4. control can 6. The section of a program that contains a repeti- express algorithms. tion control is sometimes referred to as an itera- A decision control tells a computer what to do, tion or a(n) . based on whether a condition is true or false, X CHECK ANSWERS 12 702 SECTION CHAP TER 12 C Object-Oriented Programming THE OBJECT-ORIENTED PARADIGM offers an alternative approach to step-by-step procedural programming. The abbreviation OO, which stands for object oriented, is used to describe a programming paradigm as well as a variety of computer programming languages. In this section, you’ll find out what OOP (object-oriented programming) is all about. Java is used for the examples in this section of the chapter because it is today’s most popular language for implementing object-oriented programs. OBJECTS AND CLASSES What is the basic focus of the object-oriented paradigm? The object-oriented paradigm is based on the idea that the solution for a problem can be visualized in terms of objects that interact with each other. In the context of this paradigm, an object is a unit of data that represents an abstract or a real-world entity, such as a person, place, or thing. For example, an object can represent a $10.99 small round pepperoni pizza. Another object can represent a pizza delivery guy named Jack Flash. Yet another object can represent a customer who lives at 22 W. Pointe Rd. What’s the difference between an object and a class? The real world contains lots of pizzas, customers, and delivery guys. These objects can be defined in a general way by using classes. Whereas an object is a single instance of an entity, a class is a template for a group of objects with similar characteristics. For example, a Pizza class defines a group of gooey Italian snacks that are made in a variety of sizes, crafted into rectangular or round shapes, and sold for various prices. A class can produce any number of unique objects, as shown in Figure 12-30. CLASS: Pizza Pizza objects FIGURE 12-30 A class, such as the Pizza class, is a general template for a group of objects with similar characteristics. 703 C O M PU T E R PR OGRA MMIN G How do I define the classes I need to solve a problem? When taking the object-oriented approach to a problem, one of the first steps is to identify the objects that pertain to a solution. As you might expect, the solution to the pizza problem requires some pizza objects. Certain characteristics of pizzas provide information necessary to solve the problem. This information—the price, size, and shape of a pizza—provides the structure for the Pizza class. A class is defined by attributes and methods. A class attribute defines the characteristics of a set of objects. You will learn about methods, which define actions, later in this section. Each class attribute typically has a name, scope, and data type. One class attribute of the Pizza class might be named pizzaPrice. Its scope can be defined as public or private. A public attribute is available for use by any routine in the program. A private attribute can be accessed only from the routine in which it is defined. The pizzaPrice attribute’s data type can be defined as double, which means that it can be any decimal number, such as 12.99. Figure 12-31 describes the data types most often used to describe class attributes. TERMINOLOGY NOTE The data types used to define class attributes are similar to the data types for defining database fields, but the terminology is slightly different. FIGURE 12-31 Class Attribute Data Types Data Type Description Example Int Integer whole numbers 10 Double Numbers with decimal places 12.99 String Multiple characters, symbols, and numerals Square Boolean Limited to two values T or F OO programmers often use UML (Unified Modeling Language) diagrams to plan the classes for a program. The UML diagram in Figure 12-32 shows one possible way to envision the Pizza class. Class name Class attributes Pizza + pizzaShape: string + pizzaPrice: double The plus sign indicates a public attribute. FIGURE 12-32 The core of a UML diagram is a box that contains information about a class. + pizzaSize: double 12 704 SECTION C, CHAP TER 12 How do I code a class when writing a program? Although a programmer typically completes the overall program plan before coding, jump ahead to take a quick look at the Java code for the attributes in the Pizza class. The first line of code defines the name of the class. Each subsequent line defines the scope, data type, and name of an attribute. The curly brackets simply define the start and end of the class. class Pizza { public string pizzaShape; public double pizzaPrice; public double pizzaSize; } INHERITANCE How flexible are classes for defining different types of objects? The object-oriented paradigm endows classes with quite a bit of flexibility. For the pizza program, objects and classes make it easy to compare round pizzas to rectangular pizzas rather than just to square pizzas. Suppose you want to compare a 10-inch round pizza to a rectangular pizza that has a length of 11 inches and a width of 8 inches. The Pizza class in Figure 12-32 on the previous page holds only one measurement for each pizza—pizzaSize. This single attribute won’t work for rectangular pizzas, which might have a different length and width. Should you modify the class definition to add attributes for pizzaLength and pizzaWidth? No, because these attributes are necessary only for rectangular pizzas, not for round pizzas. An OO feature called inheritance provides flexibility to deal with objects’ unique characteristics. What is inheritance? In object-oriented jargon, inheritance refers FIGURE 12-33 The subclass attributes shown in blue text (pizzaShape and pizzaPrice) are inherited from the Pizza superclass. The attributes in red are unique to the subclasses. The plus sign indicates that these attributes are public. to passing certain characteristics from one class to other classes. For example, to solve the pizza problem, a programmer might decide to use a RoundPizza class and a RectanglePizza class. These two Superclass new classes can inherit attributes from the Pizza class, such Pizza as pizzaShape and pizzaPrice. You can then add specialized characteristics to the new classes. The + pizzaShape: string RectanglePizza class can have attributes + pizzaPrice: double for length and width, and the RoundPizza class can have an attribute for diameter. The process of producing new classes with inherited attributes creates a superclass and subclasses. A superclass, such as Pizza, is any class from which attributes can be inherited. A subclass (or derived class), such as RoundPizza or RectanglePizza, is any class that inherits attributes from a superclass. The set of superclasses and subclasses that are related to each other is referred to as a class hierarchy. The UML diagram in Figure 12-33 shows the Pizza class and its subclasses. RoundPizza RectanglePizza + pizzaShape: string + pizzaShape: string + pizzaPrice: double + pizzaPrice: double + pizzaDiameter: double + pizzaLength: double + pizzaWidth: double Subclass Subclass 705 C O M PU T E R PR OGRA MMIN G How do I code a subclass? Java uses the extends command to link a subclass to a superclass. The statement class RectanglePizza extends Pizza means “create a class called RectanglePizza that’s derived from the superclass called Pizza.” Figure 12-34 contains the Java code that creates attributes for the RectanglePizza class. FIGURE 12-34 Using the extends command, the RectanglePizza class inherits the pizzaShape and pizzaPrice attributes from the Pizza superclass. The pizzaLength and pizzaWidth attributes are unique to the RectanglePizza class. class RectanglePizza extends Pizza { double pizzaLength; double pizzaWidth; } METHODS AND MESSAGES How does an OO program use objects? An OO program can use objects in a variety of ways. A basic way to use objects is to manipulate them with methods. A method is a segment of code that defines an action. The names of methods usually end in a set of parentheses, such as compare() or getArea(). What can a method do? A method can perform a variety of tasks, such as collecting input, performing calculations, making comparisons, executing decisions, and producing output. For example, the pizza program can use a method named compare() to compare the square-inch prices of two pizzas and display a message indicating which pizza is the best deal. What does a method look like when it has been coded in Java? A method begins with a line that names the method and can include a description of its scope and data type. The scope—public or private— specifies which parts of the program can access the method. The data type specifies the kind of data, if any, that the method produces. The initial line of code is followed by one or more lines that specify the calculation, comparison, or routine that the method performs. Figure 12-35 illustrates the code for the compare() method. FIGURE 12-35 Java Code for the compare() Method The method manipulates public compare( Pizza Pizza1, Pizza Pizza2 ) pizza objects. { if (Pizza1.SquareInchPrice < Pizza2.SquareInchPrice ) The method System.out.println("Pizza 1 is the best deal!"); title includes its scope and name. if (Pizza1.SquareInchPrice > Pizza2.SquareInchPrice ) System.out.println("Pizza 2 is the best deal!"); if (Pizza1.SquareInchPrice == Pizza2.SquareInchPrice System.out.println("The pizzas are the same deal!"); } The body of the method contains statements that determine which pizza is the best deal and print the result. 12 706 SECTION C, CHAP TER 12 What activates a method? A method is activated by a message, which is included as a line of program code that is sometimes referred to as a call. For example, in a Java program, a line of code such as compare(Pizza1, Pizza2) produces a message used to activate or call the compare() method. In the object-oriented world, objects often interact to solve a problem by sending and receiving messages. For example, a pizza object might receive a message asking for the pizza’s area or price per square inch. How do methods relate to classes? Methods can be defined along with the class they affect. The getSquareInchPrice() method pertains to pizzas of any shape, so it can be defined as part of the Pizza class. To calculate the square-inch price, however, it is necessary to know the area of a pizza. That calculation can be achieved by defining a getArea() method. The area calculation for round pizzas is different from the calculation for rectangular pizzas, so the getArea() method should become part of the RoundPizza and RectanglePizza subclasses, as indicated by the UML diagram in Figure 12-36. FIGURE 12-36 Pizza The getSquareInchPrice() method is defined as part of the Pizza class, whereas the getArea() method is defined within the RoundPizza and RectanglePizza classes. + pizzaShape: string + pizzaPrice: double + getSquareInchPrice() RoundPizza RectanglePizza + pizzaDiameter: double + pizzaLength: double getArea() + pizzaWidth: double getArea() 707 C O M PU T E R PR OGRA MMIN G How does the getArea() method work? If you have been thinking ahead a bit, you might wonder how a programmer can define the getArea() method to perform two different calculations—one that calculates the area of a rectangle by multiplying its length times its width, and another that calculates the area of a circle using the formula π r2. An object-oriented concept called polymorphism makes it possible to assign more than one formula to the getArea() method. What is polymorphism? Polymorphism, sometimes called overloading, is the ability to redefine a method in a subclass. It allows programmers to create a single, generic name for a procedure that behaves in unique ways for different classes. In the pizza program, for example, both the RectanglePizza and RoundPizza classes can have a getArea() method. The calculation that getArea() performs is defined one way for the RectanglePizza class and another way for the RoundPizza class. Figure 12-37 illustrates how polymorphism allows subclasses to tailor methods to fit their unique requirements. FIGURE 12-37 Pizza + pizzaShape: string + pizzaPrice: double + getSquareInchPrice() RoundPizza RectanglePizza + pizzaDiameter: double + pizzaLength: double getArea() + pizzaWidth: double Polymorphism allows a programmer to define different getArea() methods for each subclass. When the completed program runs, pizza shapes are collected from the user and the corresponding getArea() method can be applied to calculate the area of a pizza. getArea() For round pizzas, the getArea() method uses the formula: 3.142 * (radius * radius) For rectangular pizzas, the getArea() method uses the formula: pizzaLength * pizzaWidth 12 708 SECTION C, CHAP TER 12 How does the code for the round getArea() method differ from the code for the rectangle getArea() method? The code for the getArea() method defined in the RoundPizza class asks users to key in, or enter, the pizza’s diameter. The method then divides the diameter by 2 to arrive at the radius. The value for the radius is used in the π r2 calculation—3.142 * (radius * radius)—for the area of a circle. The getArea() method defined in the RectanglePizza class asks users to key in the length of the pizza and then its width. This data is used in the calculation that multiplies length times width to produce the area of a rectangular pizza. Figure 12-38 illustrates the Java code for the getArea() methods. The lines that begin with // are remarks. FIGURE 12-38 The getArea() Methods for Round and Rectangular Pizzas getArea() //Method to calculate the area of a round pizza { pizzaDiameter = Keyin.inDouble("Enter the diameter of the pizza: "); radius = pizzaDiameter/2; pizzaArea = 3.142 * (radius*radius); } getArea() //Method to calculate the area of a rectangular pizza { pizzaLength = Keyin.inDouble("Enter the length of the pizza: "); pizzaWidth = Keyin.inDouble("Enter the width of the pizza: "); pizzaArea = pizzaLength * pizzaWidth; } What are the advantages of polymorphism? Polymorphism provides OO programs with easy extensibility and can help simplify program code. For example, it would be easy to extend the pizza program to work with triangular pizzas, if one of the pizzerias decides to get creative with pizza shapes. To extend the program, you would simply define a TrianglePizza class that includes attributes for pizzaWidth and pizzaHeight and tailor its getArea() method for calculating the area of a triangle. The ability to tailor the getArea() method for round and square pizzas allows programmers to avoid complex logic and to simplify program code. As you can imagine, creating separate methods with unique names, such as getAreaRoundPizza(), getAreaRectanglePizza(), and getAreaTrianglePizza(), would add to the program’s complexity and make it more difficult to extend the program for other pizza shapes. 709 C O M PU T E R PR OGRA MMIN G OBJECT-ORIENTED PROGRAM STRUCTURE What does the completed pizza program look like in Java? So far in this section of the chapter, you have learned how objects and methods interact to solve the pizza problem. You know that the pizza program uses a Pizza class and two subclasses: RectanglePizza and RoundPizza. You also know that these classes include getSquareInchPrice() and getArea() methods to perform calculations that supply data for solving the problem. You should also remember that the compare() method is used to manipulate pizza objects to determine which is the best deal. The classes and methods defined for the pizza program must be placed within the structure of a Java program, which contains class definitions, defines methods, initiates the comparison, and outputs results. Figure 12-39 provides an overview of the program structure. FIGURE 12-39 Pizza Class Definition Define Pizza as a class with attributes for shape and price. Define the getSquareInchPrice() method that collects input for the pizza price, then calculates a pizza’s square-inch price. Program Structure for the Pizza Program RectanglePizza Class Definition Define RectanglePizza as a subclass of Pizza with attributes for length and width. Define the getArea() method that collects input for the pizza length and width to calculate area. RoundPizza Class Definition Define RoundPizza as a subclass of Pizza with an attribute for diameter. Define a getArea() method that collects input for the pizza diameter, then calculates area. Compare() Method Compare the square-inch price of two pizzas and output results. Main Module Set up variables, create objects for Pizza1 and Pizza2, and activate the getArea(), getSquareInchPrice(), and compare() methods. 12 710 SECTION C, CHAP TER 12 How does a Java program work? The computer begins executing a Java program by locating a standard method called main(), which contains code to send messages to objects by calling methods. For the pizza program, the main() method includes code that defines a few variables and then asks the user to enter the shape of the first pizza. If the shape entered is Round, the program creates an object called Pizza1 that is a member of the RoundPizza class. If the shape entered is Rectangle, the program creates an object called Pizza1 that is a member of the RectanglePizza class. After the pizza object is created, the program uses the getArea() method to calculate its area. The program then uses the getSquareInchPrice() method to calculate the pizza’s square-inch price. When the calculations are complete for the first pizza, the program performs the same process for the second pizza. Finally, the program uses the compare() method to compare the square-inch prices of the two pizzas and output a statement about which one is the best deal. Because it is not the goal of this section to teach you the particulars of Java programming, don’t worry about the detailed syntax of the Java code. Instead, refer to Figure 12-40 to get an overview of the activity that takes place in the main() method for the pizza program. public static void main(String[] args) { FIGURE 12-40 Java Code for the Main Module of the Pizza Program 1. Main() method title 2. Define variables used Pizza Pizza1; in the main() method. Pizza Pizza2; String pizzaShape; pizzaShape = Keyin.inString("Enter the shape of the first pizza: "); if (pizzaShape.equals("Round")) 3. Collect input for the shape of the first pizza, then create an object { called Pizza1 that belongs to the Pizza1 = new RoundPizza(); RoundPizza or RectanglePizza class. } else Pizza1 = new RectanglePizza(); Pizza1.getArea(); Pizza1.getSquareInchPrice(); 4. Use the getArea() and getSquareInchPrice() methods to calculate area and square-inch price for the first pizza. pizzaShape = Keyin.inString("Enter the shape of the second pizza: "); if (pizzaShape.equals("Round")) 5. Collect input for the shape of the second pizza, then create an object called Pizza2 that belongs Pizza2 = new RoundPizza(); to the RoundPizza or RectanglePizza class. else Pizza2 = new RectanglePizza(); Pizza2.getArea(); Pizza2.getSquareInchPrice(); compare(Pizza1, Pizza2); } 6. Use the getArea() and getSquareInchPrice() methods to calculate area and square-inch price for the second pizza. 7. Use the compare() method to determine which pizza is the best deal, then print results. 711 C O M PU T E R PR OGRA MMIN G What happens when the completed pizza program runs? When you run the pizza program, it looks for the main() method. This method displays an on-screen prompt that asks for the pizza’s shape. The getArea() method displays a prompt for the pizza’s diameter (for a round pizza) or the pizza’s length and width (for a rectangular pizza). A similar series of prompts appears for the second pizza. The program concludes when the compare() method displays a statement about which pizza is the best deal. The software tour for Figure 12-41 lets you see what happens when the OO pizza program runs. FIGURE 12-41 When the pizza program runs, on-screen prompts ask for the shape, size, and price of each pizza; then the program displays a message that indicates which pizza is the best deal. X Watch the program run in your digital textbook. OBJECT-ORIENTED LANGUAGES AND APPLICATIONS How did object-oriented languages originate? Computer historians believe that SIMULA (SIMUlation LAnguage) was the first computer language to work with objects, classes, inheritance, and methods. SIMULA was developed in 1962 by two Norwegian computer scientists for the purpose of programming simulations and models. SIMULA laid the foundation for the object-oriented paradigm, which was later incorporated into other programming languages, such as Eiffel, Smalltalk, C++, and Java. The second major development in object-oriented languages came in 1972 when Alan Kay began work on the Dynabook project at the Xerox Palo Alto Research Center (PARC). Dynabook was a prototype for a notebook-sized personal computer, intended to handle all the information needs of adults and children. Kay developed a programming language called Smalltalk for the Dynabook that could be easily used to create programs based on real-world objects. Dynabook never became a commercial product, but Smalltalk survived and is still in use today. Smalltalk is regarded as a classic object-oriented language, which encourages programmers to take a pure OO approach to the programming process. Which object-oriented languages are popular today? As the object-oriented paradigm gained popularity, several existing programming languages were modified to allow programmers to work with objects, classes, inheritance, and polymorphism. The concept for the Ada programming language originated in 1978 at the U.S. Department of Defense. The first versions of Ada were procedural, but in 1995, the language was modified to incorporate object-oriented features. A similar transformation took place with the C language in 1983, except that the 12 712 SECTION C, CHAP TER 12 object-oriented version earned a new name—C++. Hybrid languages, such as Ada95, C++, Visual Basic, and C#, give programmers the option of using procedural and object-oriented techniques. Java was originally planned as a programming language for consumer electronics, such as interactive cable television boxes, but evolved into an object-oriented programming platform for developing Web applications. Java was officially launched by Sun Microsystems in 1995 and has many of the characteristics of C++, from which it derives much of its syntax. Like C++, Java can also be used for procedural programming, so it is sometimes classified as a hybrid language. Introduced in 2007, Scratch is one of the newest OO languages. Like Smalltalk, Scratch was designed as an easy-to-use starter language but has a modern GUI and built-in support for audio, graphics, and animation. What kinds of applications are suitable for object-oriented languages? The object-oriented paradigm can be applied to a wide range of programming problems. Basically, if you can envision a problem as a set of objects that pass messages back and forth, the problem is suitable for the OO approach. What are the advantages and disadvantages of the OO paradigm? The object-oriented paradigm is cognitively similar to the way human beings perceive the real world. Using the object-oriented approach, programmers might be able to visualize the solutions to problems more easily. Facets of the object-oriented paradigm can also increase a programmer’s efficiency because encapsulation allows objects to be adapted and reused in a variety of different programs. Encapsulation refers to the process of hiding the internal details of objects and their methods. After an object is coded, it becomes a black box, which essentially hides its details from other objects and allows the data to be accessed using methods. Encapsulated objects can be easily reused, modified, and repurposed. A potential disadvantage of object-oriented programs is runtime efficiency. Object-oriented programs tend to require more memory and processing resources than procedural programs. Programmers, software engineers, and systems analysts can work together to weigh the tradeoffs between the OO approach and runtime efficiency. SECTION C QuickCheck 1. The paradigm is based on 4. the idea that computer programs can be visual- from a superclass to a subclass is referred to as . ized in terms of objects that interact with each other. 2. The process of passing certain characteristics 5. In an OO program, objects send and receive A class is a template for a group of objects to initiate actions, with similar characteristics. True or false? which a programmer defines by creating a(n) . 3. OO programmers often use diagrams to plan the classes for a program. (Hint: Use the abbreviation.) X CHECK ANSWERS 713 C O M PU T E R PR OGRA MMIN G SECTION D Declarative Programming AS THE 1950S drew to a close, computers were primarily used for number-crunching tasks, such as calculating missile trajectories, tabulating census data, and processing payrolls. A few visionary computer scientists saw beyond these limited number-crunching applications and began to explore ways in which computers could make decisions and solve problems by manipulating non-numeric data, including words and concepts. Procedural programming languages, such as Fortran and COBOL, did not have the flexibility to deal efficiently with non-numeric data, so non-procedural languages were developed. This section explains a type of non-procedural programming that follows the declarative paradigm and gives you a little taste of the Prolog language. THE DECLARATIVE PARADIGM What is the declarative paradigm? Non-procedural languages, such as LISP, Scheme, Haskell, and Prolog, can be grouped into one of two paradigms: functional or declarative. The functional paradigm emphasizes the evaluation of expressions, called functions, rather than the execution of commands. The declarative paradigm attempts to describe a problem without specifying exactly how to arrive at a solution. What is unique about the declarative paradigm? In earlier sections of this chapter, you learned that procedural programming focuses on a step-by-step algorithm that instructs the computer how to arrive at a solution. You also learned that the object-oriented approach emphasizes classes and methods that form objects. In contrast, the declarative paradigm describes aspects of a problem that lead to a solution. Although the declarative paradigm might sound similar to the procedural paradigm, the procedural paradigm focuses on an algorithm that describes the solution, whereas the declarative paradigm focuses on describing the problem. Figure 12-42 summarizes these differences. What are the building blocks for the declarative paradigm? Many declarative programming languages, such as Prolog, use a collection of facts and rules to describe a problem. In the context of a Prolog program, a fact is a statement that provides the computer with basic information for solving a problem. In the pizza problem, for example, these facts might include: A pizza has a price of $10.99, a size of 12 inches, and a round shape. Another pizza has a price of $12.00, a size of 11 inches, and a square shape. In the context of a Prolog program, a rule is a general statement about the relationship between facts. For example, the following rule is useful for solving the problem of which pizza is a better deal: A pizza is a better deal if its square-inch price is less than the squareinch price of another pizza. FIGURE 12-42 Paradigm Comparison Procedural paradigm: • Programs detail how to solve a problem • Very efficient for numbercrunching tasks Object-oriented paradigm: • Programs define objects, classes, and methods • Efficient for problems that involve real-world objects Declarative paradigm: • Programs describe the problem • Efficient for processing words and language 12 714 SECTION D, CHAP TER 12 To apply the betterdeal rule, additional rules are necessary to calculate the square-inch price of each pizza. You’ll look at these rules in more detail later in this section. How does a programmer plan a declarative program? The core of most declarative programs is a set of facts and rules that describe a problem. The logic for the pizza program is very simple because the solution depends on a single factor: the lowest square-inch price. Declarative programs with such simple logic don’t require much planning. In contrast, programs that deal with multiple factors have more complex logic and often require planning tools, such as decision tables. A decision table is a tabular method for visualizing and specifying rules based on multiple factors. As an example, suppose your decision to buy a pizza depends not just on its price, but on whether you can get it delivered and how soon it is ready. These three factors produce eight possible situations. In which of those eight situations would you purchase a pizza? What if the best-priced pizza is ready in less than 30 minutes, but it can’t be delivered? What if the best-priced pizza won’t be ready for an hour? Figure 12-43 illustrates how a programmer might construct a decision table that describes all the rules pertaining to pizza prices, delivery, and time. FIGURE 12-43 Decision Table Lowest price? Y N Y N Y N Y N Delivery available? Y Y N N Y Y N N Ready in less than 30 minutes? Y Y Y Y N N N N Buy it? Y N N Y N N N Y PROLOG FACTS How does a programmer code facts? Return to the simple problem of deciding which of two round or square pizzas is the best deal based on price per square inch. The first step in coding the program using Prolog is to enter facts that describe the prices, shapes, and sizes of two pizzas. The fact “The shape of a pizza is round.” can be coded this way: shapeof(pizza,round). The words in parentheses are called arguments. An argument represents one of the main subjects that a fact describes. The word outside the parentheses, called the predicate, describes the relationship between the arguments. In other words, the predicate shapeof describes the relationship between pizza and round. Figure 12-44 points out some important syntax details pertaining to capitalization and punctuation for Prolog facts. A fact begins with a lowercase letter. Arguments are placed in parentheses. Each fact ends with a period. shapeof(pizza,round). Use lowercase for arguments unless they are variables. Use a comma to separate arguments. FIGURE 12-44 A Prolog fact follows specific syntax rules. 715 C O M PU T E R PR OGRA MMIN G Although it might seem obvious that round describes the shape of a pizza, the predicate cannot be omitted. In many cases, the predicate can drastically change the meaning of a fact. For example, the facts in Figure 12-45 have the same arguments, (joe,fish), but the predicates give the facts very different meanings. hates(joe,fish). Joe hates fish. name(joe,fish). Joe is the name of a fish. FIGURE 12-45 The predicate can drastically change the meaning of a fact. playscardgame(joe,fish). Joe plays a card game called fish. For the pizza program, a series of facts can be used to describe a pizza: priceof(pizza1,10). sizeof(pizza1,12). shapeof(pizza1,square). Another set of similar facts can be used to describe a second pizza: priceof(pizza2,12). sizeof(pizza2,14). shapeof(pizza2,round). Facts can have more than two arguments. For example, a single fact can be used to fully describe a pizza: pricesizeshape(pizza1,10,12,square). Using a series of facts to describe a pizza has some advantages and some disadvantages over using a single fact. A single fact tends to make a program more compact, whereas multiple facts might provide more flexibility. The structure of a fact also affects the syntax for goals that produce information. What is a goal? The facts in a Prolog program are useful even without any rules. Prolog can manipulate facts in several ways without explicit programming. Each fact in a Prolog program is similar to a record in a database, but you can query a Prolog program’s database by asking a question, called a goal in Prolog jargon. Suppose you have entered the following facts: priceof(pizza1,10). sizeof(pizza1,12). shapeof(pizza1,square). priceof(pizza2,12). sizeof(pizza2,14). shapeof(pizza2,round). 12 716 SECTION D, CHAP TER 12 You can ask questions by entering goals from the ?- prompt. For example, the goal ?- shapeof(pizza1,square) means “Is the shape of pizza1 square?” Prolog searches through the facts to see if it can satisfy the goal by finding a match. If a match is found, Prolog responds with yes; otherwise, it responds with no. This exercise might seem trivial because you are working with a small set of facts, which are all visible on the screen. Many programs, however, contain hundreds of facts, which cannot be displayed on a single screen or easily remembered by a programmer. Prolog allows you to ask open-ended questions by replacing constants with variables. A constant, such as pizza1, square, or 10, represents an unchanging value or attribute. In contrast, a Prolog variable is like a placeholder or an empty box, into which Prolog can put information gleaned from a fact. A Prolog variable begins with an uppercase letter to distinguish it from a constant. The argument Pizza is a variable, whereas pizza1 is a constant. The argument Inches is a variable, whereas 14 is a constant. Prolog variables are handy tools for formulating open-ended goals. As an example, suppose you want to find the size of pizza2. You can obtain this information by using the variable Inches in the goal: ?- sizeof(pizza2,Inches). Prolog looks for any facts that have sizeof as a predicate and pizza2 as the first argument. It responds with the actual value of the second argument: Inches = 14 Much of the power and flexibility of the Prolog language stem from its ability to sift through facts trying to match predicates, compare constants, and instantiate variables. The screentour for Figure 12-46 demonstrates various Prolog goals. FIGURE 12-46 The query asks for the size of pizza2 in inches. Prolog finds the fact sizeof(pizza2,14) and displays the value of the second argument 14 as the pizza’s size in inches. The ?- prompt allows you to work with a knowledge base by entering facts, rules, and goals. Suppose you have opened a knowledge base containing facts about two pizzas. You can enter goals to find their prices, sizes, and shapes. X Go step-bystep through some goals for learning about the pizzas in this knowledge base. 717 C O M PU T E R PR OGRA MMIN G What is instantiation? Finding a value for a variable is referred to as instantiation. To solve the goal ?- sizeof(pizza2,Inches)., Prolog instantiates the value 14 to the variable Inches. Instantiation means to make a temporary assignment. When a Prolog program discovers that the size of pizza2 is 14 inches, it instantiates, or assigns, the value 14 to the variable Inches. Prolog can perform multiple instantiations. You can ask for the sizes of both pizzas by using the query ?- sizeof(Pizza,Inches). Capitalizing the words i a and Inches signifies that both are variables. Prolog can instantiate Pizza to pizza1 and then instantiate it to pizza2: Pizza = pizza1 Inches = 12 Pizza = pizza2 Inches = 14 You can also formulate queries in which you tell Prolog not to instantiate a variable. For example, suppose you want to know the prices of the pizzas, but you don’t need to know which price corresponds to a particular pizza. You can enter the query ?- priceof(_,Price)., which means, “What are the prices?” Prolog would reply with: Price = 10 Price = 12 Instantiation can be used to produce information that is not implicitly stored in the database. Suppose you want to know the size of the round pizza. The knowledge base does not contain a fact like sizeof(roundpizza,14).; however, you can use a conjunction of two goals, as shown in Figure 12-47, to obtain the size of the round pizza. FIGURE 12-47 1. To solve this two-part goal, Prolog first looks through the knowledge base for a fact that fits the shapeof goal. 2. This fact fits the goal shapeof(Pizza, round) and tells us that pizza2 is round. Prolog uses a process called instantiation to satisfy goals. X Combining goals can get tricky. Trace the process through the digital textbook to see how it works. 3. Prolog instantiates pizza2 to the variable Pizza and then it attempts to solve the second part of the goal to find the size of pizza2. 12 718 SECTION D, CHAP TER 12 Instantiation is one of the keys to understanding how Prolog works. Unlike a procedural programming language, which is designed to step through a series of statements in a path prescribed by the programmer, Prolog can autonomously run through every possible instantiation, backtracking if necessary to deal with multiple variables. PROLOG RULES How does a programmer code Prolog rules? The pizza program requires a rule that states, “A pizza is a better deal if its price per square inch is less than the price per square inch of the other pizza.” Translated into Prolog code, this rule becomes: betterdeal(PizzaX,PizzaY) :squareinchprice(PizzaX,AmountX), squareinchprice(PizzaY,AmountY), AmountX < AmountY. Take a look at the logic behind this rule. A Prolog rule consists of a head, body, and connecting symbol, as described in Figure 12-48. FIGURE 12-48 The head of a rule defines an outcome or fact. In this case, the rule is true if PizzaX is a better deal than PizzaY. The connecting symbol :- means “if.” betterdeal(PizzaX, PizzaY) :The body of the rule consists of three clauses. squareinchprice(PizzaX,AmountX), squareinchprice(PizzaY,AmountY), AmountX < AmountY. The final clause means “AmountX is less than AmountY.” A Prolog rule consists of a head and one or more clauses that form the body of the rule. This clause means “The square-inch price of PizzaX is an amount designated as AmountX.” This clause means “The square-inch price of PizzaY is an amount designated as AmountY.” 719 C O M PU T E R PR OGRA MMIN G How do Prolog rules work? To understand how the betterdeal rule works, you’ll need to perform a bit of magic to determine the price per square inch of each pizza. In the completed pizza program, the computer can calculate the square-inch price using a rule the programmer provides. Because you don’t yet have such a rule, temporarily assume that the square-inch price of the first pizza is .0694 (6.94 cents) and the square-inch price of the second pizza is .0779 (7.79 cents). These facts would be stated as: squareinchprice(pizza1,.0694). and squareinchprice(pizza2,.0779). Now, suppose you enter the query ?- betterdeal(pizza1,pizza2)., which translates to “Is pizza1 a better deal than pizza2?” Figure 12-49 illustrates how Prolog uses the betterdeal rule to answer your query. Facts for the pizza program priceof(pizza1,10). FIGURE 12-49 Prolog executes the betterdeal rule. The betterdeal rule betterdeal(PizzaX,PizzaY) :- sizeof(pizza1,12). squareinchprice(PizzaX,AmountX), shapeof(pizza1,square). squareinchprice(PizzaY,AmountY), priceof(pizza2,12). AmountX < AmountY. sizeof(pizza2,14). shapeof(pizza2,round). squareinchprice(pizza1,.0694). squareinchprice(pizza2,.0779). The query ?- betterdeal(Pizza1,Pizza2). 1. Prolog instantiates pizza1 to PizzaX and pizza2 to PizzaY. betterdeal(pizza1,pizza2) :squareinchprice(pizza1,AmountX), squareinchprice(pizza2,AmountY), AmountX < AmountY. 2. Prolog looks through the facts to find the squareinchprice for pizza1 and pizza2. These prices are instantiated to AmountX and AmountY, respectively. betterdeal(pizza1,pizza2) :squareinchprice(pizza1,.0694), squareinchprice(pizza2,.0779), 3. The last line now contains a statement that is true—.0694<.0779—which validates the rule and produces “yes” as a response to your query, “Is pizza1 a better deal than pizza2?” .0694 < .0779. 12 720 SECTION D, CHAP TER 12 Does the order of rules affect the way a Prolog program runs? When coding programs in a procedural language, such as C, Pascal, or BASIC, the order of program instructions is critically important. For example, if you place input statements for pizza size and price after the code that calculates the price per square inch, the program produces an error because it has no numbers to use for the calculation. In contrast, the order or sequence of rules in a Prolog program is usually not critical. What does the complete pizza program look like in Prolog? The complete pizza program includes the facts that describe two pizzas and rules that describe the better deal, square-inch price, and area. Figure 12-50 contains the Prolog code for the entire pizza program. FIGURE 12-50 The Complete Prolog Program priceof(pizza1,10). sizeof(pizza1,12). shapeof(pizza1,square). priceof(pizza2,12). sizeof(pizza2,14). shapeof(pizza2,round). betterdeal(PizzaX,PizzaY) :squareinchprice(PizzaX,Amount1), squareinchprice(PizzaY,Amount2), Amount1 < Amount2. area(Pizza,Squareinches) :sizeof(Pizza,Side), shapeof(Pizza,square), Squareinches is Side * Side. area(Pizza,Squareinches) :sizeof(Pizza,Diameter), shapeof(Pizza,round), Radius is Diameter/2, Squareinches is 3.142 * (Radius * Radius). squareinchprice(Pizza,Amount) :area(Pizza,Squareinches), priceof(Pizza,Dollars), Amount is Dollars / Squareinches. INPUT CAPABILITIES Can I generalize the program for any pizzas? A version of the pizza program that contains facts, such as priceof(pizza1,10). and priceof(pizza2,12)., is limited to specific pizzas that cost $10.00 and $12.00. The program can be generalized by collecting input from the user and storing it in variables or by asserting new facts at runtime. 721 C O M PU T E R PR OGRA MMIN G How do I collect input from the user? If you think back to the procedural programming section of this chapter, you might recall that the BASIC program collected the size, shape, and price of each pizza by using Input statements such as: Input "Enter the size of pizza1: ", Size1 That Input statement displayed the prompt “Enter the size of pizza1:” and then stored the number entered in a variable called Size1. Prolog has similar capabilities. Examine the following program code to see how a Prolog program collects user input, then take the screentour in Figure 12-51 to see how the program interacts with users when it is run. Prolog uses the write predicate to display a prompt for input. The read predicate gathers input entered by the user, then the assertz predicate creates a fact, such as priceof(pizza1,12). write(user,'enter price of pizza1: '), read(user,Price1), assertz(priceof(pizza1,Price1)), write(user,'enter size of pizza1: '), read(user,Size1), assertz(sizeof(pizza1,Size1)), write(user,'enter shape of pizza1: '), read(user,Shape1), assertz(shapeof(pizza1,Shape1)), write(user,'enter price of pizza2: '), read(user,Price2), assertz(priceof(pizza2,Price2)), write(user,'enter size of pizza2: '), read(user,Size2), assertz(sizeof(pizza2,Size2)), write(user,'enter shape of pizza2: '), read(user,Shape2), assertz(shapeof(pizza2,Shape2)), FIGURE 12-51 When the pizza program runs, read() predicates collect input for the prices, the sizes, and the shapes of two pizzas. X See what happens when this Prolog program runs. When the program runs, a series of prompts asks users for input. 12 722 SECTION D, CHAP TER 12 DECLARATIVE LANGUAGES AND APPLICATIONS What kinds of problems are suitable for the declarative approach? As you have seen from the pizza example, it is possible to use a declarative language to solve a problem that involves calculations. However, problems that require intensive computation are not usually best suited for the declarative paradigm. As a general rule, declarative programming languages are most suitable for problems that pertain to words and concepts rather than to numbers. These languages are a good choice for applications such as those listed in Figure 12-52. What are the advantages and disadvantages of declarative languages? Declarative languages offer a highly effective programming environment for problems that involve words, concepts, and complex logic. As you learned in this chapter, declarative languages offer a great deal of flexibility for querying a set of facts and rules. These languages also allow you to describe problems using words rather than the abstract structures procedural and object-oriented languages require. Currently, declarative languages are not commonly used for production applications. To some extent, today’s emphasis on the object-oriented paradigm has pushed declarative languages out of the mainstream, both in education and in the job market. Many aspiring programmers are never introduced to declarative languages, so they are not included in the languages evaluated for a specific project. Declarative languages have a reputation for providing minimal input and output capabilities. Although many of today’s Prolog compilers provide access to Windows and Mac user interface components, programmers are often unaware of this capability. A final disadvantage of declarative languages is their relatively poor performance on today’s personal computer architecture, which is optimized for sequential processing. Declarative languages run much more efficiently on parallel architectures, which have only recently emerged in the personal computer market. FIGURE 12-52 Examples of Applications That Are Suitable for Declarative Languages • Databases that contain complex relationships—for example, a genealogy database used to trace ancestral lineage or a street and highway database used for mapping routes • Decision support systems that handle semi-structured problems—for example, a decision support system that helps determine tactics for military campaigns or a system that helps planners efficiently allocate energy resources • Expert systems that require analysis of multiple, interrelated factors—for example, an expert system that helps troubleshoot appliance repairs or a program that translates documents from one language to another SECTION D QuickCheck 1. The declarative programming paradigm focuses 4. , such as pizza (with a low- whereas the procedural paradigm focuses on algorithms that describe a(n) 2. . such as Pizza (with an uppercase ). table is a tabular A(n) on multiple factors. 5. In the Prolog fact partnumber(desk,12367), Finding the value for a variable while solving a . Prolog goal is called 6. desk and 12367 are , ercase p), or it can be a(n) method for visualizing and specifying rules based 3. A Prolog attribute can either be a(n) , on describing a(n) In a Prolog rule, the :- connecting symbol means . , whereas partnumber is referred to as the . X CHECK ANSWERS 723 C O M PUT E R PROG R A MMIN G SECTION E Secure Programming HACKERS, CRACKERS, CYBERCRIMINALS, or black hats—no matter what you call them, their goal is to gain unauthorized access to information. The first line of defense in cyber security is the programmers who create the applications, operating systems, and utilities that you use every day. Section E looks at program-level security vulnerabilities and what programmers can do to shore up security defenses. BLACK HAT EXPLOITS What makes my computer vulnerable to attack? Viruses, worms, bots, malicious Web scripts, and other exploits plague computer users. Many of these black-hat exploits creep into computer systems through security holes. Computer users have a vague notion that such holes exist and that antivirus software and firewalls are necessary to plug those holes, prevent intrusions, foil identity thieves, evade botnets, and avoid all the headaches associated with cleaning up after successful attacks. Consumers are led to believe that their computers are vulnerable because they don’t take rigorous steps to secure their computer by installing the latest antivirus software or firewall, keeping it up to date, and renewing their costly security software subscriptions. Those steps are essential in today’s computing environment, but consumers should also be asking significant questions, such as: What makes my computer vulnerable to these attacks in the first place? Exactly what are these security holes? Who is responsible for allowing security holes to exist? The answers to these questions turn the focus to program code because that is the source of the porous net that allows malware to wiggle into your computer. Today’s operating systems, utilities, and application software are full of defects that create security holes, which are exploited by black hats. Software security defects include buffer overflows and verbose error messages. What is a buffer overflow? According to many experts, the most prevalent cause of security holes is program code that allows buffer overflows. A buffer overflow (also called a buffer overrun) is a condition in which data in memory exceeds its expected boundaries and flows into memory areas intended for use by other data. Figure 12-53 offers a simplified example of the problem. 1. The programmer expects to collect a 2-byte state abbreviation as input for variable A. Variable B holds the address of the next instruction. 2. An attacker enters MI999. The 5-byte string overflows the buffer for variable A and spills over into variable B. Now variable B holds 999, which is not the correct address for the next instruction. 0 1 9 Variable B Variable A I A buffer overflow allows attackers to surreptitiously change the way a program works. Variable B Variable A M FIGURE 12-53 9 9 9 3. When the program checks variable B to locate the next instruction, it goes to 999, where an attacker might have stored code for a virus, worm, or bot. 12 724 SECTION E, CHAP TER 12 Buffer overflows can be triggered by input specifically designed to execute malicious code. One of the first exploits to take advantage of buffer overflows was the Morris worm, which attacked the Internet in 1988. Since that time, Microsoft alone has disclosed hundreds of buffer overflow vulnerabilities in commonly used Windows components, such as Internet Explorer, Outlook, Outlook Express, Troubleshooter, Plug and Play, the file decompression routine, and the routine that renders Windows Metafiles. Sloppy C and C++ programming sets the stage for buffer overflows. C and C++, the two languages most commonly used for professional software development, offer little protection against buffer overflows. Commonly used routines, such as get() and strcpy(), from the standard C libraries perform no bounds checking and therefore allow buffer overflows. Buffer overflows can be prevented. The techniques have been known for over a decade. Programmers can prevent buffer overflows by controlling pointers (or simply not using them), scrupulously checking input for suspicious characters, and placing strict boundaries on the values that can be stored in variables. Programming languages such as D, Cyclone, Java, and C# have some similarities to C and C++, but offer a more structured programming environment with fewer treacherous commands. What is a verbose error message? Applications fail for many reasons including hardware malfunctions, program bugs, and incompatibility with other software. Good programmers try to anticipate how a program might fail and include code to handle the failure as gracefully as possible. Typically, the result is an error message displayed to the user. When software is in developmental and testing phases, error messages can help programmers locate the source of errors if they contain information pertinent to the location of defective code and the state of variables. If those information-rich and verbose error messages remain when the software ships, hackers can use them to identify security vulnerabilities. Verbose error messages can also present attackers with information about the directory location of programs or files, the structure of a database, or the layout of the program in memory. The solution to verbose error messages is simple: Identify verbose error messages and sanitize them before shipping software. Some of the most common examples of verbose error messages appear during unsuccessful attempts to log in or access files. Those error messages, like the one in Figure 12-54, often give attackers information that makes break-ins easier. FIGURE 12-54 This verbose error message provides attackers with information about restricted access folder names and locations, as well as account names (Manager, Member, and Owner) that can gain access to these folders. 725 C O M PUT E R PROG R A MMIN G SECURE SOFTWARE DEVELOPMENT Is it possible to develop secure software? According to security experts, most software security problems can be traced back to defects that programmers unintentionally introduce in software during design and development. The general nature of the defects that open security holes is widely known and most can be eliminated. Software security begins when the program specifications are formulated. Techniques such as formal methods, threat modeling, attack trees, and defensive programming help programmers remain aware of security throughout the software development life cycle. What are formal methods? Formal methods help programmers apply rigorous logical and mathematical models to software design, coding, testing, and verification. Some software development methodologies incorporate formal methods and organizations that use them tend to produce more secure software. Formal methods, however, add to the cost and time of software development, so they tend to be used only for life-critical systems, such as air traffic control and nuclear reactor control systems, where security and safety are crucial. What is threat modeling? Threat modeling (also called risk analysis) is a technique that can be used to identify potential vulnerabilities by listing the key assets of an application, categorizing the threats to each asset, ranking the threats, and developing threat mitigation strategies that can be implemented during coding. Threats can be categorized using a model like STRIDE as described in Figure 12-55. S poofing: Pretending to be someone else ampering: Changing, adding, or deleting data R epudiation: Covering tracks to make attacks difficult to trace I nformation disclosure: Gaining unauthorized access to information FIGURE 12-55 STRIDE categories help software developers anticipate threats from attackers. enial of service: Making a system unavailable to legitimate users E levation of privilege: Modifying user rights to gain access to data Threats are ranked using DREAD categories based on how much Damage they could cause, how easy they are to Reproduce, how much effort and skill are needed to Exploit a vulnerability, how many users would be Affected, and how likely it is that the vulnerability will be Discovered by hackers. After potential threats have been identified and ranked, software designers can work with programmers to devise appropriate security strategies. 12 726 SECTION E, CHAP TER 12 What is an attack tree? Attack trees offer another way to get a handle on potential threats. An attack tree is a hierarchical diagram of potential attacks against a system. The root of the upside-down tree-shaped diagram represents an attacker’s ultimate objective, such as stealing passwords. The branches of the tree represent actions that attackers might take to achieve the objective. By tracing paths through the diagram, developers can discover which kinds of attacks are easiest, which are most difficult to detect, and which have the potential to cause the most damage. Figure 12-56 shows an attack tree for opening a safe. FIGURE 12-56 Attack trees are used by security analysts in many fields. This diagram illustrates an attack tree that might be devised by a bank security officer examining the vulnerability of the bank vault. Opening a Safe POpen Safe I Pick Lock PLearn Combo I Find Written Combo I Cut Open Safe I Install Improperly PGet Combo From Target Key OR I Threaten I Blackmail P Eavesdrop P Listen to Conversation IBribe I Get Target to State Combo What is defensive programming? Defensive programming (also referred to as secure programming) is an approach to software development in which programmers anticipate what might go wrong as their programs run, and take steps to smoothly handle those situations. It is analogous to defensive driving, which requires drivers to anticipate dangerous situations arising from adverse conditions or the mistakes of other drivers. Defensive programmers anticipate ways in which their programs could be compromised by legitimate users, intruders, other applications, the operating system, or third-party security software. Avoiding code that allows buffer overflow is an example of defensive programming. Trapping program failures without displaying verbose error messages is another example. Techniques associated with defensive programming include: • Source code walkthroughs. Open source software goes through extensive public scrutiny that can identify security holes, but proprietary software can also benefit from a walkthrough with other in-house programmers. • Simplification. Complex code is more difficult to debug than simpler code. Sometimes sections of code should be rewritten to reduce their complexity. • Filtering input. It is dangerous to assume that users will enter valid input. Attackers have become experts at concocting input that causes buffer overflows and runs rogue HTML scripts. Programmers should use a tight set of filters on all input fields. AND P = Possible I = Impossible 727 C O M PU T E R PR OGRA MMIN G How does signed code help? Signed code is a software program that identifies its source and carries a digital certificate attesting to its authenticity. Its main advantage is to help users avoid downloading and running virus-infected or intrusive software. Signed code is wrapped in a sort of security blanket that contains the name of the software developer and ensures that the software will not run if even one bit of the source code is changed by a virus or any other factor. Programmers who want to deliver signed code have to provide proof of their identity to a trusted third-party certification authority, such as VeriSign. Upon verification, the programmer is issued a code-signing utility and a certificate that can be used to sign any number of software products. To sign a product, the programmer uses the code-signing utility to encrypt the digital signature and program length. That encrypted information is incorporated in the product’s executable file. When a signed product is downloaded and launched, the encrypted signature is opened first, and the browser uses a client-side certificate validation routine to make sure the signature is valid and the program is the expected length before the actual product is opened and installed. Signed certificates have been deployed for downloaded software, using a browser on the client end to verify the digital signature. Microsoft’s Authenticode technology, for example, uses Internet Explorer as the verification client. Signed certificates are not bulletproof. Fake certificates can be fashioned to look like the real ones and are likely to fool consumers who don’t click the link to the certificate authority. Also, a signed certificate does not assure users that the original code was free of viruses or bugs. There is no thirdparty verification of the program’s content, but programmers are unlikely to knowingly distribute infected code that could be traced back to its source through a signed certificate like the one in Figure 12-57. FIGURE 12-57 A signed digital certificate identifies the source of a software program. 12 728 SECTION E, CHAP TER 12 MITIGATION What happens when vulnerabilities are discovered in products that have already shipped? Despite defensive programming and other tactics for producing secure software, some defects inevitably remain undiscovered in products that end up in the hands of consumers. Some of those defects could be discovered and exploited by attackers. To be fair, some exploits are caused by factors that didn’t exist when a software product was in development. For example, features of a new operating system might interact with a product in such a way that previously secure code suddenly becomes vulnerable. When software bugs are discovered—especially if the bugs are being exploited by attackers—the programmer’s remaining line of defense is to produce a bug fix, or patch. What’s up with all these patches? In today’s computing environment, patches seem to pop up like mushrooms after a spring rain. Computer users are encouraged to apply all available patches, and some software publishers such as Microsoft virtually force users to apply patches through an auto-update service. To create a software patch, programmers first locate the source of the defect and make a judgment about its scope. Some patches require reworking an entire module, whereas small patches might affect just a few lines of code. Before being posted for users, patches should be thoroughly tested. Patches can be supplied as complete files that simply overwrite an entire bad file with a more secure version. Patches can also be supplied as an inline code segment, which overwrites only a targeted section of code. Are there steps consumers can take to mitigate security vulnerabilities that exist because of programming flaws? You might remember seeing an error message like the one in Figure 12-58. The question “Do you want to debug?” could lead you to believe that you can simply correct program errors on your own. That is rarely the case. To debug software, you need access to source code or scripts. Even if those are available, as in the case of open source software, you would need programming expertise and knowledge of the application to locate the bug and fix it. FIGURE 12-58 An error message that seems to offer an opportunity to fix a bug really isn’t much use to most consumers. 729 C O M PU T E R PR OGRA MMIN G Realistically, computer users have no control over software at the code level, but there are a few steps they can take to avoid security problems that stem from software defects: • Select applications from software publishers with a good security track record. • • Watch for patches and apply them. • And yes, keep your firewall and antivirus software deployed and up to date. Consider using open source software, which has been extensively reviewed by the programming community. Security experts anticipate that buffer overflow and scripting attacks may decline because social engineering exploits like phishing scams require much less technical expertise. Social engineering exploits pit attackers directly against consumers and the techniques for fending off such attacks are typically out of the hands of programmers. In addition to remaining vigilant to social engineering exploits, consumers should remain aware of the vulnerabilities related to software defects and factor that into software purchase decisions. SECTION E QuickCheck 1. A buffer is a condition in programmers have to 4. which data in memory exceeds its expected anticipate ways in which their programs could boundaries and flows into memory areas be compromised by legitimate users, intruders, intended for use by other data. other applications, the operating system, or thirdparty security software. error messages can 2. present attackers with information about the 5. Programmers can offer a(n) directory location of programs or files, the struc- to fix a defect in a software product that is in the ture of a database, or the layout of the program hands of consumers. in memory. 3. The basic objective of programming methods is to generate proofs that the program code meets requirements. X CHECK ANSWERS 12 730 CHAP TER 12 Issue: Who’s Minding the Asylum? IN JUST 41 SECONDS, word text messaging record holder Ben Cook thumbed in “The razortoothed piranhas of the genera Serrasalmus and Pygocentrus are the most ferocious freshwater fish in the world. In reality they seldom attack a human.” Although some people can use a cell phone keypad to rapidly enter text messages, for most people, a numeric keypad is a frustrating tool for entering text. In addition to the exasperation of dealing with controls for gadgets such as cell phones and remote controls, you probably have pet peeves about the software interfaces for Web sites, productivity software, and computer games. Today’s programming languages provide programmers with sophisticated tools for coding and testing software. Why, then, are computers and computer software so often characterized as being difficult to use? How is it that the computer lexicon contains the term techno rage? What prompts comments such as “My machine sometimes makes me feel like an idiot!”? Programmer and user interface designer Alan Cooper offers an explanation and solution in his book The Inmates Are Running the Asylum. The book’s title is a metaphor for what Cooper perceives as the current state of computer programming. The inmates are computer programmers and the asylum is the frustrating, seemingly demented world of computer technology, with its cryptic error messages, puzzling user manuals, and inscrutable modes of operation. According to Cooper, programmers don’t intentionally create bad technology products. “Programmers aren’t evil. They work hard to make their software easy to use. Unfortunately, their frame of reference is themselves, so they only make it easy to use for other software engineers, not for normal human beings.” Cooper suggests that it is possible to create intuitive, easy-to-use technology products by devoting more time to developing detailed product specifications with the assistance of an interactive designer who is familiar with the psychology and habits of a typical computer user. Paul Somerson, a well-known computer columnist, asserts, “You shouldn’t have to plod through manuals, or spend hours waiting on support lines just to get your work done. This stuff is way, way too hard and overcomplicated.” Somerson proposes a tenpoint User’s Bill of Rights that begins “All computers should be forced to work the way people do, rather than the other way around.” The first point of Somerson’s Bill of Rights echoes the last point of another User’s Bill of Rights, developed by Clare-Marie Karat, a psychologist and IBM researcher. The Computer User’s Bill of Rights 1. The user is always right. If there is a problem with the use of the system, the system is the problem, not the user. 2. The user has the right to easily install software and hardware systems. 3. The user has the right to a system that performs exactly as promised. 4. The user has the right to easy-to-use instructions for understanding and utilizing a system to achieve desired goals. 5. The user has the right to be in control of the system and to be able to get the system to respond to a request for attention. 6. The user has the right to a system that provides clear, understandable, and accurate information regarding the task it is performing and the progress toward completion. 7. The user has the right to be clearly informed about all system requirements for successfully using software or hardware. 8. The user has the right to know the limits of the system’s capabilities. 9. The user has the right to communicate with the technology provider and receive a thoughtful and helpful response when raising concerns. 10.The user should be the master of software and hardware technology, not vice-versa. Products should be natural and intuitive to use. Source Clare Marie Karat IBM Thomas J. Watson Research Center 731 C O M PU T E R PR OGRA MMIN G Karat agrees with Cooper’s comments about programmers being unable to understand the people who use their software. She says, “The profile of the people who use systems has changed, while the system, and the culture in which they have developed, have not adjusted The engineers and computer scientists who design hardware and software know little about the needs and frustrations of consumers.” ing. Some controls, such as those for setting up networks, are not easy to understand, but could be crucial for a successful installation. Hiding those controls because they might confuse beginners has only caused advanced users to become frustrated. BusinessWeek columnist Stephen H. Wildstrom published Karat’s Bill of Rights and asked for reader feedback. The response was overwhelming and led Wildstrom to comment in a follow-up article, “The computer industry has a lot of baffled, frustrated, and unhappy customers.” Surprisingly, many readers disagreed with the tenets of the Bill of Rights. For example, Jef Raskin, a member of the Macintosh computer design team, pointed out that “the mouse was not intuitive. A person seeing one for the first time had no idea how to use it.” Until we are able to implant some kind of instantcomputer-genius chip at birth, it might be that people will just have to invest some time learning how to use a computer. “It shouldn’t take a Ph.D. to understand that a few hours invested in learning about the computer and its software will make subsequent products intuitively usable,” wrote one concerned BusinessWeek reader. Other readers questioned how much simplicity one could really expect from a computer. A computer that is as simple to use as a toaster would seem unlikely. As readers pointed out, a toaster is designed to do only one thing, whereas a computer can perform many different tasks, depending on the software it uses. Some efforts to simplify operating system software have created another band of disgruntled users who complain that important features are now hidden because of feedback from novice testers who considered such features too advanced or confus- Security and digital rights management are also factors that have negatively affected user satisfaction. Virus checking can slow system performance and an operating system that periodically blanks out the screen during routine procedures can set nerves on edge. Who is right? Can technology be simplified, yet remain powerful enough to accomplish complex tasks without compromising security? A branch of ergonomics called Human Factors, or HumanComputer Interaction (HCI), focuses on factors that make computers easy or difficult to use. The Human Factors InfoWeb provides more information about HCI and offers some additional food for thought on the usability controversy. INFOWEBLINKS You can read more about user-oriented software design at the Human Factors InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 What Do You Think? 1. Can you think of a specific instance when you have become frustrated with a software user interface? I S S UE Yes No Not sure 2. Is it possible to make computer software significantly easier to use? Yes No Not sure 3. Would you agree that programmers do not understand the viewpoint of a typical computer user and consequently produce bad software? Yes No Not sure X SAVE RESPONSES 12 732 CHAP TER 12 Computers in Context: Agriculture AGRICULTURE MIGHT SEEM like a lowtech enterprise, but many farmers are turning to technology for help managing their finances, crops, and livestock. Even home gardeners who need little more than a few seed packets and a hoe are digging into computer and Internet resources for tips on combating garden pests, growing spectacular roses, and producing a bumper crop of veggies. Need to identify the pesky insect that’s eating your tomatoes? Worried about the black spots appearing on your apple trees? Trying to figure out if that sprout is a flower or a weed? Many of your gardening questions are answered at sites sponsored by state and province extension services, the National Gardening Association, Organic Gardening magazine, and many more. Computers first sprouted up on farms to take care of financial matters. Farming, like any business, is all about the bottom line—the profit that’s left after paying for seed, feed, fertilizer, machinery, taxes, utilities, and labor. Tracking income and expenses provides essential information for analyzing ways to improve operations and generate more profit. To keep track of finances, farmers typically use generic small-business accounting software, such as Quicken, or vertical market software designed especially for farming. Farmers also use computers to maintain and analyze production records for crops and livestock. The Manitoba Milk Revenue Analyzer is an Excel spreadsheet template designed to help farmers pick the best dairy management scenario by analyzing factors such as feed costs and milk production levels. Cow Sense decision support software can help farmers improve cow herds and explore production, marketing, and financial alternatives. How does a farmer decide whether to plant fields with soybeans, corn, or wheat? The Internet offers resources such as the Alberta Agriculture and Rural Development Web site where farmers can use an interactive crop cost calculator to compare profit potential for up to four crops. The calculator uses average market value for each crop and expected yield per acre based on the farm’s growing zone. It produces a table that shows costs and estimated profit for each crop. Suppose that a farmer decides to plant durum wheat. How much seed is needed? Too much seed is wasted money. Not enough seed produces scanty crops. A Web-based seed calculator helps farmers decide how much seed is necessary to produce the desired plant population. It also provides instructions for calibrating the seeder so that it sows the correct amount of seed. And what if chickweeds are choking out the sunflower crop? Alberta’s Agriculture Web site offers an expert system to determine the most effective herbicide. Farmers use the Internet to gather information about weather, market reports, farm equipment, loans, crops, and livestock. Lively discussions take place in “ag” chat groups, such as Farm Business, Crop Talk, Cattle Chat, Hog Talk, and Bug Talk. Farmers subscribe to e-mail newsletters, such as Amber Waves, and tap government resources, such as the USDA (United States Department of Agriculture) Quarterly Hogs and Pigs report. The cutting edge of agricultural technology revolves around remote sensing, satellite imaging, geographical information systems, and global positioning systems. Remote sensing involves gathering information about an object without being in physical contact with 733 C O M PU T E R PR OGRA MMIN G it. For agriculture, two of the most often used remote sensing tools are satellite imaging and aerial photography. Weather satellite images are readily available and help farmers decide the best days to plant and harvest crops. Topographical satellite images can help farmers analyze drainage patterns to prevent crops from being flooded. Other satellite images can be used for crop surveillance, such as looking for areas of low yield, drought, disease, and infestation. A geographic information system (GIS) is a computer-based tool for storing data and creating layered maps of the earth’s surface. A GIS can store data about many factors important to farmers, such as soil moisture, salinity, nitrogen levels, and acidity. To collect data for a GIS, farmers use a GPS and a variety of monitoring devices. Throughout the growing season, farmers use GPSs to find specific locations in their fields where they record data from soil sampling and observations of weed growth, unusual plant stress, and growth conditions. They can enter this data into a GIS program, along with data from satellite images, to create maps that help them gauge where to plant, what to plant, and how to care for plants. The experience of a North Dakota farmer illustrates how data from satellite images and GPS observations can be combined in a GIS to create valuable agricultural maps. The farmer was producing a bountiful harvest of sugar beets, but the crop’s sugar content was low. The farmer enlisted the help of agriculture experts at a nearby university who obtained a satellite image of the fields that showed areas of high and low production. The next step was to take soil samples—one every half acre. A handheld GPS was used to make sure samples were taken in an exact half-acre grid pattern. The satellite and soil sample data were then entered into a GIS, which showed that some areas of the field were low on nitrogen. The GIS produced a map overlaid with a multicolored grid. Grid colors corresponded to the amount of nitrogen that should be applied for best production. But how to apply these varying levels of nitrogen in each small area? The farmer used GPS-equipped machinery to spread the correct amount of nitrogen in each area of the field. This selective fertilization, along with crop rotation to further even out nitrogen levels, increased the beets’ sugar content and the farmer’s income. Applying detailed agricultural data collected with a GPS is called precision farming. Several specialized tools, such as GPS-equipped yield monitors, help farmers collect data on bushels per acre, wet and dry bushels, total pounds, acres per hour, acres worked, and grain moisture content. Yield monitors are usually installed on the combines that harvest crops. The data is recorded on a memory card for later analysis and mapping. Although a variety of agricultural technologies are available, not all farmers embrace them with equal enthusiasm. Barriers to using technology such as computers, GISs, GPSs, and satellite imaging include cost, training, and concerns about reliability, privacy, and security. The cost of obtaining satellite images, for example, has been the biggest deterrent to regular use of this data; the main barrier to the use of computers is simply a lack of expertise. Busy farmers might not have time to learn how to use even basic computer programs, and a fairly complex GIS database application can seem particularly daunting. University and government agencies are targeting farmers with special extension courses on agriculture-specific software for accounting, livestock decision support, and crop management. The goal is to make these technology tools part of the legacy that will be handed down to the next generation of farmers. INFOWEBLINKS You’ll find lots more information at the Computers and Agriculture InfoWeb. w CLICK TO CONNECT www.infoweblinks.com/np2011/ch12 12 734 CHAP TER 12 New Perspectives Labs On the BookOnCD To access the New Perspectives Lab for Chapter 12, start the BookOnCD, or other NP2011 BookOn product, and then click the icon next to the lab title below. X USING A VISUAL DEVELOPMENT ENVIRONMENT IN THIS LAB YOU’LL LEARN: • To use the basic tools provided by the Visual Basic VDE • • How to work with a form design grid • The way that a visual development environment displays properties for a control • How to set properties that modify the appearance and operation of a control • • About the variety of events that can affect a control • How to add a component to the Visual Basic toolbox, and then incorporate it into a program • • How to save and test a program How to select controls, such as buttons, menus, and dialog boxes, for the graphical user interface of a computer program How to add code that specifies how a control responds to events How to compile a program and run the executable version LAB ASSIGNMENTS 1. Start the interactive part of the lab. Make sure you’ve enabled Tracking if you want to save your QuickCheck results. Perform each lab step as directed, and answer all the lab QuickCheck questions. When you exit the lab, your answers are automatically graded and your results are displayed. 2. Draw a sketch of the main screen of your favorite word processing program. Identify five controls (such as menus, toolbars, lists, buttons, and scroll bars) provided by the programmer. Describe the external events (such as clicks, double-clicks, right-clicks, and mouseovers) to which each control responds. 3. Suppose you are preparing to write a program that calculates the number of calories you burn while exercising. The program requires users to enter their weight, the distance travelled, and the elapsed time in minutes from the beginning of the exercise to the end. Users should also be able to select from the following types of exercises: jogging, walking, swimming, and bicycling. After these calculations are entered, users should click a Calculate button to display the results of the calorie calculation. A Clear button should allow users to enter a new set of weight, distance, and time data. Sketch a form design grid like the one you used in the lab, and indicate where you would place each control necessary for this program’s user interface. 735 C O M PU T E R PR OGRA MMIN G Key Terms Make sure you understand all the boldfaced key terms presented in this chapter. If you’re using the NP2011 BookOnCD, or other NP2011 BookOn product, you can use this list of terms as an interactive study activity. First, try to define a term in your own words, and then click the term to compare your definition with the definition presented in the chapter. Ada, 679 Agile methodology, 681 Algorithm, 689 API, 687 APL, 679 Argument, 714 Assembly language, 677 Assumption, 680 Attack tree, 726 BASIC, 679 Buffer overflow, 723 C, 679 C#, 679 C++, 679 Class, 702 Class attribute, 703 Class hierarchy, 704 COBOL, 679 Code, 674 Component, 687 Computer programming, 675 Constant, 680 Control, 683 Control structures, 695 CPL, 679 Debugger, 685 Decision table, 714 Declarative paradigm, 713 Defensive programming, 726 Eiffel, 679 Encapsulation, 712 Event, 684 Event-driven paradigm, 685 Event-handling code, 684 Fact, 713 Fifth-generation languages, 678 First-generation languages, 677 Flowchart, 692 Form design grid, 683 Formal methods, 725 Fortran, 679 Fourth-generation languages, 678 Function, 696 Functional paradigm, 713 Goal, 715 Haskell, 679 High-level language, 676 IDE, 686 Inheritance, 704 Instantiation, 717 Iteration, 698 Java, 679 Keyword, 676 Known information, 680 LISP, 679 Logic error, 685 Loop, 698 Low-level language, 676 Message, 706 Method, 705 Multiparadigm languages, 679 Object, 702 Object-oriented paradigm, 702 Parameters, 676 Particle renderer, 687 Pascal, 679 Pathfinder algorithms, 687 PL/1, 679 Polymorphism, 707 Predicate, 714 Predictive methodology, 681 Private attribute, 703 Problem statement, 680 Procedural language, 689 Procedural paradigm, 689 Procedure, 696 Program editor, 682 Programming language, 676 Programming paradigm, 679 Prolog, 679 Properties, 683 Pseudocode, 692 Public attribute, 703 REALbasic, 679 Remarks, 686 Repetition control structure, 698 RPG, 679 Rule, 713 Runtime error, 685 Scheme, 679 Scratch, 679 SDK, 686 Second-generation languages, 677 Selection control structure, 697 Sequence control structure, 695 Sequential execution, 695 Signed code, 727 SIMULA, 679 Smalltalk, 679 Structured English, 692 Subclass, 704 Subroutine, 696 Superclass, 704 Syntax, 676 Syntax error, 685 Third-generation languages, 677 Threat modeling, 725 Variable, 680 VDE, 683 Visual Basic, 679 Walkthrough, 694 12 736 CHAP T E R 1 2 Interactive Summary To review important concepts from this chapter, fill in the blanks to best complete each sentence. When using the NP2011 BookOnCD, or other BookOn product, click the Check Answers buttons to automatically score your answers. SECTION A: The instructions for a computer program are Some experts believe that sometimes referred to as . Computer such as Prolog, constitute a fifth generation of computer lan- computer pro- guages. Other experts define fifth-generation languages as those grams, but also plan, test, and document computer programs. that allow programmers to use graphical or visual tools to con- In contrast, software struct programs. programmers focus on tend to focus on designing and activities. languages, Before program code can be written, a programmer needs a A computer programming language is a set of grammar rules clear problem and for creating instructions that can assumptions, a description of known information, and a speci- ultimately be processed by a computer. The first programming fication for what constitutes a solution. With a clear plan, a pro- languages were low-level grammer can begin coding using a text editor, program editor, languages. , which includes a list of Second-generation languages, called or languages, allowed programmers to write programs consisting gram is not complete until it has been tested to ensure that it development environment. A pro- of abbreviated op codes instead of 1s and 0s. Third-generation contains no languages provided programmers with easy-to-remember com- computer programs should include internal documentation in the mand words, such as PRINT and INPUT. Fourth-generation form of languages were designed to eliminate many of the strict punc- inserted into a computer program along with lines of code. tuation and errors or runtime errors. All , which are explanatory comments rules that complicated third-generation languages. SECTION B: A programming X CHECK ANSWERS is a Procedural languages provide programmers with a variety of method that affects the way programmers conceptualize and structures for specifying the order of pro- approach a computer program. Every programming language gram execution. A supports one or more programming approaches. Languages directs the computer to execute one or more instructions, not such as COBOL and Fortran support a traditional approach to coded as a simple succession of steps. A programming called the paradigm, which is control provides a choice of paths, based on whether a condi- based on a step-by-step . Various planning control structure tion is true or false. A control, or loop, , and repeats one or more instructions until a certain condition is met. flowcharts, help programmers plan the steps for a procedural The procedural paradigm provides a solid approach to prob- program. lems that can be solved by following a set of steps. Procedural tools, such as structured English, languages tend to produce programs that run quickly and use resources efficiently. X CHECK ANSWERS 737 COMP U TE R PR O G R A M M I N G SECTION C: The object-oriented paradigm is based on Objects interact to solve problems by exchanging the idea that the solution to a problem can be visualized in , which initiate an action, process, or terms of objects that with each other. An procedure. OO programmers can create object is a single instance of an entity. Programmers can use to define what happens once an action is initiated. For flexibility a a concept called as a template for a group of objects , or overloading, allows with similar characteristics. Classes can be derived from other programmers to create a single, generic name for a procedure classes through a process called . The set that behaves in unique ways for different classes. The OO para- of superclasses and subclasses that are related to each other is digm allows programmers to hide the internal details of objects referred to as a class and their methods. This process, called . OO programmers Modeling Language diagrams often use , allows objects to be easily reused, modified, and repurposed. to plan the classes for a program. X CHECK ANSWERS SECTION D: Programming languages such as Prolog sup- of the rule. Prolog uses a process called port the to evaluate facts and rules to determine whether they are true. programming paradigm because they encourage programmers to describe a In Prolog jargon, a question or query to a program’s database is rather than its solution. Prolog programs are typically based called a upon a collection of facts and rules. A Prolog fact begins with a , such as shapeof, followed by a series of within parentheses, such as (pizza,round). Each Prolog rule has a , which defines an outcome or fact, followed by the notation :-, which . Declarative languages, such as Prolog, can be used for problems that require calculations, but those problems are typically better suited to languages. As a general rule, declarative languages are best suited for problems that pertain to words and concepts rather than numbers. means “if.” The body of the rule consists of one or more clauses that define conditions that must be satisfied to validate the head X CHECK ANSWERS SECTION E: According to most experts, the primary cause security breaches. A technique called of security holes is a programming focuses on source code walkthroughs, simplifica- overflow, a condi- tion in which data in memory exceeds its expected boundaries tion, and filtering input. and flows into memory areas intended for use by other data. program that identifies its source and carries a digital certificate Hackers also use verbose messages to attesting to its authenticity. Despite the best development efforts, uncover security vulnerabilities. Developing secure software code defects are sometimes found after products ship and must depends on rigorous software development techniques, such as be remedied with methods, which generate proof that the program code meets listed requirements, and code is a software . Consumers should remain aware of the vulnerabilities related to software defects and factor that into software purchase decisions. modeling that can be used to identify potential vulnerabilities to X CHECK ANSWERS 12 738 CHAP T E R 1 2 Interactive Situation Questions Apply what you’ve learned to some typical computing situations. When using the NP2011 BookOnCD, or any other NP2011 BookOn product, you can type your answers, and then use the Check Answers button to automatically score your responses. 1. A friend asks you for help writing a computer program to calculate the square yards of carpet needed for a dorm room. The statement “the living room floor is rectangular” is . The length and an example of a(n) width of the room are examples of information, which you can obtain as from the user. 2. Continuing with the carpet example, you devise a set of , to solve the problem. steps, or a(n) will be coded as a series of attributes, such as private shown below, which expresses the string manufacturer. algorithm. Input "Enter the width of the room in feet: "; width Input "Enter the length of the room in feet: "; length Print "Carpet needed:" Print length*width & " square feet" Print (length*width)/9 & "square yards" 3. Examine the code shown below. This program prints lines of text. For n = 1 To 5 Print "Loop number " & n Next n 4. , which immediately that these are You then use a programming language to write the You’ve just joined a programming team that is developing a Java program for an earth-moving equipment vendor. The lead programmer shows you a UML with labels such as Cranes, Trucks, and Front-end Loaders. With your background in object-oriented programming, you can tell 5. While browsing through several programs posted online, you come across the following code and realize it is written using the programming language. male(frodo). male(mungo). male(largo). male(balbo). female(berylla). female(belladonna). female(primula). female(sella). parents(mungo,berylla,balbo). parents(frodo,primula,drogo). parents(largo,berylla,balbo). parents(sella,berylla,balbo). brother_of(X,Y):male(Y), parents(X,Mother,Father), parents(Y,Mother,Father). X CHECK ANSWERS Interactive Practice Tests Practice tests that consist of ten multiple-choice, true/false, and fill-in-the-blank questions are available on both the NP2011 BookOn products and the NP2011 Web site. The questions are selected at random from a large test bank, so each time you take a test, you’ll receive a different set of questions. Your tests are scored immediately, and you can print study guides that help you find the correct answers for any questions that you missed. X CLICK TO START 739 COMP U TE R PR O G R A M M I N G Learning Objectives Checkpoints Learning Objectives Checkpoints are designed to help you assess whether you have achieved the major learning objectives for this chapter. You can use paper and pencil or word processing software to complete most of the activities. 1. Provide a ballpark figure for the number of lines of code in an operating system such as Windows Vista. 10. Give an example of a sequence control structure, a selection control structure, and a repetition control structure. 2. Describe how the jobs performed by computer programmers differ from the jobs performed by software engineers and systems analysts. 11. Define the following terms associated with object-oriented programming: object, class, superclass, subclass, attribute, message, method, inheritance, polymorphism, and encapsulation. 3. Create a diagram that shows how low-level and high-level languages relate to the five generations of computer languages. 4. Describe the differences between event-driven, procedural, object-oriented, and declarative paradigms. Provide at least one example of a language that supports each paradigm. 5. Describe the three elements of a problem statement. Provide examples within the context of the pizza problem. 6. List and describe three types of errors that are typically found when computer programs are tested. 7. List and describe at least eight tools other than programming languages that programmers use to create computer programs. 8. Define the term algorithm and explain how it relates to procedural programming. 9. Create a flowchart, structured English, and pseudocode to express the algorithm for tying your shoes. Concept Map 12. Define the following terms associated with the declarative paradigm: fact, rule, predicate, arguments, goal, instantiation, and backtracking. 13. Write at least five Prolog facts that describe your relationships to members of your family. 14. Describe how buffer overflows and verbose error messages make computer programs vulnerable to hackers. 15. Create a sentence outline for Section E that focuses on techniques for secure programming. 16. List steps that consumers can take to avoid vulnerabilities that exist in defective software code. Study Tip: Make sure you can use your own words to correctly answer each of the red focus questions that appear throughout the chapter. Programming Fill in the blanks to show the hierarchy of programming paradigms described in this chapter. Paradigms Objecta. ______________ d. ______________ g. ______________ j. ______________ k. ______________ - Paradigm Paradigm Paradigm Paradigm Driven Paradigm b. ______________ Class Form Goals l. ______________ h. ______________ Grid Structures e. ______________ Messages and f. ______________ Head Body Event c. ______________ Selection Controls Repetition Controls i. ______________ Predicate Controls m. ______________ Routines X CHECK ANSWERS 12 740 CHAP T E R 1 2 Projects CRITICAL THINKING Think like a programmer and write a detailed description of making a peanut butter sandwich. Next, look at your detailed instructions and circle any looping or branching activities. If you don’t have any, your description wasn’t detailed enough and you should rework it. When you’ve completed the description, submit it to your instructor, who might compare the most and least detailed descriptions submitted by all students in your class. RESUME BUILDER The computer game industry is hot and employs professionals from a wide variety of career fields. How would a professional in your career field fit into a computer game development team? What aspect of the game would he or she work on? Jot down your thoughts, and then go online and search for information about computer game development. What can you learn about jobs in the computer game industry for people with skills in your career field? Submit your findings in a format of your choice. You can write a one-page summary or get creative and work up a brochure or 30-second radio spot. GROUP PROJECT In a group of three students, create the specifications for a program to operate a gas pump. Make sure you create a problem statement, complete with assumptions and known information. Design the algorithm, making sure it dispenses the customer’s choice of Regular, Mid-grade, or Premium gas. Assume that all customers will pay cash (credit cards are not accepted). Create mockups of the input/output displays shown to the customer. Create a test plan with a comprehensive set of inputs and outputs that could be used to check the accuracy of your finished program. You can collaborate on each aspect of the specifications, or assign one student to each. Consolidate your completed specifications into a single document to submit to your instructor. CYBERCLASSROOM Computer programmers often develop user interfaces for programs. For this project, your team will use an online program and evaluate its interface. Your team leader should initiate the project by finding a free online tutorial about one hour in length that will be of interest to the rest of the team. A good place to find tutorials is www. learnthat.com. All team members should complete the tutorial and then send the team leader answers to the following questions: 1) From a learner’s perspective, did the tutorial hold your interest and help you learn?; 2) If you were redesigning the user interface for this program, what improvements would you make? The team leader should compile everyone’s comments and forward them to the instructor. MULTIMEDIA PROJECT To appreciate the complexity of game programming, play a computer game. Make a list of the objects you encounter during the first five minutes of the game. You might have to stop and restart the game several times to complete your list. Don’t forget to include the title screen, introductory music, video, and so on. Expand your list of objects by adding descriptions of what happens to the objects. For example, the background scenery object might move when the game character reaches a certain point on the screen, or a sound might be emitted by a character that gets struck by a weapon. Take a screenshot of the game during your observation period. Submit your list and screenshot. Indicate the name of the game you observed on the screenshot. GLOBALIZATION There is a growing trend to develop software that can be used globally. Suppose you are supervising a programming team and you have directed them to internationalize a software application and make sure it can be easily converted into a variety of languages. After researching on the Web, create a list of best practices for software globalization that you will distribute to your programming team. ISSUE The Issue section of this chapter focused on why computers seem difficult to use. Some critics accuse software engineers of designing software for their fellow engineers rather than non-technical computer users. On the other side of the argument are people who believe that computers perform complex tasks, which can never be simplified enough to become totally intuitive. Which side do you support? To begin this project, access the Human Factors InfoWeb to get an in-depth overview of the issue. Next, determine the viewpoint that you want to present and write a two- to three-page article suitable for a computer magazine. Follow your professor’s instructions for submitting your paper by e-mail or as a printed document. COMPUTERS IN CONTEXT The Computers in Context section focused on technologies used in agriculture, farming, and gardening. For this project, research one of these technologies. Find out how it works, how much it costs, and how it is applied to farming. Now imagine you are a county agriculture agent whose job is to inform farmers of new and useful agricultural technologies. You have a booth at the county fair. Design an eyecatching poster that fair-goers could understand in about two minutes. You can design your poster on poster board, or you can use an electronic medium, such as a word processor. When you submit your poster, provide a list of the sources you used to gather information and graphics. 741 COMP U TE R PR O G R A M M I N G On the Web STUDENT EDITION LABS w CLICK TO ACCESS THE NP2011 WEB SITE or open your browser and connect to www.cengage.com/computerconcepts/np/np2011. Lab results can be stored in the Universal Gradebook. Work hands-on in structured simulations practicing important skills and concepts VISUAL PROGRAMMING In the Visual Programming Student Edition Lab, you will learn about the following topics: • • • • • Introduction to the basics of visual programming Understanding structured vs. object-oriented programming Using Visual Basic Designing a user interface Writing and running a program CHAPTER COURSECAST TEST YOURSELF Use your computer or iPod to hear a five-minute audio presentation of chapter highlights. Review chapter material by taking these ten-question tests, then send your results to the Universal Gradebook. FLASHCARD COURSECAST ONLINE GAMES Interact with audio flashcards to review key terms from the chapter. Have some fun while refreshing your memory about key concepts that might appear on the next test. You can even send your results to the Universal Gradebook! DETAILED OBJECTIVES AND MORE! Make sure that you’ve achieved all the objectives for a chapter before it’s time for your test! At the NP2011 Web site you’ll also find Extra Content and InfoWebLinks. 12 742 ANSWERS QUICKCHEC K AN SW ERS R I E I uic ec 1. unit 2. Shut Down 3. False 4. Backspace 5. menu E R uic ec 1. system 2. Productivity 3. groupware 4. utility 5. driver uic ec E 1. authentication 2. Biometrics 3. keylogger 4. True 5. password uic ec 1. save 2. browser 3. search 4. @ 5. account E R uic ec 1. False 2. security 3. Spyware 4. spam uic ec 1. peripheral 2. desktop 3. tablet 4. gaming 5. compatible uic ec 1. Annotation 2. False 3. Labs 4. Tracking uic ec 1. clock 2. processor 3. bus 4. core 5. volatile 6. virtual 7. EEPROM uic ec E 1. True 2. Home 3. Overview 4. Labs E R uic ec 1. Internet 2. networks 3. Cyberspace 4. Digitization 5. Convergence uic ec 1. output 2. False 3. stored 4. supercomputer 5. microcontroller uic ec 1. digital 2. binary 3a. ASCII 3b. binary 4. gigabyte 5. integrated uic ec 1. source 2. object 3. operands 4. arithmetic 5. control 1 uic ec 1. Access 2a. random (or direct) 2b. sequential 3. density 4. head 5. crashes 6. lands 7. True 8. state uic ec 1. pointing 2. response 3. resolution 4. duplex 5. ports 6. USB uic ec E 1. Slot 2. surge 3. battery 4. death 5. Safe 2 uic ec 1. document 2. False 3. Spreadsheet 4. Database 5. ripper 6. DVD uic ec 1. suite 2. requirements 3. False 4. Public 5. concurrent 6. Open uic ec 1. executable 2. local 3. True 4. Portable 5. patch uic ec E 1. blended 2. viruses 3. worm 4. rootkit 5. quarantines 3 743 ANSWERS E R 4 uic ec 1. resources 2. memory (or RAM) 3. kernel 4. bootstrap 5. interface uic ec 1. False 2. dual 3. virtual 4. fork 5. Linux 6. True uic ec 1. conventions 2. True 3. C: 4. subdirectories 5. folders 6. size 7. header 8. native uic ec 1. Save 2. metaphor (or model) 3. Explorer 4a. tracks 4b. sectors 5. shredder uic ec E 1. Registry 2. folder 3. external 4. incremental 5. recovery E R uic ec 1. interface 2. False 3. protocols 4a. packet 4b. circuit 5. IP uic ec 1. Ethernet 2. True 3. 100 4. hub 5. router uic ec 1. Wi-Fi 2. Bluetooth 3. ad-hoc 4. infrastructure 5. SSID uic ec 1. resources 2. root 3. driver 4. file 5. application uic ec E 1a. WEP 1b. WPA2 2. Symmetric 3. Public 4. PGP 5 E R uic ec 1. backbone 2. ISP 3a. TCP 3b. IP 4a. static 4b. dynamic 5. domain 6. .edu 7. True uic ec 1. voiceband 2. False 3. Ethernet 4. latency 5. WiMAX uic ec 1. Portable 2. hotspot 3. WiMAX 4. WAP 5. EDGE uic ec 1. chat 2. False 3. grid 4. FTP 5. BitTorrent uic ec E 1. ports 2. patches 3. Firewall 4. router 5. private 6 744 ANSWERS E R uic ec 1. link 2. space 3. Browser 4. helper 5. stateless 6. True 7. certificates uic ec 1. crawler (or spider) 2. stuffing 3. False 4. Boolean 5. False 6. citation uic ec 1. True 2. True 3. clickthrough 4. cookies 5. False uic ec 1. @ 2. MIME 3. HTML 4. forward 5a. SMTP 5b. POP uic ec E 1. proxy 2. Flash 3. bug 4. Pharming 5. filter 6. False 7 E R 8 uic ec 1a. digital 1b. MIDI 2. sampling 3. AAC 4. playlist 5. recognition uic ec 1. FireWire (or IEEE 1394) 2. resolution 3. dependent 4. grayscale 5. TIFF, TIF 6. GIF 7a. Lossy 7b. lossless uic ec 1. True 2. drawing 3. wireframe 4. tracing 5. rasterization 6. SWF (or Flash) uic ec 1. Desktop 2. capture 3. frame (or bit) 4. False 5. False 6. streaming 7. VOB (or Video Object) uic ec E 1. Time 2. watermark 3. protected 4. CSS 5. individualization 6. super E R uic ec 1. manual (or hand) 2. Babbage 3. prototypes 4a. vacuum 4b. transistors 5a. integrated 5b. microprocessor uic ec 1. sectors 2. Silicon 3. offshoring 4. dot 5. retirement 6. vaporware 7. channels uic ec 1. False 2. security 3. telecommuting 4. Information 5. certification 6. portfolio 7. metasearch uic ec 1. ethics 2. Laws 3. Digital 4. Confidentiality 5. responsible 6. whistleblower uic ec E 1. radiation 2. SAR 3. repetitive 4. False 5. native 6. reminder 9 745 ANSWERS E R uic ec 1. mission 2a. tactical 2b. strategic 3. structured 4a. Batch 4b. online 5. MIS 6. decision 7. expert uic ec 1. management 2. Development 3. opportunities 4. waterfall 5. Requirements 6. use uic ec 1. solutions 2. distributed 3. application 4. RFP 5. specifications uic ec 1. implementation 2. customized 3a. unit 3b. integration 4. system 5. procedure 6. direct 7. acceptance 8. reliability uic ec E 1. MTBF 2. False 3. countermeasures 4. False 5a. identity 5b. phishing 1 0 E R 1 1 E R uic ec 1. mining 2. analytical 3. occurrences 4. flat 5. cardinalities 6. relational 7. object uic ec 1. True 2. engineers 3. paradigms 4. Third 5. visual 6. debugger 7. API uic ec 1. ASCII 2. False 3. independence 4. Dynamic 5. False uic ec 1. False 2. procedural 3. flowcharts 4. sequence 5. True 6. loop uic ec 1. key 2. types 3. True 4. sensitive 5. validation 6. redundancy 7. template uic ec 1. keywords 2. True 3. Boolean 4. False 5. SELECT 6. UPDATE 7. False uic ec E 1. Encryption 2. read 3. audit 4. financial 5. portable uic ec 1. object-oriented 2. True 3. UML 4. inheritance 5a. messages 5b. method uic ec 1a. problem 1b. solution 2. decision 3a. arguments 3b. predicate 4a. constant 4b. variable 5. instantiation 6. if uic ec E 1. overflow 2. Verbose 3. formal 4. Defensive 5. patch 1 2 746 CREDITS CRED I T S Page v, Image copyright 2009, Katrina Brown. Used under license from Shutterstock.com Page vi, Image copyright 2009, Alexander Kalina. Used under license from Shutterstock.com Page vii, Image copyright 2009, sukiyaki. Used under license from Shutterstock.com Page viii, Image copyright 2009, Natutik. Used under license from Shutterstock.com Page xi, Image copyright 2009, Alexander Kalina. Used under license from Shutterstock.com Page xii, Image copyright 2009, Vjom. Used under license from Shutterstock.com Page xiv, Image copyright 2009, Vjom. Used under license from Shutterstock.com Page xv, Image copyright 2009, Antonov Roman. Used under license from Shutterstock.com Page xvii, Image copyright 2009, Gladskikh Tatiana. Used under license from Shutterstock.com Orientation 2, Courtesy of Sony Electronics, Inc. Orientation 6, Courtesy of Kensington Technology Group Orientation 7, Photodisc/Getty Images Orientation 15, Courtesy of Stephen G. Eick, SSS Research Inc. Orientation 27, AP Photo/Darren Hauck Figure 1-02, Time & Life Pictures/Getty Images Figure 1-06, Walt Disney Pictures/courtesy Everett Collection Figure 1-07, Courtesy of iLounge.com: All Things iPod, iPhone, iTunes, and beyond. Figure 1-07, Courtesy of Apple Figure 1-08, Courtesy Everett Collection Figure 1-09, Motion Picture Association of America, Inc. Figure 1-10, Joel W. Rogers/Corbis Figure 1-11, AP Photo/Pavel Rahman Figure 1-14, Courtesy of IBM Corporation Figure 1-14, Courtesy of Alienware Figure 1-14, Courtesy of Apple Figure 1-14, Courtesy of Acer Inc. and Microsoft Corporation Figure 1-15, Courtesy of Hewlett-Packard Company Figure 1-16, Courtesy of Nintendo Corporation Figure 1-17, Courtesy of IBM Corporation Figure 1-18, Courtesy of LeRoy N. Sanchez, Records Management, Media Services and Operations, Los Alamos National Laboratory Figure 1-19a, Courtesy of Palm, Inc. Figure 1-19b, BlackBerry Curve image courtesy of Research In Motion Figure 1-19c, Courtesy of Hewlett-Packard Company Figure 1-19d, Courtesy of Apple Figure 1-20, Courtesy of HTC Figure 1-21, Getty Images Figure 1-41, Brand X Pictures/Alamy Figure 1-44, Courtesy of www.rantsandraves.co.uk Figure 1-49, Courtesy of SanDisk Corporation Issue 1a, Warner Bros/courtesy Everett Collection CinC-1a, Image courtesy of The Advertising Archives CinC-1b, Napster advertisement reprinted with permission of Napster, LLC Figure 2-03b, Courtesy of MonarchComputer.com Figure 2-03c, Courtesy of TriGem Computer Inc. Figure 2-04a, Courtesy of Hewlett-Packard Company Figure 2-04b, PRNewsFotot/RadioShack Corporation Figure 2-04c,Courtesy of Motion Computing Inc. Figure 2-04d, Courtesy of Fujitsu Technology Solutions Figure 2-03c, Courtesy of dpa/Landov Figure 2-05, Courtesy of Hewlett-Packard Company Figure 2-06, Courtesy of Alienware Corporation Figure 2-07, Courtesy of Hewlett-Packard Company Figure 2-08, Courtesy of Hewlett-Packard Company Figure 2-11, Courtesy of Jonathan Atwell Figure 2-12, Courtesy of Intel Corporation Figure 2-15a, Courtesy of Intel Corporation Figure 2-15b, AMD, the AMD Arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Figure 2-20, Courtesy of Kingston Technology Corporation Figure 2-27, Courtesy of IBM Research Figure 2-31, Courtesy of Hewlett-Packard Company Figure 2-32, Courtesy of BiTMICRO Networks, Inc. Figure 2-33, Courtesy of Sony Electronics, Inc. Figure 2-38a, Courtesy of IBM Corporation Figure 2-38c, Courtesy of Kensington Technology Group Figure 2-38d, Courtesy of Saitek USA Figure 2-39, Ozier Muhammad/The New York Times/Redux Figure 2-40, Courtesy of ViewSonic Corporation Figure 2-43, Courtesy of Advanced Micro Devices, Inc. Figure 2-44, Courtesy of Epson America Inc. Figure 2-45, Courtesy of Hewlett-Packard Company Figure 2-56, Courtesy of Kensington Technology Group Figure 2-57, Courtesy of AnchorPad Figure 2-58, Courtesy of Kensington Technology Group Figure 2-59, Courtesy of American Power Conversion Issue-2b, Gabe Palmer/CORBIS CinC-2a, Bettmann/CORBIS CinC-2b, Courtesy of Business Wire and Lages & Associates Figure 3-04, Courtesy of Microsoft Corporation Figure 3-07a, Courtesy of Microsoft Corporation Figure 3-07b, Reprinted with permission of Quark, Inc. and its affiliates Figure 3-07c, Courtesy of Adobe Systems Incorporated Figure 3-16a, wrangle/iStockphoto.com Figure 3-16b, Courtesy of Wolfram Research Figure 3-28, Courtesy of Microsoft Corporation Figure 3-28, Courtesy of Symantec Corp. Figure 3-28, Courtesy of Adobe Systems Incorporated Figure 3-28, Courtesy of CyberLink Figure 3-33, Copyright 2006 by the Open Source Initiative Figure 3-44, David Woolley/Getty Images Figure 3-49, Courtesy of ClamWin Free Antivirus Issue-3a, Courtesy of Software & Information Industry Association CinC-3a, Eli Reed/Magnum CinC-3b, Ashley Gilbertson/Aurora Photos Figure 4-08, Courtesy of Microsoft Corporation Figure 4-23, Courtesy of ACCESS CO., LTD Page 203, Courtesy of Microsoft Corporation Page 203, Courtesy of Apple Figure 4-23, Courtesy of Symbian Figure 4-47, Courtesy of Seagate Technology Issue-4, Dennis O’Clair/Getty Images CinC-4a, Courtesy of the Fond du Lac Police Department CinC-4b, Courtesy of the Fond du Lac Police Department Figure 5-01, Courtesy of Bob Metcalfe Figure 5-02, Gail Mooney/Masterfile Figure 5-12, AP Photo/Eckehard Schulz Figure 5-14, Courtesy of Iogear Figure 5-19a, Courtesy of SMC Corporation Figure 5-19b, Courtesy of D-Link Systems Figure 5-20, Courtesy of Linksys Figure 5-25, Courtesy of Dell, Inc. Figure 5-27, Courtesy of Bluetooth SIG Figure 5-28a, Courtesy of Nokia Figure 5-28b, Courtesy of Motorola Figure 5-30, Courtesy of D-Link Systems Figure 5-33a, Courtesy of Nokia Figure 5-33c, Courtesy of NETGEAR, Inc. Figure 5-39, Steve Chenn/CORBIS Figure 5-40a, Courtesy of Sonos, Inc. Figure 5-40b, Courtesy of D-Link Systems Figure 5-40c, Courtesy of Toshiba America Information Systems Figure 5-44a, Courtesy of Dell, Inc. Figure 5-44b, Courtesy of Intel Corporation Figure 5-48, AP Photo/Matthias Rietschel Figure 5-54, A. Ramey/PhotoEdit Issue-5a, Courtesy of Ken Pau and Stone Creek Coffee Issue-5b, Courtesy of Rob Flickenger (http://www.oreillynet.com/pub/wlg/448) CinC-5a, Photography courtesy of the University of Illinois at Urbana-Champaign Archives CinC-5b, Tom Stewart/CORBIS Figure 6-01, Courtesy of Computer History Museum Figure 6-14, Courtesy of ZyXEL Figure 6-16a, Courtesy of 2Wire.com Figure 6-16b, Courtesy of Zoom Technologies Figure 6-20, Siri Stafford/Getty Images Figure 6-20, Bryce Kroll/iStockphoto.com Figure 6-20, Jonathan Ling/iStockphoto.com CREDITS Figure 6-21, Courtesy of Hughes Network Systems, LLC Figure 6-22, Courtesy of Intel Corporation Figure 6-24, Courtesy of Cracker Barrel Old Country Store, Inc. Figure 6-25, Royalty-Free/CORBIS Figure 6-26, Courtesy of Siemens Press Photo Figure 6-27, Courtesy of Ground Control Figure 6-28, Courtesy of Ground Control Figure 6-30, David Young-Wolff/ PhotoEdit Figure 6-31, Courtesy of PRNewsFoto/Verizon Wireless Figure 6-33, Courtesy of Kyocera Wireless Figure 6-34, Courtesy of BenQ Mobile Figure 6-36, Courtesy of Microsoft Corporation Figure 6-38, AP Photo/Richard Drew Figure 6-40, Courtesy of SETI@home Figure 6-41a, Courtesy of chessbrain.net Figure 6-41b, Courtesy of www.climateprediction.net Figure 6-41c, Courtesy of distributed.net Figure 6-41d, Courtesy of Vijay Pande, Folding@Home, and Stanford University http://folding.stanford.edu Figure 6-41e, Courtesy of PrimeGrid distributed computing project Figure 6-41f, Courtesy of The Scripps Research Institute Figure 6-46, Paul Edmondson/Getty Images Figure 6-47, Courtesy of Gibson Research Corporation Issue-6b, Steve Allen/Getty Images CinC-6a, H.F. Davis/Getty Images CinC-6b, Royalty-Free/CORBIS Figure 7-01, Courtesy of Ted Nelson, Project Xanadu Figure 7-18, Courtesy of Ben Samuels Figure 7-27a, Eric Bean/Getty Images Figure 7-27b, Don Farrall/Getty Images Figure 7-27c, Ryan McVay/Getty Images Figure 7-27d, S.T. Yiap/Alamy Figure 7-27e, Comstock Images/Alamy Figure 7-29, Nicholas DeVore/Getty Images Figure 7-47a, Courtesy of Webroot Software Figure 7-47b, Courtesy of Computer Associates Figure 7-47c, 2003 2007 Check Point Software Technologies Ltd. All rights reserved. Issue-7a, Ron Chapple/Getty Images Issue-7b, Dennis MacDonald/PhotoEdit CinC-7a, Courtesy of ArahWeave www.arahne.si and fabric courtesy of MTT Maribor CinC-7b, Courtesy of MIT Media Lab/Photo by Lynn Barry Figure 8-05, Courtesy of Microsoft Corporation Figure 8-06, Courtesy of Apple Figure 8-09, Photodisc/Getty Images Figure 8-14a e, Courtesy of SanDisk Corporation Figure 8-14f, Courtesy of Hitachi Global Storage Technologies Figure 8-15, Courtesy of SanDisk Corporation Figure 8-28, Courtesy of Learning Technology Services, University of Wisconsin-Stout Figure 8-40, Rodolfo Arpia/Alamy Figure 8-43, Corbis Premium Collection/Alamy Figure 8-55, Getty Images Figure 8-56, Courtesy of Sling Media, Inc. Issue-8a, Victor Spinelli CinC-8a, Paramount/courtesy Everett Collection CinC-8b, Corbis/Sygma Figure 9-02a, Courtesy of IBM Corporation Figure 9-03a, Courtesy of IBM Corporation Figure 9-04, Courtesy of Iowa State University Photo Service Figure 9-05, Courtesy of IBM Corporation Figure 9-06, Courtesy of Unisys Figure 9-08, Courtesy of Texas Instruments Figure 9-11, Courtesy of Apple Figure 9-12, Courtesy of IBM Corporation Figure 9-13, Courtesy of Apple Figure 9-14, Courtesy of Dell, Inc. page 498, Courtesy of Dell, Inc. page 498, Courtesy of Intel Corporation page 498, Courtesy of Microsoft Corporation page 498, AP Photo/LM Otero page 498, AP Photo/Donna McWilliam Figure 9-15, Silicon Maps, Inc. Figure 9-16, Pawel Kopczynski/Reuters/Landov Figure 9-22a, Jonathan Blake/Bloomberg News Figure 9-22b, Mark Richards/PhotoEdit 747 Figure 9-22c, Ed Kashi/CORBIS Figure 9-24, 2006 Dell, Inc. All Rights Reserved. Figure 9-25a, Courtesy of the Federal Communications Commission Figure 9-25b, James Leynse/CORBIS Figure 9-27, Hill Creek Pictures/Getty Images Figure 9-30, DAJ/Getty Images Figure 9-37, Helen King/Corbis Figure 9-39, Jiang Jin/SuperStock Figure 9-40, Comstock Images/Alamy Figure 9-41, Stephen Simpson/Getty Images Figure 9-42, David Ellis/Getty Images Figure 9-43, Ryan McVay/Getty Images Figure 9-44, John Foxx/The Print Collector Figure 9-45, Javier Pierini/Getty Images Figure 9-48, Ingram Publishing/Alamy Figure 9-49, Courtesy of Body Composition Laboratory, Baylor College of Medicine Figure 9-51, 1999 Leslie Laurien Issue-9a, Michael Goldman/Getty Images Issue-9b, Sherwin Crasto/Reuters/Landov CinC-9a, Getty Images Figure 10-01, Courtesy of www.expedition360.com Figure 10-03a, Reza Estakhrian/Getty Images Figure 10-03b, Photodisc/Getty Images Figure 10-03c, Photodisc/Getty Images Figure 10-04a, Paul Edmondson/CORBIS Figure 10-04b, Photodisc/Getty Images Figure 10-04c, Photodisc/Getty Images Figure 10-04d, Photodisc/Getty Images Figure 10-08a, Hill Street Studios/Getty Images Figure 10-08b, Jupiterimages/Getty Images Figure 10-12, Jeremy Horner/CORBIS Figure 10-28, Courtesy of Tigris.org Figure 10-31a, Courtesy of Microsoft Corporation Figure 10-31b, Courtesy of Sybase, Inc. Figure 10-31c, Courtesy of Sage Software, Inc., a subsidiary of The Sage Group plc Figure 10-31d, Paul King/Getty Images Figure 10-38, Rob Lewine/CORBIS Figure 10-39, AP Photo/Ric Francis Figure 10-44, James Patrick Cooper/Bloomberg News Figure 10-45, AP Photo/Daniel Hulshizer Figure 10-46, Courtesy of Disaster Recovery Journal Issue-10b, SCPhotos/Alamy CinC-10a, Courtesy of MIDASoft Inc. CinC-10b, John Van Hasselt/CORBIS Figure 11-01, Courtesy of the State of Queensland, Department of Natural Resources and Mines 2005 Figure 11-02, David Ellis/Getty Images Figure 11-15a, Ryan McVay/Getty Images Figure 11-15b, Digital Vision/Getty Images Figure 11-49, Jim Craigmyle/CORBIS Figure 11-52, Fredrik Skold/Getty Images Figure 11-53, Courtesy of Krell Software Figure 11-54, Courtesy of SoftTree Technologies, Inc. Issue-11a, AP Photo/Dave Martin Issue-11b, Getty Images CinC-11a, Central Press/Hulton Archive/Getty Images CinC-11b, Gabe Palmer/CORBIS Figure 12-01, Courtesy of iStockphoto.com Figure 12-02, Digital Vision/Getty Images Figure 12-05, Courtesy of IBM Corporate Archives Figure 12-15, Dex Images/CORBIS Figure 12-17, Patrik Giardino/CORBIS Figure 12-45a, Wolfgang Kaehler/CORBIS Figure 12-45b, Stockbyte/Getty Images Figure 12-45c, Keith Brofsky/Getty Images Issue-12b, John Turner/Getty Images CinC-12a, Agricultural Research Service, a division of the United States Department of Agriculture; Photo supplied by GeoVantage, Inc. CinC-12b, AP Photo/Hays Daily News, Steven Hausler All other figure images MediaTechnics Corp. 748 GLOSSARY GLOS SARY 24-bit bitmap A True Color graphic, which requires 24 bits for each pixel, used for photographic-quality images that can include any of 16.7 million colors. 437 3-D graphics A type of digital graphics format that displays a three-dimensional image on a twodimensional space. 449 3-D graphics software The software used to create threedimensional wireframe objects, then render them into images. 137 32-bit bitmap A graphical image that requires 32 bits for each pixel. 437 AAC (Advanced Audio Coding) A file format that provides highly compressed audio files with very little loss of sound quality and is promoted by Apple on its iTunes Web site. 424 AACS (Advanced Access Content System) A digital rights management system that uses encryption to restrict access and copying content from optical media. 469 Abacus A manual calculator that consists of beads mounted on sticks inside a frame with each bead representing a specific quantity. 486 Actors Object-oriented jargon for people who use an information system. 573 Ad hoc report A customized report (also called a demand report) generated as needed. 561 Ad-blocking software A type of software that prevents ads from appearing on your computer screen. 385 Analog data Data that is measured or represented on a continuously varying scale, such as a dimmer switch or a watch with a sweep second hand. 22 Analog hole Any device or technique that allows digital content to be copied legally or illegally from an analog device. 464 Ad-serving cookie A cookie installed by a marketing firm to track user activities on Web sites containing its ads. 400 Analog protection system (APS) A DVD copy prevention technology developed by Macromedia that scrambles data copied to videotape. 468 Ada A high-level programming language developed by the U.S. Department of Defense and originally intended for military applications. 679 Analysis phase Tasks performed by the project team whose goal is to produce a list of requirements for a new or revised information system. 571 AES (Advanced Encryption Standard) An encryption standard that uses three separate key sizes and is based on the Rijndael encryption algorithm. 285 Analytical Engine A mechanical calculator designed by Charles Babbage that included memory and a programmable processor, and is widely regarded as the most important ancestor to modern computer design. 488 Agile methodology An approach to software development that produces programs in an incremental way allowing specification to evolve at each iteration. 681 Android OS An open source operating system used primarily for handheld devices. 203 AIFF (Audio Interchange File Format) An audio file format developed by Apple that is popular for cross-platform use. 424 Animated GIF A type of GIF image that displays a sequence of frames to create the appearance of continuous motion. 448 Ajax An approach to developing interactive Web sites that uses tools such as JavaScript and XML. 362 Anonymizer tools Software and/ or hardware that cloaks the origination of an e-mail or Web page request. 10 Acceptance testing The final phase of testing for a new information system, in which the system’s new owner determines whether the system performs as required. 586 Algorithm An abstract or general procedure for solving a problem, typically expressed as pseudocode, structured English, or a flowchart. 689 Anonymous FTP A type of FTP access that requires no account on a server, but rather can be accessed using “anonymous” as the user ID. 337 Access control Security measures that limit access to systems, such as databases. 655 Alpha test One of the first phases of software testing, usually conducted by the software publisher’s in-house testing team. 504 Anonymous proxy service A server on the Internet that can be used to forward Web requests after cloaking the originating address for users who want to surf anonymously. 403 Absolute reference In a worksheet formula, cell references (usually preceded by a $ symbol) that cannot change as a result of a move or copy operation. 132 Access time The estimated time for a storage device to locate data on a disk, usually measured in milliseconds. 77 Accounting software A category of software that includes accounting, money management, and tax preparation software. 142 ActiveX control A set of commands and components that can be used by programmers to add interactive features to Web pages. 372 ALU (Arithmetic Logic Unit) The part of the CPU that performs arithmetic and logical operations on the numbers stored in its registers. 31 Always-on connection In the context of Internet access, a permanent connection, as opposed to a connection that is established and dropped as needed. 307 Anti-spyware Software that blocks spyware from entering a computer. 402 Antivirus software A computer program used to scan a computer’s memory and disks to identify, isolate, and eliminate viruses. 167 749 GLOSSARY API (Application Program[ming] Interface) A set of application programs or operating system functions that can be utilized by a program. 687 Argument In the context of Prolog programming, an argument describes a predicate and is enclosed in parentheses in a Prolog fact. 714 APL The acronym for A Programming Language, a highlevel scientific programming language used to manipulate tables of numbers. 679 ASCII (American Standard Code for Information Interchange) A code that represents characters as a series of 1s and 0s. Most computers use ASCII code to represent text, making it possible to transfer data between computers. 24 Apple I An unassembled computer kit released in 1976 by Apple, Inc. for computer hobbyists. 495 Apple II A complete microcomputer system developed by Apple, Inc. and introduced in 1978 that helped broaden the personal computer market beyond hobbyists. 495 Apple Lisa A personal computer system developed and manufactured by Apple, Inc. that featured one of the first graphical user interfaces. 495 Apple Macintosh First released in 1984, it was one of the first commercially successful personal computers sold with graphical user interface software. 496 Application development tool Software, such as 4GLs, expert system shells, and component objects, that can be assembled into the applications software for an information system. 578 Application server A computer on a network that is dedicated to running applications and delivering applications to client computers. 249 Application software Computer programs that help you perform a specific task such as word processing. Also called application programs, applications, or programs. 16 Application specifications A detailed description of the way that the software for an information system should interface with the user, store data, process data, and format reports. 581 Application testing The process of testing newly developed application software by running unit tests, integration tests, and system tests. 584 Audio encoding software A computer program designed to convert sound files into a digital sound format, such as MP3 or AAC. 139 Authentication protocol Passwords, user IDs, and biometric measures used to verify a person’s identity. 34 Authorization and revocation A component of digital rights management that can be used to disable compromised players. 469 ASF (Advanced Systems Format) Microsoft’s proprietary container format for streaming digital multimedia; typically holds WMV and WMA files. 457 Automatic recalculation A feature found in spreadsheet software that automatically recalculates every formula after a user makes a change to any cell. 132 Assembly language A low-level computer programming language that uses simple commands and is translated into machine language by an assembler. 677 AVI (Audio Video Interleave) A video file format, developed by Microsoft, that was once the most common format for desktop video on the PC. 457 Assumption In the context of programming, a condition that you accept to be true, which often places limits on the scope of the programming problem. 680 B2B (Business-to-Business) An e-commerce exchange of products, services, or information between businesses. 384 Asymmetric Internet connection Any connection to the Internet in which the upstream speed differs from the downstream speed. 311 B2C (Business-to-Consumer) An e-commerce exchange of products, services, or information between businesses and consumers. 384 ATA (Analog Telephone Adapter) A device used with VoIP systems to convert analog voice signals from a standard telephone into digital data. 332 B2G (Business-to-Government) An e-commerce exchange of products, services, or information between businesses and governments. 384 Atanasoff-Berry Computer (ABC) An early electronic computer prototype that incorporated the use of vacuum tubes for data processing instead of mechanical switches. 489 Backup A duplicate copy of a file, disk, or tape. Also refers to a Windows utility that allows you to create and restore backups. 222 Atom A syndicated data feed technology for the Web similar to RSS. 360 Backup software A set of utility programs that performs a variety of backup-related tasks, such as helping users select files for backup. 227 Attack tree A hierarchical diagram of potential threats to a system used as one tool in creating more secure software. 726 Backward compatibility The ability to work with products designed for prior generations of the product. 198 Audio compression Techniques used to reduce the size of files that contain audio data. 423 Bandwidth The data transmission capacity of a communications channel. Digital signals are measured in bits per second; analog signals in Hertz. 251 Audio editing software A program that enables users to create and edit digital voice and music recordings. 139 Banner ad A type of advertisement typically embedded at the top of a Web page. 385 750 Bare-metal restore A process by which a backup is restored to a hard disk without first reinstalling the operating system and device drivers. 230 BASIC (Beginners All-purpose Symbolic Instruction Code) A simple high-level programming language that was popularized by Microsoft in the 1970s. 679 Batch processing A processing system that involves holding a group of transactions for processing until the end of a specified period of time. 560 BD-R (Blu-ray disc recordable) A Blu-ray disc that can be recorded on one time. 83 BD-RE (Blu-ray disc rerecordable) A Blu-ray disc that can be recorded on multiple times. 83 BD-ROM (Blu-ray ROM) A Blu-ray disc that cannot be modified; usually used to distribute movies. 83 Benchmarks A set of tests used to measure computer hardware or software performance. 69 Beta test A testing phase near the end of the software development process in which a software product is tested in real-world computer environments, often by end users. 504 BI (Business Intelligence) An integrated set of technologies and procedures used to collect and analyze data pertaining to sales, production, and other internal operations of a business in order to make better business decisions. 569 Binary number system A method for representing numbers using only two digits: 0 and 1. Contrast to the decimal number system, which uses ten digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. 23 Biometrics The use of physical attributes such as a fingerprint to verify a person’s identity. 34 Bit The smallest unit of information handled by a computer. A bit is one of two values, either a 0 or a 1. Eight bits constitute a byte, which can represent a letter or number. 23 Bitmap graphic An image, such as a digital photo, that is stored as a grid work of colored dots. 430 GLOSSARY Bitrate A ratio such as 5:1 that indicates the ratio of compression that has been applied to a file. High compression ratios, such as 35:1, indicate more compression so data can be contained in smaller files. 458 BitTorrent A peer-to-peer technology in which pieces of files are distributed to and from a collection of networked computers; used for distributing music and movies over the Internet. 338 Black screen of death An error condition in which a PC “freezes” and displays a black screen; usually turning the computer off and turning it on again clears the error. 103 Blended threat A combination of more than one type of malicious program. 162 BLOB (Binary Large OBject) A collection of binary data, such as a graphic or audio clip, that is stored in a single field of a database. 635 Blogs (WeB LOG) A publiclyaccessible personal journal posted on the Web. Blogs often reflect the personality of the author and are typically updated daily. 6 Blu-ray A high-capacity storage technology that stores up to 25 GB per layer on Blu-ray discs or BDs. 81 Bluetooth A wireless technology used in conjunction with standard Ethernet networks that allows data transfer rates between 200 and 700 Kbps up to a maximum range of 35 feet. 267 Bot An intelligent agent that autonomously executes commands behind the scenes. Sometimes used to refer to a remote access Trojan horse that infects computers. 164 Botnet A group of bots under the remote control of a botmaster, used to distribute spam and denialof-service attacks. 164 BPR (Business Process Redesign) A technique for improving a business by making radical changes to existing business procedures or organizational structure. 569 Break reminder software Software designed to signal users when it is time to take a break in order to avoid various repetitiveuse and stress injuries. 541 Bridge A device that connects two similar networks by simply transferring data without regard to the network format. 250 Broadband A term used to refer to communications channels that have high bandwidth. 251 Broadcast flag A status flag inserted into the data stream of digital television to indicate whether it can be copied. 465 Brute force attack A method of breaking encryption code by trying all possible encryption keys. 37 BSD license (Berkeley Software Distribution) An open source software license patterned on a license originally used by the University of California. 150 BMP The native bitmap graphic file format of the Microsoft Windows OS. 442 Buffer overflow A condition that can be exploited by hackers in which data overflows its intended memory space to affect other variables. 723 Boolean operator A logical search operator such as AND, OR, and NOT that helps form complex queries. 379 Bulletin boards One of the original communications and social network technologies used on the Internet. 6 Boot disk A floppy disk or CD that contains the files needed for the boot process. 229 Bus topology A network arranged on a common backbone that connects all the network devices. If the backbone fails, the network becomes unusable. 250 Boot process The sequence of events that occurs within a computer system between the time the user starts the computer and the time it is ready to process commands. 192 Bootstrap program A program stored in ROM that loads and initializes the operating system on a computer. 192 Business An organization that seeks profit by providing goods and services. 556 Button An onscreen graphical control that can be clicked to initiate an action or command. 190 Byte An 8-bit unit of data that represents a single character. 26 751 GLOSSARY C A compiled procedural language that provides both high-level commands and low-level access to hardware. 679 C# A derivative of C++ programming language developed by Microsoft. 679 C An object-oriented version of the C programming language. 679 C2C (Consumer-to-Consumer) An e-commerce exchange of products, services, or information between consumers; for example, online auctions. 384 Cable Internet service A type of Internet connection offered to subscribers by cable television companies. 316 Cable modem A communications device that can be used to connect a computer to the Internet via the cable TV infrastructure. 317 Cache Special high-speed memory that gives the CPU rapid access to data that would otherwise be accessed from disk. Also called RAM cache or cache memory. 68 CAD software (Computer-Aided Design software) A program designed to draw 3-D graphics for architecture and engineering tasks. 138 Capacitors Electronic circuit components that store an electrical charge; in RAM, a charged capacitor represents an “on” bit, and a discharged one represents an “off” bit. 72 Card reader A device that can be used to read and record data on solid stage storage devices, such as flash memory cards. 84 Cardinality A description of the numeric relationship (one-to-one, one-to-many, or many-to-many) that exists between two record types. 616 Case sensitive A condition in which uppercase letters are not equivalent to their lowercase counterparts. 35 Case sensitive database A database in which uppercase letters are not equivalent to their lowercase counterparts. 636 CASE tool (Computer-Aided Software Engineering) Software that is used to summarize system requirements, diagram current and proposed information systems, schedule development tasks, prepare documentation, and develop computer programs. 574 Certification exam An objective test that verifies your level of knowledge about a particular technology or subject. 516 CD (Compact Disc) An optical storage medium used to store digital information. CD-ROMs are read only. CD-Rs and CD-RWs can be used to record data. 81 Channel conflict A situation in which computer vendors from retail, wholesale, or mail-order channels compete for customers. 508 CD ripper software Software that converts the music on an audio CD to a WAV file. 139 Character data Letters, symbols, or numerals that will not be used in arithmetic operations (name, Social Security Number, etc.). 24 CD-DA (Compact Disc Digital Audio) The format for commercial music CDs, typically recorded by the manufacturer. 82 CD-R (Compact Disc Recordable) CD-R is a type of optical disc technology that allows the user to record data once on a disc. 83 CD-ROM (Compact Disc ReadOnly Memory) The read-only data format that is stamped onto a CD, usually by the manufacturer. 83 CD-RW (Compact Disc ReWritable) CD-RW is a type of optical disc technology that allows the user to write data onto a CD, then change that data much like on a floppy or hard disk. 83 Cell In spreadsheet terminology, the intersection of a column and a row. In cellular communications, a limited geographical area surrounding a cellular phone tower. 130 Cell references The column letter and row number that designate the location of a worksheet cell. For example, the cell reference C5 refers to a cell in column C, row 5. 131 Central processing unit (CPU) The main processing unit in a computer, consisting of circuitry that executes instructions to process data. 15 Centralized processing An information system design in which data is processed on a centrally located computer, usually a mainframe. 577 Certificates of completion A certification offered to students who successfully complete one or more courses on a specific topic. 515 Change requests A formal, written request to add, delete, or change the features of an information system. 582 Chat Interactive real-time personto-person communication over a network. 330 Chat groups A discussion in which a group of people communicates online simultaneously. 6 Chief information officer (CIO) The highest-ranking executive responsible for information systems. 510 Chipmakers Companies that design and manufacture computer chips used in a wide variety of computer-related applications. 498 Ciphertext An encrypted message. 285 Circuit switching The method used by the telephone network to temporarily connect one telephone with another for the duration of a call. 253 CISC (Complex Instruction Set Computer) A general-purpose microprocessor chip designed to handle a wider array of instructions than a RISC chip. 69 Class In object-oriented terminology, a group with specific characteristics to which an object belongs. 702 Class attribute In the context of object-oriented programming, a class attribute defines a characteristic for the members of a class. Similar to a field in a database. 703 Class diagram A diagram that provides the name of each object, a list of the object’s attributes, a list of methods, and an indication of the cardinality between objects. 573 752 Class hierarchy Like a hierarchical diagram, a class hierarchy is a set of related superclasses and subclasses defined within the object-oriented paradigm. 704 Click-through rate The number of times Web site visitors click an ad to connect to an advertiser’s site. 385 Client A computer or software that requests information from another computer or server. 18 Client-side script Scripting statements embedded in an HTML document that are executed by a client’s browser. 372 Client server mode A network where processing is split between workstations (clients) and the server. 249 Clip art Graphics designed to be inserted into documents, Web pages, and worksheets, usually available in CD-ROM or Webbased collections. 129 Cloud computing A grid of servers and storage devices harnessed together to offer Internetaccessible computing services. 335 Cluster (1) A group of sectors on a storage medium that, when accessed as a group, speeds up data access. (2) A group of two or more devices connected together to share processing, storage, input, or output tasks. 219 COBOL (COmmon BusinessOriented Language) A high-level programming language used for transaction processing on mainframe computers. 679 Code In the context of computer programming, code can be used as a noun to refer to the set of instructions that form a program, or as a verb that refers to the process of writing a program. 674 Code of ethics A set of guidelines designed to help professionals make on-the-job ethical decisions. 530 Codec Short for COmpressor/ DECompressor, a hardware or software routine that compresses and decompresses digital graphics, sound, and video files. 458 GLOSSARY Color depth The number of bits that determines the range of possible colors that can be assigned to each pixel. For example, an 8-bit color depth can create 256 colors. 91 Color palette The selection of colors used in a graphic. 437 COLOSSUS An early electronic computer prototype that used binary data representation and was used during WWII to decode messages encrypted by ENIGMA. 490 Computer A device that accepts input, processes data, stores data, and produces output according to a stored program. 14 Computer engineer A computer professional who focuses on the design and development of computer hardware and peripheral devices. 512 Computer engineering A career that focuses on the design and development of computer hardware and peripheral devices. 514 Command-line interface A style of user interface that requires users to type commands, rather than use a mouse to manipulate on-screen controls. 189 Computer industry The corporations and individuals that supply computer-related goods and services to individuals and organizations. 497 Commercial software Copyrighted computer applications sold to consumers for profit. 149 Computer network A collection of computers and related devices, connected in a way that allows them to share data, hardware, and software. 7 Commit or rollback strategy A procedure in transaction processing systems that will nullify, or roll back, a transaction if all the steps cannot be finalized, or committed to. 560 Communications channel Any pathway between the sender and receiver; channel may refer to a physical medium or a frequency. 251 Communications protocol A set of rules that ensures the orderly and accurate transmission and reception of data. 252 Compiler Software that translates a program written in a high-level language into low-level instructions before the program is executed. 30 Component Prewritten objects or modules that programmers can customize and add to their own programs. 687 Compression ratio A ratio such as 5:1 that indicates the ratio of compression that has been applied to a file. High compression ratios, such as 35:1, indicate more compression so data can be contained in smaller files. 458 Compute-intensive Refers to any task, problem, or product that is able to handle massive amounts of data and complex mathematical calculations. 19 Computed field A calculation that a DBMS performs during processing and then temporarily stores in a memory location. 635 Computer operator A computer professional who works directly with and maintains mainframe computers. 511 Computer professional Any person whose primary occupation involves one or more aspects of computer technology. 510 Computer program A detailed set of instructions that tells a computer how to solve a problem or carry out a task. 15 Computer programmer A person who designs, codes, and tests computer programs. 511 Computer programming The process of designing, coding, and testing computer programs. 675 Computer retail store A store that typically sells several brands of computers from a store-front location, such as a mall or shopping center. 506 Computer retailers Also called resellers, companies that sell computer-related products. 498 Computer salesperson A computer professional who sells computers and computer-related products. Also called a sales rep. 512 Computer science A career field that focuses on developing fast and efficient computers from their construction to their programming and operating systems. 514 753 GLOSSARY Computer virus A program designed to attach itself to a file, reproduce, and spread from one file to another, destroying data, displaying an irritating message, or otherwise disrupting computer operations. 163 Computer worm A software program designed to enter a computer system, usually a network, through security “holes” and then replicate itself. 163 Computer-aided music software Software used to generate unique musical compositions with a simplified set of tools, such as tempo, key, and style. 139 Concurrent-use license Legal permission for an organization to use a certain number of copies of a software program at the same time. 147 Confidentiality The obligation not to disclose willingly any information obtained in confidence. 526 Constant In the context of programming, a constant represents an unchanging value. In contrast, the data held in a variable can change. 680 Container formats File formats, typically for storing sound and video, that contain one or more types of data that is compressed using standard codecs. 457 Contract worker A computer professional who does not work directly for one company and often is paid by the job instead of a salary. 513 Control In the context of graphical user interfaces, a control is a screen-based object whose behavior can be specified by a programmer. 683 Control structures Instructions that specify the sequence in which a program is to be executed: sequence, selection, and repetition controls. 695 Cookie A message sent from a Web server to a browser and stored on a user’s hard disk, usually containing information about the user. 367 Copy generation management A digital rights management technology that controls the number of times that a CD, DVD, or tape can be recopied. 467 Copy protection Any digital rights management technology designed to prevent duplication of digital content; also referred to as copy prevention or copy restriction. 466 Copyright A form of legal protection that grants certain exclusive rights to the author of a program or the owner of the copyright. 146 Copyright notice A line such as “Copyright 2007 by ACME CO” that identifies a copyright holder. 147 CPL (Combined Programming Language) A programming language developed in the 1960s for scientific and commercial applications. 679 Cyberspace A term coined by William Gibson and now used to refer to information and other resources offered in virtual “worlds” based on computer networks and the Internet. 7 Data In the context of computing and data management, data refers to the symbols that a computer uses to represent facts and ideas. 15 Data bus An electronic pathway or circuit that connects the electronic components (such as the processor and RAM) on a computer’s motherboard. 94 Data center A specialized facility designed to house and protect computer systems and data. 592 Data dependence The undesirable situation in which data and program modules become so interrelated that modifications become difficult. 624 Data flow On a DFD, a line with an arrow on the end, which indicates the direction in which data flows. 572 CPU (Central Processing Unit) The main processing circuitry within a computer or chip that contains the ALU, control unit, and registers. 15 Data flow diagram (DFD) A diagram that illustrates how data moves through an information system. 572 CRM (Customer Relationship Management) A technique for increasing profitability by improving the relationship between a company and its customers. 569 Data fork An element of the Macintosh file system that comprises the part of the file that contains the text, audio, or video data; contrast with resource fork. 200 Cropping The process of selecting and removing part of an image. 435 Data independence The separation of data from the programs that manipulate the data. 624 Cryptographic algorithm A specific procedure for encrypting and decrypting data. 285 Data mining Analyzing data to discover patterns and relationships that are important to decision making. 612 Cryptographic key A specific word, number, or phrase that must be used to encrypt or decrypt data. 285 Control unit The part of the microprocessor that directs and coordinates processing. 31 CSMA CD (Carrier Sense Multiple Access with Collision Detection) A method of responding to an attempt by two devices to use a data channel simultaneously. Used by Ethernet networks. 259 Convergence In the context of technology, the melding of digital devices into a single platform that handles a diverse array of digital content, such as cell phones also playing digital music and displaying digital video. 8 CSS (1) (Content Scramble System) A DRM technology designed to prevent unauthorized duplication of DVDs. (2) (Cascading Style Sheets) A Web technology for specifying Web page styles. 468 Data redundancy Repetition of data within a database. 637 Data representation The use of electronic signals, marks, or binary digits to represent character, numeric, visual, or audio data. 22 Data store A filing cabinet, disk, or tape that holds data. On a DFD, usually represented by an openended rectangle. 572 Data transfer rate The amount of data that a storage device can move from a storage medium to computer memory in one time unit, such as one second. 77 754 Data type The characteristics of data that can be entered into a field in a data file; data types include character, numeric, date, logical, and memo. 634 Data view A mechanism typically applied to databases in which different forms or reports are displayed depending on a query, and can be customized for different categories of users. 655 Data warehouse A collection of information organized for analysis. 612 Database A collection of information that might be stored in more than one file or in more than one record type. 134, 610 Database administrator A person who supervises database design, development, testing, and maintenance. 511 Database audit A procedure that monitors or records user activity within a database, often for security purposes. 656 Database client software Software that allows any remote computer or network workstation to access data in a database. 626 Database index A file of keys and pointers used to display a list of database records organized according to the data in one or more fields. 639 Database model The underlying structure or category of a database, such as relational, hierarchical, network, or object. 614 Database server software Software that is designed to manage a large number of records and perform many simultaneous transactions. 626 Database software Software designed for entering, finding, organizing, updating, and reporting information stored in a database. 134 Database structure The arrangement of the fields, tables, and relationships in a database. 633 Date data type A data type that indicates that the data in a field represents a date. 634 DBMS (DataBase Management System) Application software that assists the user in manipulating, storing, and maintaining database files. 625 GLOSSARY de Colmar’s Arithmometer The first commercially successful, mass-produced mechanical calculator. 487 Debugger A programming utility that helps programmers test and correct a computer program. 685 DEC PDP-8 Built by Digital Equipment Corp. and introduced in 1965, the PDP-8 was the first commercially successful minicomputer. 493 Decision model A numerical representation of a realistic situation, such as a cash flow model of a business. 562 Decision query A question or set of instructions that describes the data that needs to be gathered to make a decision. 562 Decision support system (DSS) A computer system that allows decision makers to manipulate data directly, to incorporate data from external sources, and to create data models or “what-if” scenarios. 562 Decision support worksheet A comparison table used by a project team to evaluate solutions by assigning a score and a weight to each criterion. 579 Decision table A tabular method for listing rules and specifying the outcomes for various combinations of rules. 714 Declarative paradigm An approach to the programming process in which a programmer writes a program by specifying a set of statements and rules that define the conditions for solving a problem. 713 Decryption The process of converting ciphertext into plaintext. 285 DeCSS A program that defeats the CSS copy protection and allows users to copy DVDs. 468 Defensive programming An approach to programming that attempts to identify possible threats and proactively create code to avoid them. 726 Defragmentation utility A software tool used to rearrange the files on a disk so that they are stored in contiguous clusters. 221 DELETE An SQL keyword that removes a record from a table. 646 Demoware Commercial software that is distributed free, but expires after a certain time limit and then requires users to pay to continue using it. 149 Design phase The process a project team uses for figuring out how to implement a new system. This phase is undertaken after the analysis phase is complete. 576 Desktop A term used to refer to the main screen of a graphical user interface that can hold objects such as folders and widgets. 189 Desktop computer A computer that is small enough to fit on a desk and built around a single microprocessor chip. 58 Desktop operating system An operating system specifically designed for use on personal computers, such as Windows 7 or Mac OS X. 188 Desktop publishing software (DTP) Software used to create high-quality output suitable for commercial printing. DTP software provides precise control over layout. 125 Desktop video Videos stored in digital format on a PC’s hard disk or CD. 452 Desktop widget An interactive program that is represented on the desktop by an information-rich graphic, such as a clock or graph. 123 Detail reports Organized lists generated by a management information system (for example, an inventory list). 560 Device driver A type of system software that provides the computer with the means to control a peripheral device. 124 DHCP (Dynamic Host Configuration Protocol) A set of rules that allow network client computers to find and use the Internet address that corresponds to a domain name. 255 DHTML (Dynamic HTML) A collection of technologies such as HTML and JavaScript used to create animated and interactive Web pages. 362 Dial-up connection A connection that uses a phone line to establish a temporary Internet connection. 312 755 GLOSSARY Dialog box An element of graphical user interfaces that appears in a window and requests information, such as command parameters, from a user. 191 Dictionary attack A method of discovering a password by trying every word in an electronic dictionary. 36 Difference Engine A mechanical calculator design created by Charles Babbage that was to use steam power for fully automatic operation. It was never built. 488 Differential backup A copy of all the files that changed since the last full backup of a disk. 227 Digital audio Music or voice that has been digitized into files using sampling techniques; sometimes referred to as waveform audio. 422 Digital camera A camera that takes and stores a digital image instead of recording onto film. 431 Digital certificate A security method that identifies the author of an ActiveX control. A computer programmer can “sign” a digital certificate after being approved. 373 Digital content A term popularized in the context of multimedia that refers to digital music, video, text, and images. 464 Digital data Text, numbers, graphics, or sound represented by discrete digits, such as 1s and 0s. 22 Digital divide A gap between those who have access to digital technologies and those who do not. 12 Digital revolution A set of significant changes brought about by computers and other digital devices during the second half of the 20th century. 4 Digital rights management (DRM) A set of techniques and technologies designed to discourage and prevent unauthorized duplication of digital content. 464 Digital signal processor Circuitry that is used to process, record, and play back audio files. 424 Digital video A series of still frames stored sequentially in digital format by assigning values to each pixel in a frame. 452 Digital video recorder (DVR) A time-shifting device, such as a TiVo, that captures television and cable TV programs then stores them on a built-in hard disk for later viewing. 455 Digital watermark A digital rights management technology that inserts a hidden signal into multimedia content as an identifying marker that can be tracked or verified. 465 Digitization To convert non-digital information or media to a digital format through the use of a scanner, sampler, or other input device. 7 Digitizing tablet A device that provides a flat surface for a paperbased drawing and a “pen” used to create hand-drawn vector drawings. 446 Dimensional database A database often created for data analysis that has a more complex structure than a simple two-dimensional table. 619 Direct conversion The simultaneous deactivation of an old computer system and activation of a new one. 586 Directory In the context of computer file management, a list of files contained on a computer storage device. 206 Disaster recovery plan A stepby-step plan that describes the methods used to secure equipment and data against disasters, and how to recover from disasters. 593 Disk image A bit-by-bit copy of the contents of a disk created for backup, archiving, or duplication of data. 230 Disk mastering The process of creating a CD or DVD by selecting all the files to be copied and then writing them in a single session. Contrast with packet writing. 219 Disk partition An area of a hard disk created by dividing a large hard disk into several smaller virtual ones, such as when using two operating systems on a single computer. 205 Distributed database A database that is stored on different computers, on different networks, or in different locations. 626 Distributed processing An information system design in which data is processed on multiple workstations or servers. 577 Distribution media One or more floppy disks, CDs, or DVDs that contain programs and data, which can be installed on a hard disk. 146 DOCSIS (Data Over Cable Service Interface Specification) A security technology used for filtering packets and maintaining customer privacy on cable Internet services. 317 Document production software Computer programs that assist the user in composing, editing, designing, and printing documents. 125 Domain name Short for “fully qualified domain name”; an identifying name by which host computers on the Internet are familiarly known (for example, “coca-cola.com”). 307 Domain name server A computer that hosts the domain name system database. 308 Domain Name System (DNS) A large database of unique IP addresses that correspond with domain names. 308 DOS (Disk Operating System) The operating system software shipped with the first IBM PCs, then used on millions of computers until the introduction of Microsoft Windows. 202 Dot matrix printer A printer that creates characters and graphics by striking an inked ribbon with small wires called “pins,” generating a fine pattern of dots. 92 Dot pitch The diagonal distance between colored dots on a display screen. Measured in millimeters, dot pitch helps to determine the quality of an image displayed on a monitor. 90 Double layer DVD A DVD that essentially stacks data in two different layers on the disk surface to store 8.5 GB, twice the capacity of a standard DVD. 81 Download The process of transferring a copy of a file from a remote computer to a local computer’s storage device. 8 756 Downstream speed The rate at which transmitted data flows from a host or server to a local computer (contrast with upstream speed). 311 Drawing software Programs that are used to create vector graphics with lines, shapes, and colors, such as logos or diagrams. 137, 446 Drive bays Areas within a computer system unit that can accommodate additional storage devices. 86 Drive mapping A process of assigning a drive letter to a storage device located on a different network workstation. 276 DRM individualization A digital rights management concept that ties access to digital content to individual subscribers, whose access can be tracked, if necessary. 470 DSL (Digital Subscriber Line) A high-speed Internet connection that uses existing telephone lines, requiring close proximity to a switching station. 314 DSL filters Devices that are commonly used to prevent interference from analog devices, such as telephones, that use the same line as DSL devices. 315 DSL modem A device that sends and receives digital data to and from computers over telephone lines. 315 Dual boot A computer that contains more than one operating system and can boot into either one. 199 Dual-channel architecture The use of two channels to quickly transport data between RAM and the processor. 73 Duplex printer A printer that prints on both sides of the paper in a single pass. 93 Duty cycle A measurement of how many pages a printer is able to produce per day or month. 93 DVD (Digital Video Disc or Digital Versatile Disc) An optical storage medium similar in appearance and technology to a CD but with higher storage capacity. 81 GLOSSARY DVD authoring software Computer programs that offer tools for creating DVD menus and transferring digital video onto DVDs that can be played in a computer or standalone DVD player. 140 DVD image A series of files containing the data needed for a video DVD. The image is typically stored on a hard disk for testing before the image is transferred or “burned” to the DVD. 462 DVD R (Digital Versatile Disc Recordable) A DVD data format that, similar to CD-R, allows recording data but not changing data on a DVD. 83 DVD RW (Digital Versatile Disc ReWritable) A DVD technology that allows recording and changing data on DVDs. 83 DVD-R (Digital Versatile Disc Recordable) A DVD data format that, similar to CD-R, allows writing data but not changing data on a DVD. 83 DVD-ROM A DVD disc that contains data that has been permanently stamped on the disk surface. 83 DVD-RW A DVD technology similar to DVD+RW that allows recording and changing data on DVDs. 83 DVD-video A DVD format used for commercial movies shipped on DVDs. 82, 452 Dynamic IP address A temporarily assigned IP address usually provided by an ISP. 306 Dynamic Web publishing A way of displaying data from a database as customized Web pages, which are generated as the page is sent to the browser. 628 E-commerce Short for electronic commerce; the business of buying and selling products online. 384 E-mail Messages that are transmitted between computers over a communications network. Short for electronic mail. 6 E-mail account A service that provides users with an e-mail address and a mailbox. 392 E-mail attachment A separate file that is transmitted along with an e-mail message. 393 E-mail authentication A technology designed to defeat spam by checking to make sure that messages originate from valid addresses. 403 E-mail client software Software that is installed on a client computer and has access to e-mail servers on a network. This software is used to compose, send, and read e-mail messages. 398 E-mail message A computer file containing a letter or memo that is transmitted electronically via a communications network. 392 E-mail servers A computer that uses special software to store and send e-mail messages over the Internet. 397 E-mail system The collection of computers and software that works together to provide e-mail services. 397 EAI (Enterprise Application Integration) The use of networked software and databases for providing unrestricted sharing of data in an organization. 569 Ear training software Software used by musicians to develop tuning skills, recognize keys, and develop musical skills. 139 EBCDIC (Extended Binary-Coded Decimal Interchange Code) A method by which digital computers, usually mainframes, represent character data. 25 EDGE (Enhanced Data Rates for GSM Evolution) A cell phone technology that offers faster data transport than basic GSM service. 327 EDI (Electronic Data Interchange) The ability to transfer data between different companies using networks that enable companies to buy, sell, and trade information. 569 Educational software Software used to develop and practice skills. 140 EEPROM (Electrically Erasable Programmable Read-Only Memory) A type of non-volatile storage typically used in personal computers to store boot and BIOS data. 74 Eiffel An object-oriented programming language with syntax similar to C. 679 757 GLOSSARY Electronic wallet Software that stores personal information used during e-commerce transactions. 390 Encapsulation An object-oriented technique in which the internal details of an object are “hidden” in order to simplify their use and reuse. 712 Encryption The process of scrambling or hiding information so that it cannot be understood without the key necessary to change it back into its original form. 285 ENIAC (Electronic Numerical Integrator and Computer) An early electronic computer prototype that was designed for the U.S. Army for calculating trajectories and was completed in 1945. 490 EV-DO (Evolution-Data Optimized) A technology used by cell phone companies to offer faster data transport than basic CDMA service. 327 Event In the context of programming, an action or change in state, such as a mouse click, that requires a response from the computer. 684 Event-driven paradigm An approach to programming in which a programmer creates programs that continually check for, and respond to, program events, such as mouse clicks. 685 Event-handling code The program segment that instructs the computer how to react to events, such as mouse clicks. 684 Enterprise information system The use of one or more information systems that share data and typically provide information to hundreds or thousands of users who may be located in diverse locations. 559 Exception report A report generated by a management information system, listing information that is outside normal or acceptable ranges, such as a reorder report showing low-stock inventory items. 561 Entity-relationship diagram (ERD) A diagram that graphically depicts relationships between record types. 616 Executable file A file, usually with an .exe extension, containing instructions that tell a computer how to perform a specific task. 152 Equipment manufacturers Companies that design and manufacture computer hardware and communication products. 498 Executive dashboard software Software designed for managers that typically uses widgets to graphically display statistics relevant to business decisions. 613 Ergonomics The science of designing safe, comfortable, efficient machines and tools for human use. 537 ERP (Enterprise Resource Planning) A system of business management that integrates all resources of a business, including planning, manufacturing, sales, and marketing. 569 Ethernet A type of network in which network nodes are connected by coaxial cable or twisted-pair wire; the most popular network architecture, it typically transmits data at 10 or 100 megabits per second. 258 Ethernet adapter A type of network interface card designed to support Ethernet protocols. 261 EULA (End User License Agreement) A type of software license that appears on the computer screen when software is being installed and prompts the user to accept or decline. 148 Executive information system (EIS) A special type of a decision support system that is designed to provide senior managers with information relevant to strategic management activities. 562 Expansion bus The segment of the data bus that transports data between RAM and peripheral devices. 94 Expansion card A circuit board that is plugged into a slot on a computer motherboard to add extra functions, devices, or ports. 95 Expansion port A socket into which the user plugs a cable from a peripheral device, allowing data to pass between the computer and the peripheral device. 95 Expansion slot A socket or “slot” on a PC motherboard designed to hold a circuit board called an expansion card. 95 Expert system A computer system incorporating knowledge from human experts, and designed to analyze data and produce a recommendation or decision (also called knowledge-based system). 564 Expert system shell A software tool used for developing expert system applications. 564 Extended ASCII Similar to ASCII but with 8-bit character representation instead of 7-bit, allowing for an additional 128 characters. 24 External entity A person, organization, or device that exists outside an information system, but provides it with input or receives output. On a DFD, usually represented by a square. 572 External information Information obtained by organizations from outside sources. 559 Fact In the context of Prolog programming, a fact is a statement incorporated into a program that provides basic information for solving a problem. 713 FairPlay A digital rights management technology used to protect content distributed at the iPod store. 470 FAT32 A file system used by Microsoft Windows 95, 98, and Me operating systems to keep track of the name and location of files on a hard disk. 219 Feature creep An undesirable occurrence during information system development when users, customers, or designers attempt to add features after the final specifications have been approved. 582 Field The smallest meaningful unit of information contained in a data file. 134, 615 Field format A specification for the way that data is displayed on the screen and printouts, usually using a series of Xs to indicate characters and 9s to indicate numbers. 636 Field name A name that identifies the contents of a field. 615 Field validation rule A specification that a database designer sets up to filter the data entered into a particular field. 636 758 Fifth-generation languages Either declarative languages, such as Prolog, or programming languages that allow programmers to use graphical or visual tools to construct programs. 678 File A named collection of data (such as a computer program, document, or graphic) that exists on a storage medium, such as a hard disk or CD. 15 File Allocation Table (FAT) A special file that is used by some operating systems to store the physical location of all the files on a storage medium, such as a hard disk or floppy disk. 219 File compression utility A type of data compression software that shrinks one or more files into a single file occupying less storage space than the files did separately. 440 File date The date that a file was created or last modified. 206 File extension A set of letters and/ or numbers added to the end of a file name that helps to identify the file contents or file type. 204 File format The method of organization used to encode and store data in a computer. Text formats include DOC and TXT. Graphics formats include BMP, TIFF, GIF, and PCX. 207 File header Hidden information inserted at the beginning of a file to identify its properties, such as the software that can open it. 207 File management utilities Software, such as Windows Explorer, that helps users locate, rename, move, copy, and delete files. 214 File-naming conventions A set of rules, established by the operating system, that must be followed to create a valid file name. 204 File server A network computer that is dedicated to storing and distributing files to network clients. 249 File shredder software Software designed to overwrite sectors of a disk with a random series of 1s and 0s to ensure deletion of data. 220 File size The physical size of a file on a storage medium, usually measured in kilobytes (KB). 206 GLOSSARY File specification A combination of the drive letter, subdirectory, file name, and extension that identifies a file (such as A:.doc). Also called a “path.” 206 File Synchronization The process of keeping two sets of files updated so they are the same; used to synchronize files between a computer and PDA or backup device. 224 File system A method that is used by an operating system to keep files organized. 219 File tag In the context of Windows, a piece of information that describes a file. Tags, such as Owner, Rating, and Date Taken, can be added by users. 212 Firewall Software or hardware designed to analyze and control incoming and outgoing packets on a network, used to enhance security by filtering out potential intrusion attempts. 342 First-generation computers Computers that use vacuum tubes to process and store data such as UNIVAC. 491 First-generation languages Machine languages that were available for programming the earliest computers. 677 Fixed Internet access Any Internet access service designed to be used from a fixed, non-portable location, i.e., dial-up, ISDN, DSL, and cable Internet service. 311 Fixed-length field A field in a data file that has a predetermined number of characters. 615 Fixed wireless Internet service High-speed, wide area Internet service alternative to cable and DSL that transmits data wirelessly using RF signals. 320 Flash A file format developed by Macromedia and marketed by Adobe that has become popular for animations on Web pages. 448 Flash cookie A cookie-like object that is created and used by the Adobe Flash Player; also referred to as a local shared object. 402 Flash Video A popular video file format developed by Adobe Systems and used for Web-based video at sites such as YouTube. 457 Flat file A single file that is the electronic version of a box of index cards, in which all records use the same record format. 614 Floppy disk A removable magnetic storage medium, typically 3.5 in size, with a capacity of 1.44 MB. 80 Flowchart In software engineering, a graphical representation of the way a computer should progress from one instruction to the next when it performs a task. 692 Folder The subdirectories, or subdivisions of a directory, that can contain files or other folders. 206 Font A typeface or style of lettering, such as Arial, Times New Roman, and Gothic. 127 Footer Text that appears in the bottom margin of each page of a document. 128 Form design grid A visual programming tool that allows programmers to drag and drop controls to form the user interface for a program. 683 Form factor The configuration of a computer’s system unit; examples include tower, mini-tower, pizza box, and cube. 58 Formal methods Mathematicallybased techniques for specifying and developing reliable and robust software or hardware. 725 Format (1) Specified properties for setting a document’s appearance. (2) File type, i.e., BMP format. 127 Format shifting The process of converting media into a different file format to use it on a device other than the original one. 465 Formatting The process of dividing a disk into sectors so that it can be used to store information. 218 Formula In spreadsheet terminology, a combination of numbers and symbols that tells the computer how to use the contents of cells in calculations. 131 Fortran (FORmula TRANslator) The oldest high-level computer programming language still in use for scientific, mathematical, and engineering programs. 679 Fourth-generation computers Computers, such as today’s personal computer, servers, and mainframes, that use a general purpose microprocessor for data processing. 494 759 GLOSSARY Fourth-generation languages Programming and query languages, such as SQL and RPG, that more closely resemble human languages than did third-generation languages. 678 Fragmented files Files stored in scattered, noncontiguous clusters on a disk. 221 Frame rate Refers to the number of frames displayed per second in a video or film. 456 Frames An outline or boundary, frequently defining a box. For document production software, a pre-defined area into which text or graphics may be placed. 129 Gantt chart A chart that depicts a project schedule by showing each task as a bar on the chart. 570 Gateway A network device that connects two dissimilar networks even if the networks use different protocols. 251 GIF (Graphics Interchange Format) A bitmap graphics file format, popularized by CompuServe, for use on the Web. 442 Gigabit (Gb or Gbit) Approximately one billion bits, exactly 1,024 megabits. 26 Gigabyte (GB) Approximately one billion bytes; exactly 1,024 megabytes (1,073,741,824 bytes). 26 Graphics card A circuit board inserted into a computer to handle the display of text, graphics, animation, and videos. Also called a “video card.” 91 Graphics processing unit (GPU) A microprocessor dedicated to rendering and displaying graphics on personal computers, workstations, and videogame consoles. 91 Graphics software Computer programs for creating, editing, and manipulating images; types include paint software and drawing software. 137 Grayscale palette Digital images that are displayed in shades of gray, black, and white. 438 Freeware Copyrighted software that is given away by the author or copyright owner. 150 Gigahertz (GHz) A measure of frequency equivalent to one billion cycles per second. 67 Front side bus (FSB) The data bus that carries signals between the CPU and RAM, disks, or expansion slots. 68 Global update In the context of databases, changing data in more than one record at a time, i.e., changing the due date in all the records. 650 Grid computing system A network of computers harnessed together to perform processing tasks; distributed grids like the SETI project use ad hoc and diverse Internet connected computers; also see cloud computing. 334 Globalization A group of social, economic, political, and technological interdependencies linking people and institutions from all areas of the world. 12 Groupware Software that enables multiple users to collaborate on a project, usually through a pool of data that can be shared by members of the workgroup. 121 Goal In the context of Prolog programming, a query that searches for an answer based on a set of Prolog facts and rules. 715 Handheld computer A small, pocket-sized computer that is designed to run on its own power supply and provide users with basic applications. 19 FTP (File Transfer Protocol) A set of rules for uploading and downloading files between a client computer and a remote server. 336 FTP client The computer or software that is used to access an FTP server and transfer files to it or from it. 336 FTP server A computer that stores and distributes files to remote client computers. 336 Full backup A copy of all the files for a specified backup job. 226 Full system backup A backup that contains all of the files on the hard disk, including the operating system. 228 Fully justified The horizontal alignment of text where the text terminates exactly at both margins of the document. 128 Function In spreadsheet software, a built-in formula for making a calculation. In programming, a section of code that manipulates data, but is not included in the main sequential execution path of a program. 131, 696 Functional paradigm An approach to programming that emphasizes the use of expressions called “functions.” 713 Fuzzy logic A technique used by an expert system to deal with imprecise data by incorporating the probability that the input information is correct. 564 Google Chrome OS An operating system based on the Linux kernel; designed for netbooks dedicated to using the Web and Web-based applications. 201 GPL (General Public License) A software license often used for freeware that insures it will be distributed freely whether in its original form or as a derivative work. 151 Gradient A smooth blending of shades of different colors, from light to dark. 447 Grammar checker A feature of word processing software that coaches the user on correct sentence structure and word usage. 127 Graphical user interface (GUI) A type of user interface that features on-screen objects, such as menus and icons, manipulated by a mouse. 189 Graphics Any picture, photograph, or image that can be manipulated or viewed on a computer. 137 Handshaking A process where a protocol helps two network devices communicate. 252 Hard disk controller A circuit board in a hard drive that positions the disk and read-write heads to locate data. 79 Hard disk drive A computer storage device that contains a large-capacity rigid storage surface sealed inside a drive case. Typically used as the primary storage device in personal computers. 78 Hard disk platter The component of a hard disk drive on which data is stored. It is a flat, rigid disk made of aluminum or glass and coated with a magnetic oxide. 78 Harvard Mark I An early computer prototype also known as the ASCC (Automatic Sequence Controlled Calculator) developed by IBM that used decimal data representation rather than binary. 490 760 GLOSSARY Hash value A number produced by a hash function to create a unique digital “fingerprint” that can be used to allow or deny access to a software application. 157 Hover ad An advertisement, created using interactive Web tools such as DHTML, that appears on top of Web pages sometimes obscuring parts of them. 385 Hypertext link Also referred to simply as a “link,” an underlined word or phrase on a Web page that, when clicked, takes you to a designated URL. 361 Haskell A functional programming language. (See functional para digm.) 679 HSUPA (High Speed Uplink Packet Access) A data transmission standard used by cell phone companies for high-speed data transport. 327 IBM 360 An early third-generation computer that is widely regarded as the first general purpose mainframe. 493 HDCP (High-bandwidth Digital Content Protection) A form of copy protection designed to prevent digital content from being transmitted over a DVI interface to a non-complying display device. 466 HTML (Hypertext Markup Language) A standardized format used to specify the layout for Web pages. 362 Head crash A collision between the read-write head and the surface of the hard disk platter, resulting in damage to some of the data on the disk. 80 HTML conversion utility Utility software that converts documents, spreadsheets, and databases into HTML files that can be posted on the Web. 369 Header Text that is placed in the top margin of each page of a document. 128 HTML document A plain text or ASCII document with embedded HTML tags that dictate formatting and are interpreted by a browser. 362 Help desk Part of the Information Systems department designated to assist users experiencing problems with their computers or applications. 588 Helper application An external program that is used to display content retrieved using a Web browser. 367 Hierarchical database A database model in which record types are arranged as a hierarchy, or tree, of child nodes that can have only one parent node. 617 High-level language A programming language that allows a programmer to write instructions using human-like language. 676 Hollerith Tabulating Machine A mechanical calculator first used in 1890 by the U.S. Census Bureau that used punch cards to store data and led to the creation of IBM. 488 Home computer system A personal computer designed for use with mainstream computer applications such as Web browsing, e-mail, music downloads, and productivity software. 60 HomePNA A network technology that uses a building’s existing phone lines to connect nodes. 257 Horizontal market software Any computer program that can be used by many different kinds of businesses (for example, an accounting program). 142 HTML forms An HTML document containing blank boxes that prompt users to enter information that can be sent to a Web server. Commonly used for e-commerce transactions. 371 HTML script A series of instructions embedded directly into the text of an HTML document or a file referenced from an HTML document. 371 HTML tags A set of instructions, such as <B>, inserted into an HTML document to provide formatting and display information to a Web browser. 362 HTTP (Hypertext Transfer Protocol) The communications protocol used to transmit Web pages. HTTP:// is an identifier that appears at the beginning of Web URLs (for example, http //www. fooyong.com). 364 HTTP status code A code used by Web servers to report the status of a browser’s request. The HTTP status code 404 means document not found. 365 Hyperlink data type A data type assigned to fields that store URLs used to link directly to a Web page. 635 Hypertext A way of organizing a collection of documents by assigning an address to each and providing a way to link from one address to another. 360 IBM AS 400 IBM’s most successful legacy minicomputer. 493 IBM PC An early, commercially successful personal computer system that featured a 4.77 MHz Intel 8088 processor, 64 KB RAM, and a floppy disk drive. Ancestor to today’s PCs. 495 IBM PC XT An early, commercially successful personal computer system that included a hard disk drive. 495 ICANN (Internet Corporation for Assigned Names and Numbers) A global organization that coordinates the management of the Internet’s domain name system, IP addresses, and protocol parameters. 309 Icon A graphical object, such as those that represent programs or folders on a computer desktop. 189 IDE (Integrated Development Environment) A set of programming tools, typically including editor, compiler, and debugger, packaged into an application for creating programs. 686 Identity theft An illegal practice in which a criminal obtains enough information to masquerade as someone. 36 Image compression Any technique that is used to reduce the size of a file that holds a graphic. 439 IMAP (Internet Messaging Access Protocol) A protocol similar to POP that is used to retrieve e-mail messages from an e-mail server, but offers additional features, such as choosing which e-mails to download from the server. 397 Implementation phase A set of tasks performed with the supervision of a system development project team in which a new information system is constructed. 583 Incremental backup A backup that contains files that changed since the last backup. 228 761 GLOSSARY Inference engine Software that can analyze and manipulate a knowledge base or expert system. 564 Information engineering methodology A method of developing an information system that focuses on data the information system collects before finding ways to process that data. 570 Information system A computer system that collects, stores, and processes information, usually within the context of an organization. 556 Information systems (IS or CIS) The career field or academic major that focuses on developing computer systems and networks for businesses. 514 Information technology (1) A degree program that focuses on the computer equipment and software used by businesses and organizations. (2) The use of computers and software to manipulate data. 514 Information technology industry (IT industry) Companies involved in the development, production, sales, and support of computers and software. 497 Infrared light A transmission technology that uses a frequency range just below the visible light spectrum to transport data. 265 Inheritance In object-oriented terminology, a method for defining new classes of objects based on the characteristics of existing classes. 704 Ink jet printer A non-impact printer that creates characters or graphics by spraying liquid ink onto paper or other media. 92 Input noun, the information that is conveyed to a computer. verb, to enter data into a computer. 15 INSERT An SQL keyword that adds a record to a table. 647 Instant messaging A private chat in which users can communicate with each other in real time using electronically transmitted text messages. 330 Instantiation A programming term that refers to the process of assigning a value to a variable. 717 Instruction cycle The steps followed by a computer to process a single instruction; fetch, interpret, execute, then increment the instruction pointer. 32 Instruction set The collection of instructions that a CPU is designed to process. 30 Integer data type A numeric data type used for fields that contain whole numbers. 634 Integrated circuit (IC) A thin slice of silicon crystal containing microscopic circuit elements such as transistors, wires, capacitors, and resistors; also called chips and microchips. 27 Integration testing The testing of completed modules of an application to ensure that they operate together correctly. 584 Intellectual property A legal concept that refers to ownership of intangible information, such as ideas. 11 Internal information Information obtained by an organization from its own resources, such as from accounting or personnel systems. 559 Internet The worldwide communication infrastructure that links computer networks using TCP/IP protocol. 6 Internet backbone The major communications links that form the core of the Internet. 303 Internet service provider (ISP) A company that provides Internet access to businesses, organizations, and individuals. 303 Interpreter A program that converts high-level instructions in a computer program into machine language instructions, one instruction at a time. 30 iPhone OS X A streamlined version of the Mac OS X operating system, designed for the iPhone. 203 ISDN (Integrated Services Digital Network) A telephone company service that transports data digitally over dial-up or dedicated lines. 314 ISDN terminal adapter A device that connects a computer to a telephone jack and translates the data into a signal that can travel over an ISDN connection. 314 Iteration In the context of computer programming, a section of code that is repeated; also called a loop. 698 Iterative SDLC A series of phases that outlines the development process of an information system where each phase is allowed to repeat as needed in the development process. 566 Java A platform-independent, object-oriented, high-level programming language based on C++, typically used to produce interactive Web applications. 679 Java applet Small programs that add processing and interactive capabilities to Web pages. 372 JIT (Just In Time) A manufacturing system in which the parts needed to construct a product are received at the assembly site only as needed. 569 Job search agent An automated program that searches one or more databases and notifies you when it finds a lead on a specific job type. 521 JOIN An SQL command that temporarily joins data from more than one table in order to allow simultaneous access to both tables. 651 Intrusion In the context of computer security, the unauthorized access to a computer system. 340 Joining tables In SQL terminology, the act of creating a relationship between tables. 651 IP (Internet Protocol) One of the main protocols of TCP/IP; responsible for addressing packets so that they can be routed to their destinations; IPv4 offers 32-bit addresses whereas IPv6 offers 128-bit addresses. 305 Joint application design (JAD) A widely accepted design technique that is based on the idea that the best information systems are designed when end users and systems analysts work together on a project as equal partners. 567 IP address Unique identifying numbers assigned to each computer connected to the Internet. 255 Joystick An input device that looks like a small version of a car’s stick shift. Popular with gamers, moving the stick moves objects on the screen. 89 762 GLOSSARY JPEG (Joint Photographic Experts Group) A format that uses lossy compression to store bitmap images. JPEG (pronounced JAY-peg) files have a .jpg extension. 442 LAN party An assembly of computer users and their computers for the purpose of creating a temporary local area network for gaming. 280 Kernel The core module of an operating system that typically manages memory, processes, tasks, and storage devices. 192 Lands Non-pitted surface areas on a CD that represent digital data. (See also pits.) 81 Key frame Frames at intervals in a digital video clip that contain all data for that frame. The rest of the frames in the video contain only the information that is different from the preceding key frame. 458 Keylogger A program, sometimes part of a Trojan horse, that records a person’s keystrokes, saves them, and then sends them to a system administrator or remote hacker. 163 Keyword (1) A word or term used as the basis for a Web page search. (2) A command word provided by a programming language. 676 Keyword stuffing An unpopular practice of including a huge variety of keywords in the header of an HTML document in the hopes that a search engine will display it even when the content of the page is not relevant to the search. 378 Kilobit (Kbit or Kb) 1024 bits. 26 Kilobyte (KB) Approximately 1,000 bytes; exactly 1,024 bytes. 26 Knowledge base The collection of facts and rules obtained from experts that are incorporated into an expert system. 564 Knowledge engineering The process of designing rules, entering them into an expert system, and testing them. 564 Known information In a problem statement, information supplied to the computer to help it solve a problem. 680 Label In the context of spreadsheets, any text used to describe data. 130 LAN (Local Area Network) An interconnected group of computers and peripherals located within a relatively limited area, such as a building or campus. 247 LAN jacking Unauthorized access to a wireless network; also called war driving. 282 Laser printer A printer that uses laser-based technology, similar to that used by photocopiers, to produce text and graphics. 92 Latency The elapsed time it takes for a packet of data to arrive at its destination. 309 LCD (Liquid Crystal Display) Technology used for flat panel computer screens typically found on notebook computers. 90 Leading Also called line spacing, the vertical spacing between lines of text. 128 Leibniz Calculator A mechanical calculator capable of performing the four arithmetic functions that helped develop the technology for the first commercially successful calculator. 487 Level 1 cache (L1 cache) Cache memory built into a microprocessor chip. L1 cache typically can be read in one clock cycle. 68 Level 2 cache (L2 cache) Cache memory that is located in a chip separate from the microprocessor chip. 68 Line spacing Also called leading, the vertical spacing between lines of text. (See leading.) 128 Linear editing A video editing technique involving recording segments of video from one tape to another. 456 Link popularity A metric used by some search engines to rank the sites that are relevant to a query. 377 Linux An operating system that is a derivative of UNIX, available as freeware, and widely used for servers though it is also used on personal computers and workstations. 201 Linux distribution Usually a download that includes the Linux operating system, a Linux desktop, and other Linux utilities. 201 Linux platform A computer that is running the Linux operating system. 64 LISP (LISt Processor) A declarative programming language that excels at handling complex data structures, artificial intelligence projects, and very complex programs. 679 Local application Software designed to be installed on and run from a hard disk. 154 Logic error A run-time error in the logic or design of a computer program. 685 Logical data type A data type specifying that a field in a data file is used to store true/false or yes/no data. 634 Logical storage models Any visual or conceptual aid that helps a computer user visualize a file storage system. Also called a storage metaphor. 215 Lookup routine A validation process used by database designers to prevent data entry errors by searching for an entry such as a state abbreviation in a file or database table. 637 Loop The section of program code that is repeated because of a repetition control structure. 698 Lossless compression A compression technique that is able to reconstitute all of the data in the original file; hence “lossless” means that this compression technique does not lose data. 439 Lossy compression Any data compression technique in which some of the data is sacrificed to obtain more compression. 439 Low-level language A programming language that requires a programmer to write instructions for specific hardware elements such as the computer processor, registers, and RAM locations. 676 MAC address (Media Access Control) A unique identifier similar to a serial number assigned to networking equipment at time of manufacture. 254 Mac OS The operating system software designed for use on Apple Macintosh computers. 197 Mac platform A family or category of Macintosh-compatible personal computers designed and manufactured by Apple, Inc. 64 Machine code Program instructions written in binary code that the computer can execute directly. 30 763 GLOSSARY Machine language A low-level language written in binary code that the computer can execute directly. 30 Magnetic storage A technology for recording data onto disks or tape by magnetizing particles of an oxide-based surface coating. 78 Mail merge A feature of document production software that automates the process of producing customized documents, such as letters and advertising flyers. 129 Mail order A type of retailing in which a merchant takes orders by telephone or from an Internet site, then ships orders by mail or other courier service. 507 Mainframe computer A large, fast, and expensive computer generally used by businesses or government agencies to provide centralized storage, processing, and management for large amounts of data. 18 Maintenance phase The day-today operation of an information system, including making modifications and correcting problems to insure correct operation. 587 Manufacturer direct The selling of products by hardware manufacturers directly to consumers by means of a sales force or mail order. 507 Manufacturing technician A computer professional who participates in the fabrication of computer chips, systems, and devices. 512 Many-to-many relationship A relationship in which one record in a particular record type can be related to more than one record in another record type, and vice versa. 616 Mark-8 A microprocessor-based computer system developed by Jonathan A. Titus in 1974 that helped lead to the development of personal computers. 494 Market share A company’s share, or percentage, of the total market. 504 Market tiers Categories of computer companies based on size, longevity, and market share. 505 Megahertz (MHz) A measure of frequency equivalent to one million cycles per second. 67 Megapixel One million pixels; expresses the resolution and quality of an image; usually used in reference to digital cameras. 433 Memo data type A data type that specifies that a field in a data file can contain variable-length text comments (also called memo field). 634 Memory The computer circuitry that holds data waiting to be processed. 15 Memory leak An undesirable state in which an operating system does not correctly allocate memory for programs causing parts of one program to overwrite parts of others and malfunction. 187 Menu In the context of user interfaces, a list of commands or options often displayed as a list. 190 Marketing channels Marketing outlets such as retail stores or mail order for computer-related products. 506 Menu bar A standard component of most graphical user interfaces that is displayed as a strip of clickable options, that in turn display a list of commands. 190 Malicious software Any program or set of program instructions, such as a virus, worm, or Trojan horse, designed to surreptitiously enter a computer and disrupt its normal operations. 162 Markup language A language that provides text and graphics formatting through the use of tags. Examples of markup languages include HTML, XML, and SGML. 362 Mesh topology A network arranged in such a way that each device is connected to many other devices. Data traveling on a mesh network can take any of several possible paths. 250 Malware (malicious software) Programs such as viruses, worms, and bots designed to disrupt computer operations. 162 Mass-mailing worm A worm that sends itself to every e-mail address in the address book of an infected computer. 163 Message In the context of objectoriented programming, input that is collected and sent to an object. 706 MAN (Metropolitan Area Network) A public, high-speed network that can transmit voice and data within a range of 50 miles. 247 Master File Table An index file used in NTFS storage systems to maintain a list of clusters and keep track of their contents. 219 Message header The section of an e-mail file that contains address, subject, and file attachment information. 392 Management information system (MIS) A type of information system that manipulates the data collected by a transaction processing system to generate reports that managers can use to make business decisions. 561 Mathematical modeling software Software for visualizing and solving a wide range of math, science, and engineering problems. 133 Meta keyword A word that is included in the header of an HTML document in order to describe the document’s contents. 378 Mathematical operators Symbols such as + - / * that represent specific mathematical functions in a formula. 131 Metafile In the context of graphics, a file that contains both vector and bitmap data. 447 Managers People who make decisions about how an organization carries out its activities. 557 Manual calculator A device that helps solve mathematical calculations, but does not contain sophisticated built-in algorithms. 486 Mechanical calculator A machine capable of implementing algorithms used to solve mathematical calculations. 487 Megabit (Mb or Mbit) 1,048,576 bits. 26 Megabyte (MB) Approximately one million bytes; exactly 1,048,576 bytes. 26 Metasearch engine A search engine that searches other search engines. 380 Metasearch tool A program that performs broad-based Web searches, such as searching more than one job database at a time. 521 764 Method In the context of objectoriented programming, any action that an object can perform. 705 Microcontroller A special purpose microprocessor that is built into the device it controls. 20 Microprocessor An integrated circuit that contains the circuitry for processing data. It is a single-chip version of the central processing unit (CPU) found in all computers. 15 Microprocessor clock A timing signal that sets the pace for executing instructions in a microprocessor. 67 Microsoft Windows An operating system, developed by Microsoft Corporation, that provides a graphical interface. Versions include Windows 3.1, 95, 98, Me, NT, 2000, XP, and Vista. 194 Microwaves Electromagnetic waves with a frequency of at least 1 gigahertz; one type of channel for transmitting data over communications networks. 265 MIDI (Musical Instrument Digital Interface) A standardized way in which sound and music are encoded and transmitted between digital devices that play music. 426 MIDI sequence Digitally encoded MIDI music stored on a digital device, such as a computer or MIDI instrument. 426 MIDI sequencing software Software that uses a standardized way of transmitting encoded music or sounds for controlling musical devices, such as a keyboard or sound card. 139 MIME (Multi-purpose Internet Mail Extensions) A standard for formatting non-ASCII messages so that they can be sent over the Internet, typically as e-mail messages. 393 MIMO (Multiple Input Multiple Output) A wireless communications device that uses an array of antennas to transmit data over more than one channel. 268 Mission An organization’s goal or plan, which is reflected by the organization’s activities. 556 Mission statement The written expression of an organization’s goals and how those goals will be accomplished. 556 GLOSSARY MITS Altair The first commercial microcomputer. It was based on the Intel 8080 processor and sold primarily to computer hobbyists. 494 Mobile broadband Highbandwidth wireless technology that was developed for sending digital data over cell phone systems. 327 Mobile Internet access Any service that allows subscribers to access the Internet while on the go. 311 Mod In the context of personal computers, a customized or “modified” system unit typically jazzed up with lights, chrome, and decals. 65 Modem A device that modulates and demodulates a signal, typically used to send data from a computer to the Internet over telephone, cable television, or satellite networks. 304 Modified waterfall SDLC A series of phases that outlines the development process of an information system where each phase can overlap and be repeated as necessary in the development process. 566 Money management software Software used to track monetary transactions and investments. 133 Monochrome bitmap A bitmap image that contains only the colors black and white. 436 Mouse An input device that allows the user to manipulate objects on the screen by clicking, dragging, and dropping. 88 MP3 A file format that provides highly compressed audio files with very little loss of sound quality. 424 MPEG (Moving Picture Experts Group) A family of highly compressed container file formats and codecs for digital multimedia; MPEG-1, MPEG-2, and MPEG-4. 457 MRP (Manufacturing Resource Planning) A business management technique in which an optimum manufacturing plan is generated based on a wide variety of data. 569 MSRP (Manufacturer’s Suggested Retail Price) The suggested price of a product that is set by the manufacturers, usually higher than the street price. 503 Multi-core processor A microprocessor that contains circuitry for more than one processing unit. 69 Multiparadigm languages A programming language that supports more than one paradigm, such as object-oriented and procedural paradigms. 679 Multiple-user license Legal permission for more than one person to use a particular software package. 147 Multiprocessing The ability of a computer or operating system to support dual core processors or multiple processors. 186 Multitasking The ability of a computer, processor, or operating system to run more than one program, job, or task at the same time. 186 Multithreading A technology that allows multiple parts or threads from a program to run simultaneously. 186 Multiuser operating system An operating system that allows a single computer to deal with simultaneous processing requests from multiple users. 187 Nanosecond A unit of time representing one billionth of a second. 73 Napier’s Bones A manual calculator created by John Napier that could be used to perform mathematical calculations by manipulating numbered rods. 487 Narrowband A term that refers to communications channels that have low bandwidth. 251 Native file format A file format that is unique to a program or group of programs and has a unique file extension. 209 Native resolution The dimensions of the grid that holds LEDs in a flatscreen, LCD display device; the resolution at which an LCD offers the clearest display. 539 Natural language query A query formulated in human language, as opposed to an artificially constructed language such as machine language. 136 Netbook A scaled-down version of a standard clamshell-style notebook computer. Sometimes called a minilaptop. 59 765 GLOSSARY Netiquette (Internet etiquette) A set of guidelines for posting messages and e-mails in a civil, concise way. 396 Network access point (NAP) An Internet node that links together different network service providers so that data can be transferred from one service provider to the other. 303 Network address translation (NAT) A security technique that allows a LAN to use one type of IP address for intra-network data and another type of address for data traveling to and from the Internet. 344 Network attached storage (NAS) Storage devices that are designed to be attached directly to a network, rather than to a workstation or server. 248 Network database A collection of physically linked records in a one-to-many relationship in which a member (child) can have more than one owner (parent). 617 Network device Any device, such as a gateway, hub, or router, that is used to broadcast network data, boost signals, or route data to its destination. 248 Network hub A network device that connects several nodes of a local area network. 261 Network interface card Circuitry, often on an expansion card mounted inside a computer, that transmits and receives data on a local area network. Also called a NIC, network card, or network adapter. 248 Networked peripheral A peripheral device that contains circuitry that allows it to be directly connected to a network, rather than connecting to a computer that transfers data to a network. 248 Object database A database model that organizes data into classes of objects that can be manipulated by programmerdefined methods; also referred to as object-oriented database. 620 Neural network A type of expert system that uses computer circuitry to simulate the way in which the brain processes information, learns, and remembers. 565 Object-oriented methodology An approach to system development that regards the elements of a system as a collection of objects that interact with each other to accomplish tasks. 570 Node In a network, a connection point; in a hierarchical database, a segment or record type. 248 Non-executing zip file A type of compressed file that has to be unzipped manually to extract the file or files contained within it. 157 Non-volatile Any electronic component that does not require a constant supply of power to hold data. 84 Nonlinear editing A digital video editing technique that requires a personal computer and video editing software. 456 Nonprofit organization Organizations with political, social, or charitable goals that are not intended to generate a profit. 556 Normalization The process of analyzing data to create the most efficient database structure. 637 Notation software Software used to help musicians compose, edit, and print their compositions. 139 Notebook computer A small, lightweight, portable computer that usually runs on batteries. Sometimes called a laptop. 59 Network router A device found at each intersection on the Internet backbone that examines the IP address of incoming data, and forwards the data towards its destination. 261 NTFS (New Technology File System) A file system used by Microsoft Windows NT, 2000, Vista, and Windows 7 operating systems to keep track of the name and location of files on a hard disk. 219 Network service provider (NSP) A company that maintains a series of nationwide Internet links. 303 Numeric data Numbers that represent quantities and can be used in arithmetic operations. 23 Network specialist administrator A computer professional who plans, installs, and maintains one or more local area networks. 511 Object In an object database or OO programming language, a discrete piece of code describing a person, place, thing, event, or type of information. 702 Network switch A network device that sends data to a specific address instead of broadcasting it over an entire network. 261 Object code The low-level instructions that result from compiling source code. 30 Object-oriented paradigm An approach to programming that focuses on the manipulation of objects rather than on the generation of procedure-based code. 702 Object-relational database A database that uses object-oriented and relational concepts. 621 Octet One of four sections of an IP address. 255 ODBMS (Object Database Management System) Database management software used to construct an object-oriented database. 625 Offshoring The corporate practice of relocating production, manufacturing, or customer service to lower-cost overseas locations. 500 OLAP (Online Analytical Processing) A system that consists of computer hardware, database software, and analytical tools that are optimized for analyzing and manipulating data. 613 OLED Display technology that uses organic light emitting diodes imprinted on a thin, plastic backing. 90 OLTP system (Online Transaction Processing System) Interactive online transaction processing methods that use a “commit or rollback” strategy to ensure accurate transaction processing. 560 One-to-many relationship A relationship in which one record in a particular type may be related to more than one record of another record type. 616 One-to-one relationship An association between database entities in which one record type is related to one record of another type. 616 Online auction A consumer-toconsumer form of e-commerce in which merchandise and services are sold to the highest bidder. eBay is a popular example. 388 766 Online job bank An online database of job opening announcements that spans many industries or just one specific industry. 520 Online processing An interactive method of processing transactions in which each transaction is processed as it is entered. 560 Online shopping cart A feature of e-commerce sites that stores information about items selected for purchase often by creating a cookie on a shopper’s computer. 386 Online social networks Web sites that provide ways for people to communicate and socialize. MySpace is a popular example. 6 Op code Short for operation code; an assembly language command word that designates an operation, such as add (ADD), compare (CMP), or jump (JMP). 31 Open source An approach to developing and licensing software in which source code remains public so it can be improved and freely distributed. 12 Open source software Software that includes its source code, allowing programmers to modify and improve it. 150 Operand The part of an instruction that specifies the data, or the address of the data, on which the operation is to be performed. 31 Operating system The software that controls the computer’s use of its hardware resources, such as memory and disk storage space. Also called OS. 16, 184 Operational planning The scheduling and monitoring of workers and processes. 557 Optical storage A technology that records data as light and dark spots on a CD, DVD, or other optical media. 81 Organization A group of people working together to accomplish a goal. 556 Organizational chart A diagram showing the hierarchy of workers in an organization. 557 Output The results produced by a computer (for example, reports, graphs, and music). 15 GLOSSARY Outsourcing The corporate practice of using third-party contractors to supply raw goods, manufacturing, or services. 499 Parallel processing The simultaneous use of more than one processor to execute a program. 69 Overclocking Forcing a computer component, such as a microprocessor, to run at a higher speed than intended by the manufacturer. 70 Parameters A delimiting variable used to modify a command, e.g., /ON modifies the DIR command so it displays files in order by name. 647, 676 P2P file sharing A practice in which individuals can obtain music, video, and other types of files from other users on a network; sometimes the files are shared without authorization from the copyright holder. 337 Particle renderer Graphics software that generates special effects for explosions, flares, fog, and smoke. 687 Packet A small unit of data transmitted over a network. 253 Packet switching A technology used by data communications networks, such as the Internet, where a message is divided into smaller units called “packets” for transmission. 253 Packet writing The process of recording data to a CD or DVD in multiple sessions. Contrast with disk mastering. 219 Page layout The physical positions of elements on a document page such as headers, footers, page numbering, and graphics. 128 Paint software Software that creates and manipulates bitmap graphics. 137, 430 Palm OS A popular type of operating system produced by ACCESS specifically for handheld computers. 202 PAN (Personal Area Network) An interconnected group of personal digital devices located within a range of about 30 feet. 246 Paragraph alignment The horizontal position (left, right, justified, centered, for example) of the text in a document. 128 Paragraph style A specification for the format of a paragraph, which includes the alignment of text within the margins and line spacing. 128 Parallel conversion A type of system conversion in which the old computer system remains in service while some or all of the new system is activated. 586 Pascal A high-level, procedural programming language developed to help computer programming students learn the structured approach to programming. 679 Pascaline An early mechanical calculator capable of performing addition, subtraction, division, and multiplication. 487 Password A special set of symbols used to restrict access to a user’s computer or network. 35 Password manager Software that keeps track of sites at which a user has registered and the password that corresponds to each site. 40 Path A file’s location specified by the drive on which it is stored and the hierarchy of folders in which it is stored. (See file specification.) 206 Pathfinder algorithms Program code used to control the routes characters take as they move through the virtual world of a computer game. 687 Payroll software A type of horizontal market software used to maintain payroll records. 142 PC platform A family of personal computers that use Windows software and contain Intel-compatible microprocessors. 64 PC slot (Personal Computer Memory Card International Association or PCMCIA slot) An external expansion slot typically found on notebook computers. 96 PCX The PC Paintbrush file format that incorporates a compression algorithm. 442 PDA (Personal Digital Assistant) A shirt-pocket sized computer originally designed to keep track of appointments (also called a palmtop). 19 767 GLOSSARY PDA video Digital video formatted for viewing on a PDA or other handheld device. 452 Peer-to-peer mode A method of using a network in which workstations act as both file servers and clients. 249 Peripheral device A component or equipment, such as a printer, that expands a computer’s input, output, or storage capabilities. 56 Person-to-person payment A method of e-commerce payment that uses an intermediary or third party such as PayPal to handle payment between a buyer and seller. 390 Personal computer A microcomputer designed for use by an individual user for applications such as Web browsing and word processing. 17 Personal finance software Software geared toward individual finances that helps track bank account balances, credit card payments, investments, and bills. 133 PERT (Program Evaluation and Review Technique) A technique for project management by displaying interconnected events and task milestones on a timeline. 570 PGP (Pretty Good Privacy) A popular program used to encrypt and decrypt files and e-mail messages. 287 Piconet A network formed by Bluetooth devices. 267 PIECES framework A concept developed by James Wetherbe to help identify problems in an information system. Each letter of PIECES stands for a potential problem (Performance, Information, Economics, Control, Efficiency, and Service). 569 Pilot conversion A type of system conversion in which a new information system is first activated at one branch of a multi-branch company. 586 Ping (Packet INternet Grouper) A command on a TCP/IP network that sends a test packet to a specified IP address and waits for a reply. 310 Pipelining A technology that allows a processor to begin executing an instruction before completing the previous instruction. 69 Pits Spots on a CD that are “burned” onto an optical storage medium to represent digital data. 81 Pixel interpolation A process that is used by graphics software to average the color of adjacent pixels in an image, usually when the image is enlarged. 435 Pharming An exploit that redirects users to fake Web sites. 405 Pixelated Describes the effect of increasing the size and thus decreasing the quality of an image. 435 Phased conversion A type of information system conversion in which one module of a new information system is activated at a time. 586 Pixels Short for picture element; is the smallest unit in a graphic image. Computer display devices use a matrix of pixels to display text and graphics. 90 Phishing An e-mail based scam that’s designed to fool users into revealing confidential information. 405 PL 1 (Programming Language 1) A business and scientific programming language developed by IBM in 1964. 679 Phoneme A unit of sound that is a basic component of words and is produced by speech synthesizers. 428 Place shifting The practice of accessing media from a remote location, such as over a network. 465 Photo editing software The software used to edit, enhance, retouch, and manipulate digital photographs. 137 Plaintext An original, un-encrypted message. 285 Physical storage model A representation of data as it is physically stored. 218 Physical topology The actual layout of network devices, wires, and cables. 250 Planning phase The first phase of an information system development project with the goal of creating a Project Development Plan. 567 Plug and play The ability of a computer to automatically recognize and adjust the system configuration for a newly added device. 97 Plug-in A software module that adds a specific feature to a system. In the context of browsers, a plug-in adds the ability to play files referenced from the EMBED tag. 367 PNG (Portable Network Graphics) A type of graphics file format similar to but newer than GIF or JPEG. 443 Podcast An audio file that is distributed over the Internet through downloads or the use of an RSS feed or Atom. 360 Point size A unit of measure (1/72 of an inch) used to specify the height of characters in a font. 127 Pointing device An input device, such as a mouse, trackball, pointing stick, or trackpad, that allows users to manipulate an on-screen pointer and other screen-based graphical controls. 88 Pointing stick A mouse-substitute input device that looks like the tip of an eraser embedded in the keyboard of a notebook computer. 89 Polymorphism In the context of object-oriented programming, the ability to redefine a method for a subclass. Also called overloading. 707 POP (Post Office Protocol) A standard for retrieving e-mail messages from an e-mail server. 397 POP server A computer that receives and stores e-mail data until retrieved by the e-mail account holder. 398 Pop-up ad A type of advertisement that usually appears in a separate window when you enter a Web site. 385 Port In the context of computer networks, a virtual device that sets up one or more connections over which data can flow. 308 Port probe An exploit used by hackers to locate computer ports that can be used for surreptitious access. 341 Portable audio player A digital device designed to store and play digital music; also called MP3 player. 425 768 Portable computer Any type of computer, such as a notebook computer, that runs on batteries and is designed to be carried from one location to another. 59 Portable Internet access Any type of Internet service, such as portable satellite, that can be moved from one place to another. 311 Portable media player A small, lightweight, battery-powered device designed to store and play audio, video, or image files stored in such formats as MP3 and AAC. 20 Portable software Software designed to be stored on a flash drive or CD, and that does not require installation before it is used. 158 PostScript A printer language, developed by Adobe Systems, which uses a special set of commands to control page layout, fonts, and graphics. 94 Power surge A spike in electrical voltage that has the potential to damage electronic equipment such as computers. 99 Powerline network A network that uses a building’s existing powerline cables to connect nodes; also called HomePlug, HPLC, or HomePLC. 258 Predicate In a Prolog fact, such as likes(John, Mary), the predicate “likes” describes the relationship between the arguments in parentheses, such as (John, Mary). 714 Predictive analytics A branch of data mining that focuses on predicting future probabilities and trends using statistical algorithms, neural networks, and optimization research. 613 Predictive methodology The traditional approach to software development in which detailed specifications are created before coding begins. 681 Presentation software Software that provides tools to combine text, graphics, graphs, animation, and sound into a series of electronic “slides” that can be output on a projector, or as overhead transparencies, paper copies, or 35-millimeter slides. 138 GLOSSARY Primary key A field in a database that contains data, such as a Social Security number, that is unique to a record. 634 Print server A device that controls a cluster of printers by distributing jobs that arrive in its print queue— a list of documents that require printing. 249 Printer Control Language (PCL) A standard for formatting codes embedded within a document that specify how a printer should format each page. 94 Private attribute An attribute for an object, class, or record that can be accessed only from the program routine in which it is defined. 703 Private IP address An IP address that cannot be routed over the Internet. 344 Problem statement In software engineering, a concise summary of elements that must be manipulated in order to achieve a result or goal. 680 Procedural language Any programming language used to create programs composed of a series of statements that tell the computer how to perform a specific task. 689 Procedural paradigm An approach to programming in which a programmer defines the steps for solving a problem. 689 Procedure In the context of computer programming, a section of code that performs activities but is not included in the main sequential execution path of a program. 696 Procedure handbook Step-bystep instructions for performing a specific job or task. 585 Process A systematic series of actions that a computer performs to manipulate data; typically represented on a DFD by a rounded rectangle. 572 Processing The manipulation of data by a computer’s microprocessor or central processing unit. 15 Product activation The process of becoming a registered user of a software product; the process might include entering a validation code to unlock the software. 157 Productivity software Software that helps people work more efficiently; traditionally word processing, spreadsheet, presentation, e-mail, and database software. 121 Professional ethics On-the-job actions and choices that reflect a person’s values. 523 Program editor A programming tool, similar to a word processor, but that provides specialized editing and formatting features to streamline the programming process. 682 Programming language A set of keywords and grammar (syntax) that allows a programmer to write instructions that a computer can execute. 29, 676 Programming paradigm A programming methodology or approach, as in the object-oriented paradigm. 679 Project Development Plan A planning document that is the final result of a planning phase and is reviewed and approved by management. 567 Project management software Software specifically designed as a tool for planning, scheduling, and tracking projects and their costs. 142, 571 Prolog A declarative programming language used to develop expert systems modeled after human thinking. 679 Properties The characteristics of an object in a program. 683 Proprietary information Financial and product data, procedures, or concepts created by an individual or organization that are not made public because they would aid the competition. 526 Proprietary software Software that carries restrictions on its use that are delineated by copyright, patents, or license agreements. 149 Protocol suite A group of protocols, such as TCP and IP, that work together. 305 Prototype An experimental or trial version of a device or system. 489 Pseudocode A notational system for algorithms that combines English and a programming language. 692 769 GLOSSARY PSK (Pre-shared key) A variation of WPA encryption protocol for wireless networks in which the encryption key used by the router is the same for all client computers that connect to the network. 283 Public attribute An attribute for an object, class, or record that can be accessed from any routine in a program. 703 Public domain software Software that is available for public use without restriction except that it cannot be copyrighted. 149 Public key encryption (PKE) An encryption method that uses a pair of keys, a public key (known to everyone) that encrypts the message, and a private key (known only to the recipient) that decrypts it. 286 Quality assurance specialist A computer professional who participates in alpha and beta test cycles of software. Also refers to a person who examines and tests computer chips and devices. 512 Quality of service (QoS) The level of performance that is provided by a computer system and measured by factors such as response time, downtime, and capacity. 587 Quality-of-service metric A technique for measuring a particular quality-of-service characteristic, such as response time. 587 QuickTime Movie A video and animation file format developed by Apple, Inc. that can also be run on PCs. QuickTime files have a .mov extension. 457 RAM (Random Access Memory) Computer memory circuitry that holds data, program instructions, and the operating system while the computer is on. 71 Random access The ability of a storage device (such as a disk drive) to go directly to a specific storage location without having to search sequentially from a beginning location. 77 Rasterization The process of superimposing a grid over a vector image and determining the color depth for each pixel. 447 RAW In the context of digital graphics, a file that contains unprocessed image data directly from a digital camera’s sensors. 442 Ray tracing A technique by which light and shadows are added to a 3-D image. 449 RCA Spectra 70 An early thirdgeneration computer that was among the first to use integrated circuits for data processing. 493 RDBMS (Relational Database Management System) Database management software used to create, update, and administer a relational database. 625 REALbasic A modern OO version of the BASIC programming language that works cross platform on Windows, Macs, and Linux. 679 RealMedia A video file format developed by RealNetworks that is popular for streaming Web videos. 457 Record In the context of database management, the fields of data that pertain to a single entity in a database. 134, 615 Record occurrence A record that has been filled with data for a particular entity. 615 Record type The structure of a record, including the names, length, and data types for each field. 615 Recordable technology The devices and standards that allow computers to write data permanently on CDs and DVDs, but does not allow that data to be changed once it has been recorded. 82 Recovery disk A CD that contains all the operating system files and application software files necessary to restore a computer to its original state. 229 Reference software Software that contains a large database of information with tools for sorting, viewing, and accessing specific topics. 141 Read-only technology Storage media that can only be read from, but not recorded on. 82 Region code A signal added to commercial DVDs that limits playback to devices that have a corresponding region code. 468 Query A search specification that prompts the computer to look for particular records in a file. 136 Read-write head The mechanism in a disk drive that magnetizes particles on the storage disk surface to write data, or senses the bits that are present to read data. 78 Registers A sort of “scratch pad” area of the microprocessor into which data or instructions are moved so that they can be processed. 31 Query by example (QBE) A type of database interface in which the user fills in a field with an example of the type of information that he or she is seeking. 136 Readability formula A feature found in some word processing software that can estimate the reading level of a written document. 127 Relational database A database structure that incorporates the use of tables that can establish relationships with other, similar tables. 618 Query language A set of command words that can be used to direct the computer to create databases, locate information, sort records, and change the data in those records. 136 Real data type A numeric data type used for fields that contain numbers with decimal places. 634 Relationship In the context of databases, an association between entities that can be used to link records in more than one file. 616 Quarantined file A file suspected to be infected with a virus that antivirus software moves to a special folder to prevent accidental access to it. 169 Query processor The component of a search engine that examines keywords entered by users and fetches results that match the query. 377 Real-time messaging system Technologies, such as instant messaging and chat, that allow people to exchange messages when they are online. 330 RealAudio An audio file format developed by RealNetworks especially for streaming audio data over the Web. 424 Relative reference In a worksheet, a cell reference that can change if cells change position as a result of a move or copy operation. 132 Remarks Explanatory comments inserted into lines of code in a computer program. 686 770 Remote Access Trojan (RAT) A type of Trojan horse malware that allows remote hackers to transmit files to victims’ computers. 163 Rendering In graphics software, the process of creating a 3-D solid image by covering a wireframe drawing and applying computergenerated highlights and shadows. 449 Repetition control structure A component of a computer program that repeats one or more instructions until a certain condition is met (also called loop or iteration). 698 Repetitive stress injury An injury that occurs from overuse over a period of time. 536 Report generator The component of a data management environment that provides a user with the ability to design reports. 642 Report template A predesigned pattern that provides the outline or general specifications for a report. 642 Request for proposal (RFP) A document sent by an organization to vendors to solicit proposals; it specifies the problem that needs to be solved and the requirements that must be met. 580 Request for quotation (RFQ) A document sent by an organization to vendors requesting a formal price quotation on a list of hardware and/or software. 580 Reserved words Special words used as commands in some operating systems that may not be used in file names. 205 Resolution The density of the grid used to display or print text and graphics; the greater the horizontal and vertical density, the higher the resolution. 91 Resolution dependent Graphics, such as bitmaps, in which the quality of the image is dependent on the number of pixels comprising the image. 435 Resource A component, either hardware or software, that is available for use by a computer’s processor. 185 Resource fork A storage characteristic of Mac OS that creates a file containing a description of the data stored in an accompanying raw data file. 200 GLOSSARY Response rate In relation to display technology, response rate is the time it takes for one pixel to change from black and white then back to black. 90 Restore point Data stored about the state of files and the operating system at a given point in time, then used to roll back the computer system to that state. 230 Rewritable technology The devices and standards that allow users to write data on a storage medium and then change that data. 82 RF signals (Radio Frequency signals) Data that is broadcast and received via radio waves with a transceiver. 265 Ribbon An element of the user interface popularized by Microsoft Office 2007 that presents users with multiple tabs instead of menus at the top of the application window. 190 Ring topology A network in which all devices are connected in a circle with each device having exactly two neighbors. 250 RISC (Reduced Instruction Set Computer) A microprocessor designed for rapid and efficient processing of a small set of simple instructions. 69 RJ45 connector A square plastic cable connector that resembles an oversized telephone connector, and is used to connect Ethernet devices. 262 ROM (Read-Only Memory) Refers to one or more integrated circuits that contain permanent instructions that the computer uses during the boot process. 73 ROM BIOS A small set of basic input/output system instructions stored in ROM. 73 Root directory The main directory of a disk. 206 Rootkit Software that conceals running processes; used by hackers to disguise security breaches and break-ins. 165 RSS (Really Simple Syndication) Delivers files called “feeds” from Web sites to subscribers. 360 Rule In the context of Prolog programming, a general statement about the relationship between facts. 713 Run-length encoding A graphics file compression technique that looks for patterns of bytes and replaces them with messages that describe the patterns. 439 Runtime error An error that occurs when a computer program is run. 685 S-HTTP (Secure HTTP) A method of encrypting data transmitted between a computer and a Web server by encrypting individual packets of data as they are transmitted. 389 Safe Mode A menu option that appears when Windows is unable to complete the boot sequence. By entering Safe Mode, a user can gracefully shut down the computer, then try to reboot it. 105 Sampling rate The number of times per second a sound is measured during the recording process. 423 Satellite Internet service A highspeed Internet service that uses a geosynchronous or low-earth orbit satellite to send data directly to satellite dishes owned by individuals. 318 Satellite modem A device that connects a computer to a satellite for purposes of accessing the Internet. 319 Scanner A device that converts a printed image into a bitmap graphic. 431 Scheduled reports Reports such as monthly sales summaries that follow a fixed format and are produced according to a preset time table. 561 Scheme A dialect of LISP, used for computer research and teaching. 679 Routable IP address A network address that can be routed over the Internet; contrast to private IP address. 344 Schickard’s Calculator An early mechanical calculator consisting of a series of gears and spokes representing numerical values. 487 RPG (Report Program Generator) A programming language used to generate business reports. 679 Scratch A simple, visual programming language based on Smalltalk/ Squeak and used to teach programming. 679 771 GLOSSARY SDK (Software Development Kit) A collection of language-specific programming tools. 686 SDLC (System Development Life Cycle) The series of phases that outlines the development process of an information system. 566 Search and Replace A feature of document production software that allows the user to automatically locate all instances of a particular word or phrase and substitute another word or phrase. 127 Search engine indexer The component of a search engine that reviews the Web pages brought back by a crawler and creates pointers to them so that they can be quickly accessed. 376 Search terms The words entered into a search engine or database to form a query. 378 Second-generation computers Computers that use transistors for data processing and storage instead of vacuum tubes. 492 Second-generation languages Assembly languages that followed machine languages. 677 Sectors Subdivisions of the tracks on a storage medium that provide storage areas for data. 218 Secure connection An Internet connection that encrypts data transmitted between your computer and a Web site. 389 Security software Any software package that is designed to protect computers from destructive software and unauthorized intrusions. 162 Security specialist A computer professional who analyzes security threats, implements solutions, and develops policies and procedures to protect computer equipment and data. 511 Security suite A software suite containing modules to protect computers against viruses, worms, intrusions, spyware, and other threats. 166 SELECT An SQL keyword that queries for a particular record or group of records from a table. 648 Selection control structure A component of a computer program that tells a computer what to do, depending on whether a condition is true or false (also called decision structure or branch). 697 Self-executing zip file A type of compressed file that can be run to unzip the file or files contained within it. 157 Server-side script Scripting statements that are executed by a Web server in response to client data. 372 Self-installing executable file A program that automatically unzips and then initiates its setup program. 157 Service companies Companies that provide computer-related services such as consulting or support. 498 Semi-structured problem A problem for which a general procedure has been established, but which requires some degree of discretionary judgment to arrive at a solution. 558 Service pack A collection of patches designed to correct bugs and/or add features to an existing software program. 159 Semiconducting materials (Semiconductors) Substances, such as silicon or germanium, that can act either as a conductor or an insulator. Used in the manufacture of computer chips. 27 Sequence control structure A programming construct that alters the order in which instructions are executed. 695 Sequence diagram A tool used by a project team that depicts the detailed interactions that take place within an information system. 574 Sequential access A characteristic of data storage, usually on computer tape, that requires a device to read or write data one record after another, starting at the beginning of the medium. 77 Sequential execution The computer execution of program instructions performed in the sequence established by a programmer. 695 Serial processing Processing of data one instruction at a time, completing one instruction before beginning another. 69 Setup program A program module supplied with a software package for the purpose of installing the software. 154 Shared resources On a network, resources such as hardware, software, and data made available for authorized users to share. 274 Shareware Copyrighted software marketed under a license that allows users to use the software for a trial period and then send in a registration fee if they wish to continue to use it. 149 Shrink-wrap license A legal agreement printed on computer software packaging, which becomes binding when the package is opened. 147 Signal scrambling A technique that encrypts or otherwise disrupts broadcast signals so that they have to be unscrambled before they are sensible. 465 Signed code Program code that has an associated digital certificate identifying the programmer; used to reduce susceptibility to malware. 727 SIMULA (SIMUlation LAnguage) Believed to be the first object-oriented programming language. 679 Server A computer or software on a network that supplies the network with data and storage. 18 Single-user license Legal permission for one person to use a particular software package. 147 Server operating system A type of operating system, sometimes called a network operating system, that provides management tools for distributed networks, e-mail servers, and Web hosting sites. 187 Single-user operating system A type of operating system that is designed for one user at a time using one set of input devices. 187 Server-side program A program or scripting statement that resides on a Web server and acts as an intermediary between a user’s browser and a DBMS. 628 Site license Legal permission for software to be used on any and all computers at a specific location (for example, within a corporate building or on a university campus). 147 772 Slide rule A manual calculator invented by William Oughtred that uses John Napier’s logarithms to perform complex engineering and scientific calculations. 487 Smalltalk A classic object-oriented programming language. 679 Smart phone A handheld device that integrates the functions of a mobile phone, PDA, portable music player, or other digital device. 20 Smileys Text-based symbols used to express emotion. 396 SMTP server (Simple Mail Transfer Protocol server) A computer used to send e-mail across a network or the Internet. 398 Sniffing In the context of computer hacking, a technique that uses packet sniffer software to capture packets as they are sent over a network. 37 GLOSSARY Solid state drive Data storage device that utilizes erasable, rewritable circuitry. 84 Solid state storage A technology that records data and stores it in a microscopic grid of cells on a non-volatile, erasable, low-power chip. 84 Sort key A field used to arrange records in order. 639 Sort order In a database table, the order in which records are stored on disk. 639 Sound card A circuit board that gives the computer the ability to accept audio input from a microphone, play sound files, and produce audio output through speakers or headphones. 423 Source code Computer instructions written in a high-level language. 29 Socket A communication path between two remote programs. 364 Spam Unsolicited e-mail typically sent as a bulk or mass-mailing and often used for fraudulent or deceptive marketing. 403 Software The instructions that direct a computer to perform a task, interact with a user, or process data. 15 Spam filter Software that identifies unsolicited and unwanted e-mail messages and blocks them from the recipient’s Inbox. 404 Software customization The process of modifying a commercially available software application to meet the needs of a specific user or organization. 583 Speech recognition The process by which computers recognize voice patterns and words, then convert them to digital data. 428 Software engineering The process of developing software using systematic mathematical, engineering, and management techniques. 515 Software installation The process by which programs and data are copied to the hard disk of a computer system and otherwise prepared for access and use. 153 Software license A legal contract that defines the ways in which a user may use a computer program. 147 Software patch A section of software code designed to modify an existing program to fix a specific error or add a feature. 159 Software publishers Companies that produce computer software. 498 Software suite A collection of individual applications sold as one package. 144 Speech synthesis The process by which computers produce sound that resembles spoken words. 428 Spelling checker A feature of document production software that checks each word in a document against an electronic dictionary of correctly spelled words, then presents a list of alternatives for possible misspellings. 126 Spelling dictionary A data module that is used by a spelling checker as a list of correctly spelled words. 126 Spreadsheet A numerical model or representation of a real situation, presented in the form of a table. 130 Spreadsheet software Software for creating electronic worksheets that hold data in cells and perform calculations based on that data. 130 Spyware Any software that covertly gathers user information without the user’s knowledge, usually for advertising purposes. 164 SQL A popular query language used by mainframes and microcomputers. 645 SQL keywords A collection of command words that issue instructions to an SQL database. 646 SQL query A command created using SQL database client software that operates directly on the record in a database. 645 SSID (Service Set IDentifier) A code that identifies a wireless network and is attached to every packet that travels on that network. 272 SSL (Secure Sockets Layer) A security protocol that uses encryption to establish a secure connection between a computer and a Web server. 389 Star topology A network configured with a central connection point or hub for all workstations and peripherals. 250 Stateless protocol A protocol, such as HTTP, that allows one request and response per session. 365 Static IP address A permanently assigned and unique IP address, used by hosts or servers. 306 Static Web publishing A simple way to display the data in a database by converting a database report into an HTML document. 627 Statistical software Software for analyzing large sets of data to discover patterns and relationships within them. 133 Storage The area in a computer where data is retained on a permanent basis. 15 Storage density The closeness of the particles on a disk surface. As density increases, the particles are packed more tightly together and are usually smaller. 77 Storage device A mechanical apparatus that records data to and retrieves data from a storage medium. 76 773 GLOSSARY Storage medium The physical material used to store computer data, such as a floppy disk, a hard disk, or a CD-ROM. 76 Subclass In object-oriented programming, a subclass is derived from a superclass and inherits its attributes and methods. 704 Store-and-forward A technology used by communications networks in which an e-mail message is temporarily held in storage on a server until it is requested by a client computer. 397 Subdirectory A directory found under the root directory. 206 Stored program A set of instructions that resides on a storage device, such as a hard drive, and can be loaded into computer memory and executed. 16 Subroutine A section of code that performs activities or manipulates data but is not included in the main sequential execution path of a program. 696 Strategic planning The process of developing long-range goals and plans for an organization. 557 Success factors System requirements that also serve as an evaluation checklist at the end of a development project. 571 Streaming audio An audio file format that allows the audio clip to begin before the file is entirely downloaded. 425 Streaming video An Internet video technology that sends a small segment of a video file to a user’s computer and begins to play it while the next segment is being sent. 459 Street price The average discounted price of a product. 503 Strong encryption Encryption that is difficult to decrypt or “break” without the encryption key. 285 Structured English Vocabulary and syntax used by systems analysts to concisely and unambiguously explain the logic of a process. It is limited to words defined in a data dictionary and to specific logical terms such as IF... THEN. 692 Structured file A file that consists of a collection of data organized as a set of similarly structured records. 614 Structured methodology A method of developing an information system that focuses on the processes that take place within the information system. 570 Structured problem A problem for which there exists a well-established procedure for obtaining the best solution. 558 Style A feature in many desktop publishing and word processing programs that allows the user to apply numerous format settings with a single command. 128 Submenu A user interface element that emerges after a menu is selected to offer additional options. 191 Summary report A report generated by a management information system that combines or groups data and usually provides totals, such as a report of total annual sales for the past five years. 561 Super distribution A concept incorporated into Microsoft DRM that allows users to share protected media with others who can access it after they obtain their own license for it. 471 Superclass In object-oriented programming, a superclass can provide attributes and methods for subclasses. 704 Supercomputer The fastest and most expensive type of computer, capable of processing trillions of instructions per second. 18 Surge strip A device that filters out electrical spikes that could damage computer equipment. 100 SVG (Scalable Vector Graphics) A graphics format designed specifically for Web display that automatically re-sizes when displayed on different screens. 448 SVGA (Super Video Graphics Array) Typically refers to 800 x 600 resolution. 91 SXGA (Super eXtended Graphics Array) A screen resolution of 1280 x 1024. 91 Symbian OS An operating system typically used on mobile phones and open to programming by thirdparty developers. 202 Symmetric Internet connection Any connection to the Internet in which the upstream speed is the same as the downstream speed. 311 Symmetric key encryption An encryption key that is used for both encryption and decryption of messages. 286 Syntax In the context of programming languages, refers to the grammar rules that create valid program statements. 676 Syntax error An error that results when an instruction does not follow the syntax rules, or grammar, of the programming language. 685 Synthesized sound Artificially created sound, usually found in MIDI music or synthesized speech. 426 System board The main circuit board in a computer that houses chips and other electronic components. 28 System conversion The process of deactivating an old information system and activating a new one. 586 System development life cycle (SDLC) The series of phases that outlines the development process of an information system. 566 System documentation Descriptions of the features, hardware architecture, and programming of an information system written for programmers, designers, and analysts who maintain the system. 585 System operator The person responsible for the day-to-day operation of a computer—usually a mainframe or supercomputer. 588 System palette A selection of colors that are used by an operating system to display graphic elements. 438 System requirements The criteria for developing a successful information system; compiled into a System Requirements Report at the conclusion of the analysis phase. 145, 571 System Requirements Report A report generated at the conclusion of the analysis phase by a project team that has studied a system and determined the system requirements. 572 774 System software Computer programs, such as an operating system or utility software, that help the computer carry out essential operating tasks. 16 System testing The process of testing an information system to ensure that all the hardware and software components work together. 584 System unit The case or box that contains the computer’s power supply, storage devices, main circuit board, processor, and memory. 57 GLOSSARY TCP IP (Transmission Control Protocol/Internet Protocol) The primary protocol suite for transmitting messages over the Internet. 305 TIFF (Tag Image File Format) A bitmap image file format with a .tif extension that automatically compresses the file data. 442 Technical support specialist A computer professional who provides phone or online help to customers of computer companies and software publishers. 511 Time shifting The practice of recording digital content for later playback. 465 Technical writer A person who specializes in writing explanations of technical concepts and procedures. 512 Systems analysis and design The process of planning and building an information system. 566 Telecommuting The act of using available technologies, such as computers, telephones, and the Internet, to work from home or another off-site location. 513 Systems analyst A computer professional responsible for analyzing requirements, designing information systems, and supervising the implementation of new information systems. 510 Temporal compression A data compression scheme that, when applied to video or audio data, eliminates unnecessary data between video frames or audio samples. 458 Systems programmer The person responsible for installing, modifying, and troubleshooting the operating system of a mainframe or supercomputer. 588 Test area A portion of a computer system where software testing can occur without disrupting an organization’s regular information system. 584 Table (1) An arrangement of data in a grid of rows and columns. (2) In a relational database, a collection of record types with their data. 129, 618 Text data type A data type used for fixed-length fields that hold character data such as people’s names or CD titles. 634 Tablet computer A small, portable computer with a touch-sensitive screen that can be used as a writing or drawing pad. 59 Tactical planning Short- or nearterm decisions and goals that deploy the human, financial, and natural resources necessary to meet strategic goals. 557 Taskbar A graphical user interface element usually displayed near the bottom of the screen to help users launch and monitor applications. 190 Tax preparation software Personal finance software that is specifically designed to assist with tax preparation. 133 TCP (Transmission Control Protocol) The protocol within TCP/ IP that is responsible for establishing a data connection between two hosts and breaking data into packets. 305 Text-to-speech software Software that generates speech based on written text that is played back through a computer’s sound card. 428 Thesaurus A feature of documentation software that provides synonyms. 127 Third-generation computers Computers characterized by using integrated circuits instead of transistors or vacuum tubes for data processing. 493 Third-generation languages Programming languages, such as Fortran, BASIC, and COBOL, that followed assembly languages and provided English-like keywords. 677 Threat modeling A component of defensive programming that helps programmers identify ways in which their programs might be compromised. 725 TLS (Transport Layer Security) An update of the Secure Sockets Layer (SSL) protocol for encrypting data before it is transmitted over a network. 389 Toolbar A component of graphical user interfaces that displays icons representing tools, commands, and other options. 190 Top-level domain A major domain category into which groups of computers on the Internet are divided, such as com, edu, gov, int, mil, net, and org. 307 Touch screen A display device that accepts input from being touched with a stylus or fingertip. 89 TQM (Total Quality Management) The process by which an organization analyzes and implements ways to improve the quality of its products and/or services. 569 Traceroute A network utility that records a packet’s path, the number of hops, and the time it takes for the packet to make each hop. 310 Tracing software Software that locates the edges of objects in a bitmap graphic and converts the resulting shape into a vector graphic. 447 Trackball An input device that looks like an upside down mouse. The user rolls the ball to move the on-screen pointer. 89 Trackpad A touch-sensitive surface on which you slide your fingers to move the on-screen pointer. 89 Tracks A series of concentric or spiral storage areas created on a storage medium during the formatting process. 218 Transaction An exchange between two parties that can be recorded and stored in a computer system. 559 775 GLOSSARY Transaction processing system (TPS) A system that keeps track of transactions for an organization by providing ways to collect, display, modify, and cancel transactions. 559 Unstructured problem A problem for which there is no established procedure for arriving at a solution. 558 Transceiver A combination of a transmitter and a receiver used to send and receive data in the form of radio frequencies. 265 UPDATE An SQL keyword used to alter the values in a database record. 650 Transistors A computer processing technology created by Bell Laboratories in 1947, characterizing second-generation computers, which replaced vacuum tubes for data processing. 492 Unzipped Refers to files that have been uncompressed. 156 UPS (Uninterruptible Power Supply) A battery-backed device designed to provide power to a computer during blackouts, brownouts, or other electrical disruptions. 100 UXGA (Ultra eXtended Graphics Array) A screen resolution of 1600 x 1200. 91 Vacuum tube An electronic device that controls the flow of electrons in a vacuum and represents binary data; used in the construction of first generation computers. 491 Value A number used in a calculation. 130 Vaporware Software or other products that are announced, but never produced. 503 URL (Uniform Resource Locator) The address of a Web page. 361 VAR (Value-Added Reseller) A company that combines one product with additional hardware, software, and/or services to create a system designed to meet the needs of specific customers or industries. 508 USB (Universal Serial Bus) A highspeed bus commonly used for connecting peripheral devices to computers. 96 Variable A named storage location that is capable of holding data, which can be modified during program execution. 680 True Color bitmap A color image with a color depth of 24 bits or 32 bits. Each pixel in a True Color image can be displayed using any of 16.7 million different colors. 437 USB flash drive A portable solid state storage device nicknamed “pen drive” or “keychain drive” that plugs directly into a computer’s USB port. 84 Variable-length field A field in a data file that can expand to accept any number of characters up to a maximum limit. 615 Turnkey system A complete information system that consists of both hardware and commercial software. 578 USB hub A device that provides several auxiliary USB ports. 96 UML (Unified Modeling Language) A tool for diagramming a set of object classes. 573 Use case diagram Documentation of the users of an information system and their functions. 573 Unicode A 16-bit character-representation code that can represent more than 65,000 characters. 25 User documentation Descriptions of how to interact with an information system or program, including instructions on use, features, and troubleshooting. 585 Tree topology Multiple star networks connected into a bus configuration by a backbone. 250 Trojan horse A computer program that appears to perform one function while actually doing something else, such as inserting a virus into a computer system or stealing a password. 163 Uninstall routine A program that removes software files, references, and registry entries from a computer’s hard disk. 160 Unit testing The process of testing a completed application module to make sure that it operates reliably and correctly. 584 UNIVAC The first commercially successful digital computer. 491 UNIX A multi-user, multitasking server operating system developed by AT&T Bell Laboratories in 1969. 201 Unstructured file A file that contains data, but that is not in a structured format of fields and records. 614 Upstream speed The rate at which data is transmitted from your home computer to the Internet. 311 Use case Tasks performed by an actor in an information system. 573 User ID A combination of letters and numbers that serves as a user’s “call sign” or identification. Also referred to as a user name. 34 User interface The software and hardware that enable people to interact with computers. 189 User privileges A set of assigned rights that specify what data is accessible to a particular user on a network or on a database. 655 Utility software A type of system software provided by the operating system or third-party vendors that specializes in tasks such as system maintenance, security, or file management. 122 VDE (Visual Development Environment) Programming tools that allow programmers to build substantial parts of computer programs by pointing and clicking, rather than entering code. 683 Vector graphic An image generated from descriptions that specify the position, length, and direction in which lines and shapes are drawn. 444 Vertical market software Computer programs designed to meet the needs of a specific market segment or industry, such as medical record-keeping software for use in hospitals. 142 VGA (Video Graphics Array) A screen resolution of 640 x 480. 91 Video capture The process of converting analog video signals into digital data stored on a hard drive. 454 Video editing software Software that provides tools for capturing and editing video from a camcorder. 140 Videocasting Online delivery of a video clip as an Atom or RSS feed; also referred to as video podcasting or vodcasting. 361 776 Videoconferencing camera (Also called a Web camera.) An inexpensive digital camera that attaches directly to a computer and creates a video by capturing a series of still images. 453 Videogame console A computer specifically designed for playing games using a television screen and game controllers. 17 Viewing angle width The angle at which you can clearly see the screen image from the side. 90 Virtual machine Software that creates an operating environment that emulates another computer platform; as an example, Parallels Desktop creates a virtual PC on an Intel Macintosh computer. 199 Virtual memory A computer’s use of hard disk storage to simulate RAM. 72 Virtual private network (VPN) A network connection that typically carries encrypted data over the Internet to and from a remote access server. 345 Virus definitions A group of virus signatures used by antivirus software to identify and block viruses and other malware. 168 Virus hoax A message, usually e-mail, that makes claims about a virus problem that doesn’t actually exist. 166 Virus signature The unique computer code contained in a virus that security software uses to identify it. 167 VisiCalc First released on the Apple II; was the first electronic spreadsheet. 495 Visual Basic An event-driven programming environment in which the programmer uses forms to lay out the screen components of a program; components are defined by properties and Basic program code. 679 VOB (Video OBject) An industry-standard video format for standalone DVD players. 457 Voiceband modem The type of modem typically used to connect a computer to a telephone line. 312 VoIP (Voice over Internet Protocol) Hardware, software, and protocols used to make telephone-style calls over the Internet. Also referred to as Internet telephony. 332 GLOSSARY Volatile A term that describes data (usually in RAM), which can exist only with a constant supply of power. 72 Walkthrough In the context of programming, a method of verifying that an algorithm functions properly when using realistic test data. 694 WAN (Wide Area Network) An interconnected group of computers and peripherals that covers a large geographical area, such as multiple branches of a corporation. 247 WAP (Wireless Access Protocol) A communications protocol that provides Internet access for handheld devices. 327 Waterfall SDLC A series of phases that outlines the development process of an information system where each phase is a discrete step in the development process. 566 Wave An audio file format with .wav extension that was Windows’ original “native” sound format. 424 Wavetable A set of pre-recorded musical instrument sounds in MIDI format. 426 WBS (Work Breakdown Structure) A project management tool based on a hierarchical structure of tasks and deliverables. 570 Weak encryption Encryption that is relatively easy or simple to decrypt without the encryption key. 285 Web Short for World Wide Web. An Internet service that links documents and information from computers located worldwide, using the HTTP protocol. 7, 360 Web 2.0 A group of new and innovative ways to use the Web, such as for social networking, blogging, and wikis. 361 Web application Applications software that is accessed and used from within a browser. 158 Web authoring software Computer programs for designing and developing customized Web pages that can be published electronically on the Internet. 125 Web browser A program that communicates with a Web server and displays Web pages. 361 Web bug A small graphic on a Web page that installs cookies designed to track your online activities. Also known as a Clear GIF. 402 Web cache A collection of Web pages and associated graphics that have been accessed and are temporarily stored locally to speed up subsequent access to them. 367 Web crawler The component of a search engine that autonomously visits Web sites collecting Web page data that will be indexed and available for searching. 375 Web page Information displayed by a Web browser that’s produced from an HTML document or generated on the fly from data in a database. 361 Web palette A standard selection of colors that all Internet browsers can display. 438 Web portfolio A hypertext version of a resume containing links to Web sites of former employers or schools. 519 Web search engine A program that uses keywords to find information on the Internet and returns a list of links to relevant documents. 374 Web server A computer that listens for queries from Web browsers and transmits HTML documents over the Internet. 361 Web site A Web address that holds a collection of information identified by a common domain name, such as www.cnn.com. 360 Web site designer A computer professional who creates, tests, posts, and modifies HTML documents and other data for a Web site. 511 Web-based e-mail An e-mail system that allows users to access e-mail messages using a browser. 397 Web-based video Digital video designed to be accessed using a browser and played on a computer. 452 WEP (Wired Equivalent Privacy) An encryption algorithm used to protect data on Wi-Fi networks. 283 777 GLOSSARY What-if analysis The process of setting up a model in a spreadsheet and experimenting to see what happens when different values are entered. 130 Whistleblowing The disclosure by an employee of confidential information that relates to some danger, fraud, or other illegal or unethical conduct connected with the workplace. 532 Wireframe A representation of a 3-D object using separate lines, which resemble wire, to create a model. 449 Workstation (1) A computer connected to a local area network. (2) A powerful desktop computer designed for specific tasks. 17 Wireless access point A network device that connects several devices of a local area network by broadcasting signals to any device with compatible Wi-Fi cards. 270 WPA (Wi-Fi Protected Access) A method for encrypting data transmitted over wireless networks. 283 Wi-Fi An Ethernet-compatible wireless network that uses 802.11a, b, g, and n standards. 268 Wireless ad-hoc network A wireless network in which devices broadcast directly to each other instead of to a central access point. 270 Wi-Fi adapter A type of network interface card that includes a transmitter and a receiver using Wi-Fi protocols. 269 Wireless encryption A security measure for wireless networks that scrambles data transmitted between network devices. 283 Wi-Fi hotspot The geographical area in which you can connect to a Wi-Fi signal, such as a Wi-Fi equipped campus or coffeehouse. 323 Wireless infrastructure network A wireless network in which devices communicate through a central access point. 270 Wiki Software that allows users to collaborate to create, change, and link Web pages. Used for applications such as Wikipedia and open source project management. 361 WiMAX Fixed wireless Internet service based on Ethernet protocols with a range of 30 miles and a transmission speed of 70 Mbps. 320 Window An element of graphical user interfaces that is rectangular in shape and displays the controls for a program or a dialog box. 189 Windows Explorer A file management utility included with most Windows operating systems that helps users manage their files. 216 Windows Media DRM Microsoft’s digital rights management technology. 470 Windows Mobile OS An operating system designed by Microsoft for hand-held computers. 203 Windows Registry A crucial set of data files maintained by the operating system that contains the settings needed by a computer to correctly use any hardware and software that has been installed. 154 Wired network A network that uses cables or wires to transmit data from one network device to another. 256 Wireless network Networks that use radio or infrared signals (instead of cables) to transmit data from one network device to another. 265 Wireless network key The encryption key used to encrypt and decrypt data that travels over a wireless network protected by WEP, WPA, or WPA2. 284 Wireless router A network device that contains circuitry for a wireless access point and routing data to the Internet. 270 WMA (Windows Media Audio) A file format with a .wma extension that is promoted by Microsoft and provides highly compressed audio files with very little loss of sound quality. 424 Word processing software Computer programs that assist the user in producing documents, such as reports, letters, papers, and manuscripts. 125 Word size The number of bits that a CPU can manipulate at one time, which is dependent on the size of the registers in the CPU, and the number of data lines in the bus. 68 Workers People who perform the tasks necessary to carry out an organization’s mission. 557 Worksheet A computerized, or electronic, spreadsheet. 130 WQXGA (Wide Quad eXtended Graphics Array) 2560 x 1600 resolution. 91 WUXGA (Widescreen Ultra eXtended Graphics Array) A display resolution of 1920 X 1200 pixels. 91 Xerox Alto An early personal computer prototype developed by Xerox Corp. that featured, among other things, a graphical user interface that became influential in the development of the Apple Macintosh. 495 XForms A database technology that provides an alternative to HTML forms by providing more flexibility and an interface to XML documents. 629 XGA (eXtended Graphics Array) Usually refers to 1024 x 768 resolution. 91 XHTML A markup language very similar to HTML 4.01, but more customizable. 362 XML (eXtensible Markup Language) A document format similar to HTML, but that allows the Web page developer to define customized tags, generally for the purpose of creating more interactivity. 630 XML DBMS A database management system that provides authoring and query tools for designing and managing collections of XML documents. 625 Z3 An early electronic computer prototype designed by Konrad Zuse that was the first to incorporate the use of binary numbers for data representation. 489 Zipped Refers to one or more files that have been compressed. 156 Zombie A computer that has been compromised by malware that allows it to be controlled by a remote user. 164 778 INDEX INDEX A A+ Certification, 516 A Programming Language (APL), 679, 700 AAC (Advanced Audio Coding) format, 424 AACS (Advanced Access Content System), 469 abacus, 486 ABC (Atanasoff-Berry Computer), 489 absolute references, worksheets, 132 The Abyss (film), 474 acceptance testing, 586 access controls, 655 access times hard disks, 79 storage devices, 77 accounting software, 142 accuracy, quality-of-service metrics, 587 Acer, market share, 504 ACH (Automated Clearing House), 348 ACM (Association for Computing Machinery), 531 action games, 141 ActiveX controls, 372 373 actors, 573 acts of war, information system data vulnerability, 591 ad hoc reports, 561 Ada, 679, 700, 711 Ada95, 712 ad-blocking software, 385 addresses Internet, 305 307 spoofed, 163 Adobe Creative Suite, 144 Adobe Reader, 122, 210 ad-serving cookies, 400 Advanced Access Content System (AACS), 469 Advanced Audio Coding (AAC) format, 424 Advanced Encryption Standard (AES), 285 Advanced Micro Devices. See AMD (Advanced Micro Devices) Advanced Research Projects Agency (ARPA), 108, 302 advanced searches, 380 Advanced Systems Format (ASF), 457 adventure games, 141 advertising, e-commerce, 385 AES (Advanced Encryption Standard), 285 agile methodology, 681 agriculture, computers in, 731 732 AIFF (Audio Interchange File Format), 424 Aiken, Howard, 490 Ajax (Asynchronous JavaScript and XML), 362 Alberta Agriculture and Rural Development Web site, 731 ALGOL (ALGOrithmic Language), 700 algorithms, 689 694 definition, 689 designing, 690 691 expressing, 692 694 walkthroughs, 694 writing, 689 690 alpha tests, 504 ALU (arithmetic logic unit), 31, 32 always-on connections, 307 ALWIL avast!, 167 Amadeus, 544 Amazon.com, 7, 499 Amazon Auctions, 388 Elastic Compute Cloud, 335 IPO, 501 AMD (Advanced Micro Devices), 499 microprocessors, 70, 494 America Online, call center, 542 American Airlines, 544, 545 American Express call center, 542 American Society of Travel Agents (ASTA), 545 American Standard Code for Information Interchange (ASCII), 24, 25 ASCII files, 682 analog data, 22 digital data compared, 22 analog hole, 464 analog modems, digital phone service, 313 analog protection systems, 468 Analog Telephone Adapters (ATAs), 332 analog video cameras, 453 analysis phase of SDLC, 571 575 activities, 571 documentation tools, 572 575 system requirements, 571 572 Analytical Engine, 488 AND, SQL queries, 648, 649 AND operator, 380 Andreesen, Marc, 360 Android OS, 203 animated GIFs, 448 animation, film, 475 anonymizer tools, 10 anonymous FTP, 337 anonymous proxy service, 403 antipharming tools, 406 anti-spyware software, 402 anti-theft devices, 98 99 antivirus software, 122, 167 169 activating and deactivating, 168 configuring, 168 dependability, 169 frequency of system scans, 169 keeping up-to-date, 168 operation, 167 168 AOL, 6 censorship, 346 347 security software available from, 167 APA style for citations, 382 Apache helicopters, 108 APIs (application programming interfaces), 687, 688 APL (A Programming Language), 679, 700 Apple Computer, Inc.. See also Mac entries GUI, 189 Macintosh. See Mac entries Safari, 366 Apple Computer Corporation, 499 Apple I, 495 Apple II, 495 Apple Lisa, 495 founding, 495 market share, 504 microprocessors, 494 application development tools, information systems, 578 application programming interfaces (APIs), 687, 688 application servers, 249 application software, 16, 120, 125 142. See also specific types of application software file management, 212 213 groupware, 121 included with operating system, 143 144 productivity, 121 running, 121 application specifications, 581 582 application testing, 584 appz, 179 architecture, computer applications in, 598 599 arguments, Prolog, 714 715 arithmetic logic unit (ALU), 31, 32 779 INDEX ARPA (Advanced Research Projects Agency), 108, 302 ARPANET, 108, 109, 232, 302 ASCC (Automatic Sequence Controlled Calculator), 490 ASCII (American Standard Code for Information Interchange), 24, 25 extended, 24 ASCII files, 682 ASF (Advanced Systems Format), 457 assembly languages, 677 associate’s degree, computer-related, 515 Association for Computing Machinery (ACM), 531 assumptions, 680 ASTA (American Society of Travel Agents), 545 asymmetric Internet connection, 311 Asynchronous JavaScript and XML (Ajax), 362 ATA(s) (Analog Telephone Adapters), 332 Atanasoff-Berry Computer (ABC), 489 Atari, 495 ATMs (automated teller machines), 348 349 Atom, 360 AT&T, 303, 492, 497 attachments, e-mail, 393 attack trees, 726 auctions, online, 388 audio digital. See digital audio streaming, 425 audio compression, 423 audio editing software, 139 audio encoding software, 139 audio format converters, 139 Audio Interchange File Format (AIFF), 424 Audio Video Interleave (AVI) format, 457 audits, databases, 656 authentication protocols, 34 36 authorization and revocation, 469 AutoCAD Certified User exam, 516 Autodesk, certification, 516 automated check clearing, 348 Automated Clearing House (ACH), 348 automated teller machines (ATMs), 348 349 automatic recalculation, worksheets, 132 Automatic Sequence Controlled Calculator (ASCC), 490 automation, information systems, 576 577 AVI (Audio Video Interleave) format, 457 B Babbage, Charles, 348, 488 back pain, 540 backing up, 222 231 avoiding viruses, 223 backup software, 227 bare-metal restores, 230 boot disk, 229 choosing device for, 223 differential backups, 227 disk images, 230 231 file copies and synchronization, 224 225 frequency, 223 full backups, 227 incremental backups, 228 need for, 222 number of backups, 228 plan for, 222 recovery disk, 229 restore points, 230 restoring data, 228 229 storage location for backups, 224 system synchronization, 226 Windows Registry, 229 backpack journalists, 173 Backup, 143 backup(s), 222 disaster recovery plans, 593 594 backup software, 227 backward compatibility, Mac OS, 198 199 bandwidth, 251 bank clearinghouses, 348 Bank of America, 348, 653 banking industry, 348 349 banner ads, 385 bare-metal restore, 230 BASIC (Beginner’s All-purpose Symbolic Instruction Code), 679, 700 game development, 687 batch processing, 560 battery backup, 100 Battlefield 1942, 142 B2B (business-to-business) model, 384 B2C (business-to-consumer) model, 384 BD-R (Blu-ray recordable), 83 BD-RE (Blu-ray rerecordable), 83 BD-ROM (Blu-ray read-only memory), 83 Becky Sharp (film), 474 Beginner’s All-purpose Symbolic Instruction Code. See BASIC (Beginner’s All-purpose Symbolic Instruction Code) Beise, S, Clark, 348 Bell Laboratories, 492 benchmarks, 69 Berners-Lee, Tim, 360, 362 Berry, Clifford E., 489 Best Buy, 506, 611 beta tests, 504 Betamax, 472 B2G (business-to-government) model, 384 BI (Business Intelligence), 569 Bidz, 388 binary number system, 23 biometrics, 34 bit(s), 23 quantification, 26 storage and transport, 27 storing images, 25 storing sound, 25 bitmap graphics, 430 443 color depth, 436 437 color palettes, 437 438 compression. See image compression converting vector graphics to, 447 creating, 430 definition, 430 digital cameras, 431 433 file formats, 442 443 image resolution, 433 435 modifying, 433 monochrome, 436 resolution dependence, 435 scanners, 431 32-bit, 437 True Color, 437 24-bit, 437 uses, 430 vector graphics compared, 444 445 bitrate, 458 BitTorrent, 305, 338 339, 529 legality, 339 security, 339 black screen of death, 103 780 Blackberry Curve, 19 Blackboard, 291 blade servers, 18 Blancco File Shredder, 123 Blaster worm, 233 blended threats, 162 BLOB data type, 635 Blockbuster Online, 471 blogs, 6 Bloom, David, 173 blue screen of death, 103 Blue Shield of Pennsylvania, 542 Bluetooth, 267 definition, 267 range, 267 speed, 267 uses, 267 Blu-ray, 81 backup device, 223 comparison with other storage technologies, 87 operation, 81 82 other optical technologies compared, 81 speed, 82 uses, 83 Blu-ray disc(s), copy protection, 469 Blu-ray Disc Movie format, 457 Blu-ray read-only memory (BD-ROM), 83 Blu-ray recordable (BD-R), 83 Blu-ray rerecordable (BD-RE), 83 BMP format, 442, 443 body scanners, 41 Boole, George, 379 Boolean operators, 379 380 boot disks, 229 boot process, 192 193 bootstrap program, 192 bot(s), 164 botnets, 164 BPR (Business Practice Reengineering), 569 break reminder software, 541 bridges, 250 British Telecom, 303 broadband, 251 mobile, 327 broadcast flags, 465 466 broadcast journalism, 173 Brooks, Frederick, 566 browser caches, 367 brute force attacks, 37 BSD license, 150 151 buffer overflows, 723 724 Bugnosis, 402 bulletin boards, 6 INDEX Burroughs, 489, 492 bus topology, 250 business(es). See also e-commerce definition, 556 e-mail privacy policies, 409 employee e-mail privacy, 408, 409 ethics. See professional ethics; whistleblowing Business Intelligence (BI), 569 Business Practice Reengineering (BPR), 569 business software, 142 business-to-business (B2B) model, 384 business-to-consumer (B2C) model, 384 business-to-government (B2G) model, 384 buttons, 190 buying hardware, 62 66 compatibility, 64 costs, 62 63 mods, 65 66 planned uses, 63 product information sources, 62 software considerations, 64 upgrading, 65 vendors, 66 buying software, 143 151 applications and utilities included with operating system, 143 144 copyrights, 146 147 essential software to have, 143 freeware, 150 information sources, 145 licenses, 147 150, 151 open source software, 150 151 software package ingredients, 146 software suites, 144 system requirements, 145 vendors, 145 bytes, 26 quantification, 26 C C (programming language), 679, 689, 700, 711 712 game development, 687 C#, 679, 712 C++, 679, 711, 712 game development, 687 CA SB1386, 658 cable(s) Ethernet, 262 transferring images from digital cameras, 432 cable Internet service, 316 317, 321 equipment needed, 317 security, 317 speed, 316 cable modems, 317 caches, 68 size, 68 Cactus Data Shield (CDS), 466 CAD (computer-aided design) software, 138, 410, 598 CAI (computer-aided instruction), 290 CAL (computer-aided learning), 290 Calculator, 143 calculators manual, 486 487 mechanical, 487 489 California Department of Social Services, 653 call centers, offshore, 542 cameras analog, 453 digital. See digital cameras videoconferencing, 453 Campbell Soup Company, 564 Canada, offshoring, 542 CAN-SPAM Act, 524 capacitors, 72 capacity quality-of-service metrics, 587 storage devices, 77 card readers, 84, 432 cardinality, 616 careers. See computer professionals carpal tunnel syndrome, 536 Carrier Sense Multiple Access with Collision Detection (CSMA/ CD) protocol, 259 case sensitive databases, 636 case sensitivity, 35 CASE tools, 574 575 cathode ray tubes (CRTs), radiation emissions, 535 CATV (community antenna television), 316 CBT (computer-based training), 290 C2C (consumer-to-consumer) model, 384 CCNP (Cisco Certified Network Professional), 516 CD(s) (compact discs), 81 backup device, 223 781 INDEX buying software on, downloading versus, 146 copy protection, 466 467 formats, 82, 83 installing software from, 155 operation, 81 82 other optical technologies compared, 81 speed, 82 uses, 83 CD ripper software, 139 CDC (Centers for Disease Control), 663 CD-DA (compact disc digital audio) discs, 82 CD-R (compact disc recordable) discs, 83 CD-ROM (compact disc read-only memory) discs, 83 CD-RW (compact disc rewritable) discs, 83 comparison with other storage technologies, 87 CDS (Cactus Data Shield), 466 CDW, 507 cell(s), worksheets, 130 cell phones Internet access, 326 329 radiation emissions, 536 cell references, 131 cellular data service, 326 329 equipment needed, 327 speed, 326, 327 WAP, 327 cellular networks, tracking, 42 43 censorship eBay, 10 Internet, 10, 346 347 Centers for Disease Control (CDC), 663 central processing unit (CPU), 15 centralized processing, 577 certificates of completion, 515 certification, 515 516 certification exams, 516 Certified Information Systems Security Professional (CISSP), 517 CGI (computer-generated imagery), 474 475 change requests, 582 channel conflict, 508 character data, 24 25 chat, 330 331 chat groups, 6 Chicago style for citations, 382 chief information officer (CIO), 510 Children’s Internet Protection Act, 524 Children’s Online Privacy Protection Act, 524 China Internet censorship, 10, 347 offshoring, 542 chipmakers, 498 chips, 27. See also microprocessor(s) ChoicePoint, 653 chokers, 339 Chrome, 366 CIO (chief information officer), 510 ciphertext, 285 circuit switching, 253 circulatory problems, 540 541 CISC (complex instruction set computing), 69 Cisco Certified Network Professional (CCNP), 516 Cisco Systems, 499 Internet censorship tools, 347 CISSP (Certified Information Systems Security Professional), 517 ClamWin, 167 class(es) coding, 704 defining, 703 definition, 702 inheritance, 704 705 methods related to, 706 objects compared, 702 class attributes, 703 class diagrams, 573 574 class hierarchies, 704 Classmates, 361 cleaning. See maintenance clear GIFs, 402 click-through rate, 385 client(s), 18 client/server mode, 249 client-side scripts, 372 clip art, 129 clothing production, warehousing, and shipping, 410 411 cloud computing, 335 clusters, 219 CMSs (course management systems), 291 COBOL (Common Business-Oriented Language), 493, 677, 679, 689, 700 code, 674 675 codecs, 458 codes of ethics, 530 532 coding programs, 682 685 program editors, 684 685, 685 text editors, 682, 684 685 VDEs, 683 685 color depth, 436 437 bitmap graphics, 436 437 display devices, 91 file size, 436 reducing, 437 color palettes, 437 438 COLOSSUS, 490 Combined Programming Language (CPL), 679 Comcast, security software available from, 167 command-line user interfaces, 189 comments, computer programs, 686 commercial software, 149 commit or rollback strategy, 560 Commodore, 495 Common Business-Oriented Language (COBOL), 493, 677, 679, 689, 700 communications channels, 251 Communications Decency Act, 508, 524 communications protocols, 252 255, 305 306 addresses, 254 255 CSMA/CD, 259 definition, 252 operation, 252 packets, 253 254 signals, 253 stateless, 365 communications technology, global, 12 community antenna television (CATV), 316 compact discs. See CD(s) (compact discs) CompactFlash, 84 Compaq, 493 compatibility, 64 backward, Mac OS, 198 199 compilers, 30 complex instruction set computing (CISC), 69 components, computer programming, 687 compression audio, 423 images. See image compression video, 456, 458 compression ratio, 458 CompTIA (Computing Technology Industry Association), 516 517 CompUSA, 506 CompuServe, 6 computations, databases, 635 782 computed fields, 635 computed tomography (CT), 8, 663 compute-intensive problems, 19 computer(s) adding storage, 86 categories, 16 19 definition, 14 desktop, 58 disposal, 106 107 first, 5 gaming, 61 growth in ownership, 4 7 handheld, 19 history. See computer history home, 60 input, 15 output, 15 PCs. See personal computer(s) (PCs) portable, 59 small business, 61 software. See software storage of instructions, 15 16 upgrading, 65 Computer Associates, location, 499 Computer Buyer’s Guide InfoWeb, 64 computer chips, 27. See also microprocessor(s) computer crime penalties, 232 233 unauthorized access to wireless networks, 288 289 computer engineer(s), 512 computer engineering, 514 computer forensics, 235 Computer Fraud and Abuse Act, 524 computer games, programming tools, 687 688 computer gaming, 8 computer hardware. See hardware; specific hardware devices computer history, 486 496 first-generation computers, 491 492 fourth-generation computers, 494 manual calculators, 486 487 mechanical calculators, 487 489 personal computers. See personal computer entries prototypes, 489 490 second-generation computers, 492 493 third-generation computers, 493 computer industry, definition, 497 INDEX computer languages. See programming languages computer magazines, information on software, 145 computer networks, 7. See also network entries computer operators, 511 computer professionals, 510 522 advantages of working in information technology industry, 513 basic qualifications, 514 career outlook for, 512 certification, 515 517 contract work, 513 definition, 510 educational requirements, 514 515 ethics. See professional ethics job hunting, 517 job listings, 520 522 jobs available to, 510 512 part-time work, 513 portfolios, 519 520 resumes, 518 519 salaries of, 512 telecommuting, 513 computer program(s), 15, 29 31. See also software coding, 682 685 planning, 680 681 programmers, 511, 675. See also computer programming; specific types of programming programming languages, 29, 676 679 size, 675 source code conversion, 30 31 stored, 16 computer programmers, 511 computer programming, 672 733 components, 687 computer programming, definition, 675 declarative. See declarative paradigm; Prolog documentation, 686 object-oriented. See object-oriented programming procedural. See procedural programming program code defined, 674 675 program coding, 682 685 program planning, 680 681 program size, 675 program testing, 685 programmers, 511, 675 programming languages, 29, 676 679 programming tools, 686 688 secure. See secure programming software engineering compared, 675 computer retail stores, 506 computer retailers, 498 computer salespersons, 512 computer science, 514 computer screens, maintenance, 101 computer simulations, military use, 109 computer slump, 540 computer software. software computer systems, 56 57 components, 56 57 computer theft anti-theft devices, 98 99 recovery, 99 computer viruses, 163 avoiding in backups, 223 e-mail, 397 information system data vulnerability, 591 virus definitions, 168 virus distribution, 232 virus hoaxes, 166 virus signatures, 167 computer worms, 163 computer-aided design (CAD) software, 138, 410, 598 computer-aided instruction (CAI), 290 computer-aided learning (CAL), 290 computer-aided music software, 139 computer-based training (CBT), 290 computer-generated imagery (CGI), 474 475 computerization, information systems, 576 577 Computing Technology Industry Association (CompTIA), 516 517 concurrent-use licenses, 147 confidentiality, 11 ethical issues, 526 527 configuring network routers, 264 workstations for Ethernet, 264 connection speed, Internet, 309 311 constant(s), 680 Construction, computer applications in, 598 599 construction robots, 599 consumer-to-consumer (C2C) model, 384 783 INDEX container formats, 457 Content Scramble System (CSS), 468 Continental Airlines, 545 contract workers, 513 control(s), 123, 683 684 definition, 683 properties, 683 Control Data, 492 control structures, use, 695 700 control unit, 31 32 convergence, 8 9 conversion of file formats, 210 211 Cook, Ben, 730 cookies, 400 403 ad-serving, 400 definition, 367 368 deleting, 401 402 Flash, 402 operation, 368 turning off, 401 uses, 368 Cooper, Alan, 730 Copy Control, 466 copy control, 466 copy generation management, 467 copy prevention, 466 copy protection, 466 467 copying, databases, illicitly, 653 copying desktop videos to DVDs, 462 463 copyright(s) ethical issues, 525 fair use, 472 473 software, 146 151 Web-based sources, 383 copyright notices, 147 corporate data security, 590 595 corporate identity theft, 594 595 information system data security, 592 594 information system data vulnerabilities, 590 591 corporate identity theft, 594 595 corrupted signals, 253 costs computers, 62 63 domain names, 309 portable satellite service, 325 printer operation, 93 products, 498 counterfeiting, 179 course management systems (CMSs), 291 Cow Sense decision support software, 731 CPL (Combined Programming Language), 679 CP/M, 493 CPU (central processing unit), 15 CREATE keyword, 646 credit cards, online payment, 389, 390 CRM (Customer Relationship Management), 569 cropping, 435 cryptographic algorithms, 285 cryptographic keys, 285 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) protocol, 259 CSS (Content Scramble System), 468 CT (computed tomography), 8, 663 Customer Relationship Management (CRM), 569 cyber censorship, 346 347 CyberAngel, 99 cyber-hacking, 232 233 CyberLink DVD Suite 7, 144 cyberspace, 7 cyberterrorism, 591 cycles, microprocessors, 67 68 D dashboard widgets, 123 data, 15 analyzing, databases, 612 character, 24 25 collecting, databases, 610 digital, 22 23 distribution, databases, 611 finding, databases, 611 612 information compared, 22 loading into database tables, 644 numeric, 23 organizing, databases, 611 output, databases, 611 reading (loading), 76 sharing on LANs, 274 storing, databases, 610 travel over networks, 252 253 updating, databases, 610 611 writing, 76 data bus, 94 data centers disaster recovery plans, 593 594 risk minimization, 592 593 data dependence, 624 data diddling, 232 data dredging, 613 data files, backing up. See backing up data fishing, 613 data flow(s), 572 573 data flow diagrams (DFDs), 572 573 data fork, Mac OS, 200 data independence, 624 data management software, 622 632 custom, 623 624 DBMSs, 625 626 selecting, 624 Web access to databases, 627 630 XML, 630 632 data mining, 612 613 Data Over Cable Service Interface Specification (DOCSIS), 316 data processing, 15 data redundancy, 637 data representation, 22 23 definition, 22 digital. See digital data representation data service plans, 327 data stores, 572 data transfer rate, 77 data types, 634 635 data views, 655 data warehouses, 612 database(s), 608 663 case sensitive, 636 computations, 635 copying illicitly, 653 data management tools. See data management software data mining, 612 613 declarative languages, 722 definition, 134, 610 design. See database design distributed, 626 fields. See field(s), databases jobs, 519 medical, 662 models. See database models OLAP, 613 preventing inaccurate data entry, 636 637 records. See record(s), databases relationships, 616 security. See database security SQL. See SQL (Structured Query Language) tables. See database tables underlying structure, 614 uses, 610 612 database administration, certification, 516 database administrators, 511 database audits, 656 database client software, 626 database design, 633 644 defining fields, 633 637 interface design, 640 641 loading data, 644 normalization, 637 638 784 organizing records, 639 640 report template design, 642 643 database indexes, 639 database management software (DBMS). See database software database management systems. See DBMSs (database management systems) database models, 614 621 dimensional, 619 flat file, 614 616 hierarchical, 617 network, 617 object, 620 object-relational, 621 relational, 618 619 database security, 653 659 access control, 655 database audits, 656 database use policies, 656 encryption, 654 655 individual efforts, 658 659 laws, 656 658 vulnerabilities, 653 654 database server software, 626 database software, 134 136 data entry, 135 data storage, 134 135 definition, 134 locating data, 136 record creation, 135 database structure, 633 database tables, 618 joining, 651 652 loading data, 644 database use policies, 656 date data type, 635 DBMS (database management software). See database software DBMSs (database management systems), 625 626 choosing, 625 626 XML, 625 DCGS (Distributed Common Ground System), 109 DE (distance education), 291 de Colmar, Thomas, 487 de Colmar’s Arithmometer, 487 debuggers, 685 DEC (Digital Equipment Corp.), 493 DEC PDP-8, 493 decimal number system, 23 decision models, 562 decision queries, 562 decision support systems (DSSs), 562 563 declarative languages, 722 INDEX decision support worksheets, 579 decision tables, declarative paradigm, 714 declarative paradigm, 679, 713 722 advantages and disadvantages, 722 applications, 722 building blocks, 713 714 definition, 713 input capabilities, 720 721 languages, 722 planning declarative programs, 714 Prolog. See Prolog unique features, 713 decryption, 285 DeCSS, 468 dedicated lines, 314, 321 DefenseLINK, 108 defensive programming, 726 defragmentation utilities, 221 DELETE keyword, 646 deleting cookies, 401 402 files, 220 Dell activities, 498 call center, 542 location, 499 market share, 504 market tier, 505 servers, 18 Web-based direct sales, 507 Delta Airlines, 545 democracy, digital technology, 10 demoware, 149 denial of service, 232 design phase of SDLC, 576 582 activities, 576 application specifications, 581 582 hardware alternatives, 576 577 RFPs and RFQs, 580 581 software alternatives, 578 solution selection, 579 desktop, 189 desktop computers, 58 desktop operating systems, 188 desktop publishing (DTP) software, 125 desktop video, 452, 459 copying to DVDs, 462 463 desktop widgets, 123 detail reports, 560 Deutsche Telekom, 303 device drivers, 124 DFDs (data flow diagrams), 572 573 DHCP (Dynamic Host Configuration Protocol), 255 DHTML (Dynamic Hypertext Markup Language), 362 dialog boxes, 191 dial-up connections, 312 313, 321 DICOM (Digital Imaging and Communications in Medicine), 663 dictionary attacks, 36 Difference Engine, 488 differential backups, 227 digital audio, 422 425 adding to Web pages, 425 definition, 422 file formats, 424 MIDI music, 426 427 portable audio players, 425 426 production, 423 424 sampling rate and sound quality, 423 software for recording and playing, 425 speech recognition and synthesis, 428 429 digital cameras, 431 433 digital video cameras, 453 454 image storage, 432 transferring data to computer, 455 transferring images from, 432 433 videoconferencing cameras, 453 digital certificates, 373 digital content, 464 digital data, 22 23 digital data representation, 22 28 bits and bytes, 26 circuits and chips, 27 28 images, 25 numbers, 23 text, 24 25 digital devices, radiation emissions, 534 536 digital divide, 12 13 Digital Document Shredder, 123 digital electronic devices, 4 5 Digital Equipment Corp. (DEC), 493 digital images, 8 Digital Imaging and Communications in Medicine (DICOM), 663 Digital Millennium Copyright Act (DMCA), 346, 473, 524, 529 digital music, 8 sources, 425 digital phone service, analog modems, 313 digital processing, 29 33 785 INDEX processor logic, 31 33 programs, 29 31 digital revolution, 4 8 computers, 5 7 digitization, 7 8 significance, 4 5 technologies fueling, 4 digital rights management (DRM), 464 473 Blu-ray, 469 CD copy protection, 466 467 definition, 464 digital downloads, 469 471 digital media use, 464 465 digital watermarks, 465 466 DVDs, 467 468 effectiveness, 465 signal scrambling, 465 digital signal processors, 424 digital subscriber line. See DSL (digital subscriber line) digital technology analog technology compared, 22 economy, 12 13 freedom and democracy, 10 intellectual property, 11 12 privacy, 11 digital versatile discs. See DVD entries digital video, 8, 452 463 compression, 456, 458 creating, 453 454 definition, 452 desktop video, 452, 459 DVD-video, 452, 461 463 editing, 456 457 file formats, 456, 457, 462 463 frame rate, 456 PDA, 452, 459 transferring video footage to computer, 454 456 types, 452 video output, 457 458 Web-based, 452, 459 460 digital video cameras, 453 454 digital video discs. See DVD entries digital video recorders, capturing video, 455 digital watermarks, 465 466 digitization, 7 8 digitizing tablets, 446 dimensional databases, 619 DIMMs (dual inline memory modules), 73 DIPs (dual in-line packages), 27 direct access. See random access direct conversion, 586 direct marketing, 44 45 directories, 206 disaster recovery plans, 593 594 disc(s). See specific types of discs disc mastering, 219 disk(s). See also specific types of disks formatting, 218 219 Disk defragmenter, 143 disk images, 230 231 disk operating system (DOS), 202 disk partitions, 205 display devices, 90 91. See also specific display devices components, 91 image quality, 90 maintenance of screens, 101 optimal placement, 538 539 resolution, 539 screensavers, 123 types, 91 display systems, 57 distance education (DE), 291 distance learning, 291 Distributed Common Ground System (DCGS), 109 distributed databases, 626 distributed processing, 577 Distributed.net, 335 distribution media, 146 DMCA (Digital Millennium Copyright Act), 346, 473, 524, 529 DNS (Domain Name System), 309 docking stations, transferring images from digital cameras, 432 DOCSIS (Data Over Cable Service Interface Specification), 316 doctoral degrees, computer-related, 515 document production software, 125 129 desktop publishing software, 125 formatting, 127 129 improving writing quality, 126 127 spell checking, 126 Web authoring software, 125 word processing software, 125 documentation, programs, 686 documentation tools CASE tools, 574 575 object-oriented analysis and design, 573 574 structured, 572 573 DoD (U.S. Department of Defense), 108 domain name(s), 307 309 fee, 309 IP addresses related, 308 list, 307 obtaining, 308 309 domain name servers, 308 pharming, 405 406 Domain Name System (DNS), 309 donating old computers, 106 DOS (disk operating system), 202 dot commands, 499 dot command bubble, 501 dot matrix printers, 92 93, 94 dot pitch, 90 double layer DVDs, 81 DoubleClick, 401 downloading, 8 DRM, 469 471 installing downloaded software, 156 157 software, 146 downstream speed, 311 downtime, quality-of-service metrics, 587 drawing(s). See graphics drawing software, 137, 446 DREAD categories, 725 drive(s). See hard disk drives; optical drives; solid state drives (SSDs); USB flash drives; specific types of optical drives drive bays, 86 drive mapping, 276 driver licenses, 660 DRM. See digital rights management (DRM) DRM individualization, 470, 473 DSL (digital subscriber line), 314 315, 321 equipment, 315 operation, 315 speed, 315 DSL filters, 315 DSL modems, 315 DSSs. See decision support systems (DSSs) DTP (desktop publishing) software, 125 dual boot, Mac OS, 199 dual inline memory modules (DIMMs), 73 dual in-line packages (DIPs), 27 dual-channel architecture, 73 duplex printers, 93 durability, storage technologies, 77 duty cycle, printers, 93 DV format, 456 DVD(s) (digital video discs or digital versatile discs), 81 backup device, 223 double layer, 81 786 DRM, 467 468 formats, 82, 83 installing software from, 155 operation, 81 82 other optical technologies compared, 81 outputting video to, 462 speed, 82 uses, 83 DVD authoring software, 140 DVD burners, 461 DVD drives, writable, 461 DVD images, 462 DVD volumes, 462 DVD+R or DVD-R (digital versatile disc recordable) discs, 83, 463 DVD-ROM (digital versatile disc read-only memory) discs, 83 DVD+RW or DVD-RW (DVD rewritable) discs, 83, 463 comparison with other storage technologies, 87 DVD-Video, 452, 461 463 testing, 463 DVD-Video (digital versatile disc video) discs, 82 DVI (Digital Visual Interface) ports, 95, 96 Dynabook project, 711 Dynamic Host Configuration Protocol (DHCP), 255 Dynamic Hypertext Markup Language (DHTML), 362 dynamic IP addresses, 306 307 dynamic Web publishing, 628 E EAI (Enterprise Application Integration), 569 ear training software, 139 EarthLink, e-mail authentication, 404 eBay, 7, 388 censorship, 10 EBCDIC (Extended Binary Coded Decimal Interchange Code), 25 eBid, 388 e-books, fair use, 473 Eckert, J. Presper, 490 Eckert-Mauchly Computer Corp., 491 e-commerce, 384 391 common models, 384 definition, 384 marketing, 45 online auctions, 388 online payment, 389 391 online shopping, 386 387 popularity, 385 INDEX profitability, 384 385 Web sites, 45 who benefits, 385 economy digital technology, 12 13 information technology industry’s effect, 500 EDGE (Enhanced Data rates for GSM Evolution), 327 EDI (Electronic Data Interchange), 569 editing linear, 456 nonlinear, 456 video, 456 457 EDS (Electronic Data Systems), 497, 542 education for computer professionals, 514 515 educational applications of computers, 290 291 educational software, 140 141 EEPROM (electronically erasable programmable read-only memory), 74 75 e-garbage, 106 107 Eiffel, 679, 711 Eisenhower, Dwight, 109 EISs (executive information systems), 562 Elastic Compute Cloud, 335 Electrical Numerical Integrator And Calculator (ENIAC), 108, 109, 490, 491 Electronic Communications Privacy Act, 408 Electronic Data Interchange (EDI), 569 Electronic Data Systems (EDS), 497, 542 Electronic Recording Machine-Accounting (ERMA), 348 electronic wallets, 390 391 electronically erasable programmable read-only memory (EEPROM), 74 75 Electronics Communications Privacy Act, 524 electronics recycling firms, 106 e-mail, 6, 392 399 access, 392 accounts, 392 activities, 393 attachments, 393 394 e-mail client software, 399 e-mail systems, 397 features, 395 forwarding, 393 HTML, 395 IMAP, 397, 398 interception, 408 messages, 392 netiquette, 396 397 phishing, 37, 594 595 POP, 397, 398, 399 privacy, 408 409 security. See e-mail security spam. See spam transferring images from digital cameras, 432 Web-based, 397, 398, 408, 545 e-mail accounts, 392 e-mail attachments, 393 e-mail authentication, 403 404 e-mail client software, 398, 399 e-mail messages, 392 e-mail security phishing, 405, 594 595 privacy, 408 409 spam, 403 404 e-mail servers, 397 e-mail systems, 397 employees e-mail privacy, 408, 409 use of work computer for personal activities, 527 528 work area safety. See radiation risks; work area safety employment. See computer professionals eMule, 529 encapsulation, 712 encryption databases, 654 655 definition, 285 operation, 285 public key, 286 287 strong, 285 286 symmetric key, 286 weak, 285 wireless. See wireless encryption end-user license agreements (EULAs), 148 end-user piracy, 179 Enhanced Copy Protection (XCP), 466 Enhanced Data rates for GSM Evolution (EDGE), 327 ENIAC (Electrical Numerical Integrator And Calculator), 108, 109, 490, 491 Enterprise Application Integration (EAI), 569 enterprise information systems, 559 Enterprise Resource Planning (ERP), 569 entertainment software, 141 142 787 INDEX entity-relationship diagrams (ERDs), 616 Epinions.com, 545 equipment manufacturers, 498 Eraser, 123 ERDs (entity-relationship diagrams), 616 ergonomics, 537, 731 ERMA (Electronic Recording Machine-Accounting), 348 ERP (Enterprise Resource Planning), 569 error(s) logic, 685 runtime, 685 syntax, 685 error messages, verbose, 724 Ethernet, 258 264 equipment, 260 262 operation, 258 259 popularity, 259 setup, 262 264 speed, 259, 261 262 standards, 259 Ethernet adapters, 261 ethical decision making, 529 532 codes of ethics, 530 532 process, 529 530 ethics. See professional ethics EULAs (end-user license agreements), 148 European Convention on Human Rights, 10 EV-DO (Evolution Data Optimized), 327 event(s), 684 event-driven paradigm, 679, 685 event-handling code, 684 EverQuest, 142 Evolution Data Optimized (EV-DO), 327 exabyte, 26 exception reports, 561 executable files, 152 self-installing, 157 executive dashboard software, 613 executive information systems (EISs), 562 expansion bus, 94 expansion cards, 95 expansion ports, 95 expansion slots, 95 expert system(s), 564 565 declarative languages, 722 knowledge-based systems, 564 565 expert system shell, 564 Extended ASCII, 24 Extended Binary Coded Decimal Interchange Code (EBCDIC), 25 eXtended Graphics Array (XGA), 91 external entities, 572 external information, 559 eye strain, 538 539 F fabric design and manufacturing, 410 Facebook, 6, 361 facts, declarative paradigm, 713 fair use, 472 473 Fair Use Doctrine, 524 FairPlay, 470 fake Web sites, 405 406 fans, maintenance, 102 farming, computers in, 731 732 fashion industry, 410 411 FAT (File Allocation Table), 219 FAT32, 219 FCC (Federal Communications Commission), information technology industry regulation, 508 FCS (Future Combat Systems) network, 109 feature creep, 582 Federal Communications Commission (FCC), information technology industry regulation, 508 Federal Trade Commission (FTC), information technology industry regulation, 508 FedEx, 610 field(s), databases, 134, 615, 633 637 updating, 650 field format, 636 field names, 615 field validation rules, 636 fifth-generation languages, 678 file(s), 15, 204 211 ASCII, 682 dates, 206 definition, 204 deleting, 220 designating location, 205 directories, 206 disk partitions, 205 executable. See executable files flat, 614 616 folders, 206 formats. See file formats fragmented, 221 management. See file management names, 204 205 number required by software packages, 153 opening, 76 quarantined, 169 saving, 76 sharing on LANs, 276 278 size. See file size structured, 614 undeleting, 221 unstructured, 614 unzipping, 156 157 zipped, 156 157 File Allocation Table (FAT), 219 file compression utilities, 439 file date, 206 file extensions, 152, 204 file formats, 207, 208 file formats, 207 211 bitmap graphics, 442 443 common, 208 container formats, 457 converting, 210 211 digital audio, 424 digital video, 462 463 inability to open some files, 209 210 native, 209 portable audio players, 425 426 vector graphics on Web, 448 video files, 456, 457 Web browsers, 366 Web videos, 460 file headers, 207 file management, 212 221 application-based, 212 213 file management utilities, 214, 216 217 metaphors, 215 physical file storage, 218 221 tips, 217 218 Windows Explorer, 216 217 file management utilities, 214, 216 217 file names, 204 205 characters, 205 file-naming conventions, 204 reserved words, 205 file servers, 249, 278 home networks, 278 LANs, 278 setup, 278 file sharing. See P2P file sharing File Shredder 2, 123 file shredder software, 220 file size, 206 color depth, 436 image resolution, 433 file specifications, 206 788 file synchronization, 224 file systems, 219 file tags, 212 File Transfer Protocol. See FTP (File Transfer Protocol) file-encryption software, 122 file-naming conventions, 204 film, computer technology, 474 475 filter(s), DSL, 315 filtering software, 122 fingerprinting, 234 Firefox, 365 firewalls, 342 FireWire (IEEE 1394) ports, 95, 96 first-generation computers, 491 492 first-generation languages, 677 Fitz, 8 fixed disks. See hard disk(s); hard disk drives fixed Internet access, 311, 312 321 cable Internet service, 316 317, 321 dedicated lines, 314, 321 dial-up connections, 312 313, 321 DSL, 314 315, 321 fixed wireless Internet service, 320, 321 ISDN, 314, 321 limitations, 322 323 satellite Internet service, 318 319, 321 fixed wireless Internet service, 320, 321 fixed-length fields, 615 Flash cookies, 402 Flash format, vector graphics, 448 flash memory. See solid state storage Flash Video format, 457 flat files, 614 616 flex-forward posture, 540 floppy disks, 80 floppy drives, comparison with other storage technologies, 87 flowcharts, 692 693 Fodors.com, 545 folders, 206 font(s), 127 font styles, 127 footers, 128 Force XXI Battle Command Brigade and Below systems, 108 forensics, computer, 235 forgotten passwords, 35 help remembering, 40 41 INDEX form design grids, 683 form factor, 17, 58 formal methods, secure software development, 725 format, fields, 636 format(s), files. See file formats format shifting, 465 fair use, 472 formatting disks, 218 documents, 127 129 formula(s), worksheets, 131 Formula Translator (Fortran), 493, 677, 679, 689, 700 formulating searches, 378 380 advanced searches, 380 Boolean operators, 379 380 search terms, 378 tips, 379 FORTH, 700 Fortran (Formula Translator), 493, 677, 679, 689, 700 forwarding e-mail, 393 Fourth Amendment, 11 fourth-generation computers, 494 fourth-generation languages, 678 fragmented files, 221 frame(s), documents, 129 frame rate, digital video, 456 freedom digital technology, 10 freedom of expression, 10. See also censorship freeware, 150 Frommers.com, 545 front side bus (FSB), 68 FTC (Federal Trade Commission), information technology industry regulation, 508 FTP (File Transfer Protocol), 305 accessing FTP servers, 336 337 anonymous, 337 operation, 336 FTP clients, 336 FTP servers, 336 accessing, 336 337 full backups, 227 full system backups, 226 fully justified alignment, 128 functional paradigm, 679, 713 functions, 131, 696 Future Combat Systems (FCS) network, 109 fuzzy logic, 564 G gadgets, 123 Gaeta, John, 475 game software, 141 142 game systems, 61 Gantt charts, 570, 571 Gates, Bill, 233, 495 gateways, 251 Gb (gigabit), 26 GB (gigabyte), 26 Gbit (gigabit), 26 GByte (gigabyte), 26 GDSs (global distribution systems), 544 545 General Public License (GPL), 151 geographic information systems (GISs), 733 GHz (gigahertz), 67 GIF (Graphics Interchange Format), 442, 443 animated, 448 giga-, definition, 26 gigabit (Gb or Gbit), 26 gigabyte (GB or GByte), 26 gigahertz (GHz), 67 GISs (geographic information systems), 733 global distribution systems (GDSs), 544 545 global positioning system (GPS), 42, 599 global updates, 650 globalization, 12 13 Gmail, 545 GNU, 179 goals, Prolog, 715 716 Google, 499 e-mail authentication, 403 404 Internet censorship tools, 347 IPO, 501 Google Maps, 545 GOTO command, 696 government regulation, information technology industry, 508 509 GPL (General Public License), 151 GPS (global positioning system), 42, 599 GPUs (graphics processing units), 91 gradients, 447 graduate degrees, computer-related, 515 Gralnick, Jeff, 173 grammar checkers, 127 Gramm-Leach-Bliley Act, 524, 657 graphical elements, documents, 129 graphical user interfaces (GUIs), 189 192 basic elements, 189 190 menus and dialog boxes, 190 191 similarities, 192 graphics bitmap. See bitmap graphics 789 INDEX definition, 137 specifying for Web pages, 370 3-D, 449 451 vector. See vector graphics graphics cards, 91 Graphics Interchange Format. See GIF (Graphics Interchange Format) graphics processing units (GPUs), 91 graphics software, 137 138 CAD software, 138 drawing software, 137 paint software, 137 photo editing software, 137 presentation software, 138 3-D, 137 grayscale palettes, 438 Green v. America Online, 524 grid computing systems, 334 335 groupware, 121 GUIs. See graphical user interfaces (GUIs) H hackers, 36 methods used by, 340 345 hacking, 232 233 ethical issues, 528 handheld computers, 19 handheld devices, 19 20 accessing Internet, 328 operating systems, 202 203 handheld operating systems, 202 203 handshaking, 252 hard disk(s) access times, 79 backup device, 223 RAM versus storage on, 71 hard disk controllers, 79 hard disk drives, 57 comparison with other storage technologies, 87 disadvantages, 80 multiple, 80 operation, 78 79 popularity, 78 technologies, 79 hard disk platters, 78 79 hardware, 54 109 buying. See buying hardware computer systems, 56 57 desktop and portable computers, 58 59 home, game, and small business systems, 60 61 information systems, 576 577 input devices, 88 89. See also specific input devices installing peripheral devices, 94 97 memory. See memory microprocessors. See microprocessor(s) output devices, 90 94. See also specific output devices repair, 105 security. See hardware security sharing on LANs, 275, 278 280 storage devices, 76 87. See also specific storage devices troubleshooting, 103 104 hardware breakdowns, information system data vulnerability, 590 hardware security, 98 105 anti-theft devices, 98 99 battery backup, 100 maintenance, 101 103 surge protection, 99 100 troubleshooting and repair, 103 105 Harvard Mark I, 490, 491 hash values, 157 Haskell, 679, 713 HCI (Human-Computer Interaction), 731 HDCP (High-bandwidth Digital Content Protection), 466 HDMI (High-Definition Multimedia Interface) ports, 95, 96 HDSL (high-rate DSL), 314 HDTV circuitry, 90 head crashes, 80 headers, 128 health care industry, computers in, 662 663 Health Insurance Portability and Accountability Act, 524, 657, 663 help desk, 588 helper applications, 367 hertz (Hz), 251 Hewlett-Packard, 493, 499 market share, 504 market tier, 505 Hewlett-Packard iPAQ, 19 hierarchical databases, 617 High-bandwidth Digital Content Protection (HDCP), 466 High-Definition Multimedia Interface (HDMI) ports, 95, 96 high-level languages, 676 677 high-rate DSL (HDSL), 314 High-Speed Uplink Packet Access (HSUPA), 327 HISs (hospital information systems), 662 Hitachi, 494, 498 Hitler, Adolf, 489 Hoff, Ted, 494 Hollerith, Herman, 488 489 Hollerith Tabulating Machine, 488 home computers, 60 Homeland Security Act, 524 HomePNA (HPNA), 257 258 Honeywell, 492 horizontal market software, 142 hospital information systems (HISs), 662 Hotmail, 545 hot-plugging, 97 hotspots, Wi-Fi, 323 324 hover ads, 385 HPNA (HomePNA), 257 258 HSUPA (High-Speed Uplink Packet Access), 327 HTML (Hypertext Markup Language), 362 363 e-mail, 395 HTML conversion utilities, 369 HTML documents, 362 HTML forms, 371 HTML resumes, 518 HTML scripts, 371 373 client-side, 372 server-side, 372 HTML tags, 362 363, 370 HTTP (Hypertext Transfer Protocol), 305, 364 365 methods, 364 HTTP status codes, 365 human errors, information system data vulnerability, 591 Human Factors InfoWeb, 731 Human-Computer Interaction (HCI), 731 Hurricane Katrina, 590 hyperlink data type, 635 hypertext, 360 hypertext links, 361 Hypertext Markup Language. See HTML (Hypertext Markup Language) Hypertext Transfer Protocol. See HTTP (Hypertext Transfer Protocol) Hz (hertz), 251 I IAFIS (Integrated Automated Fingerprint Identification System), 234 IBM activities, 498 Automatic Sequence Controlled Calculator (ASCC), 490 competition, 489 direct sales, 507 early computers, 492 founding, 489 790 IBM 360, 493 IBM AS/400, 493 IBM PC, 495 IBM PC XT, 495 location, 499 market tier, 505 operating systems, 492 493 Roadrunner computer, 18 servers, 18 IBM-compatible computers, 495 IC(s) (integrated circuits), 27 ICANN (Internet Corporation for Assigned Names and Numbers), 309 ICCP (Institute for Certification of Computing Professionals), 516 icons. See also graphics GUIs, 189 IDE (integrated development environment), 686 687 identity theft, 36, 232 corporate, 594 595 IE (Internet Explorer), 365 IEEE 1394 (FireWire) ports, 95, 96 IEEE Standards Association, 509 IM. See instant messaging (IM) image(s). See also digital video; graphics compression. See image compression digital, 8 digital data representation, 25 DVD, 462 resolution. See image resolution storage using bits, 25 image compression, 439 441 lossless, 439 lossy, 439, 440 process, 440 441 image editing software, 137 image resolution, 433 435 changing image size, 435 file size, 433 image quality, 433 physical size of image, 434 screen display, 434 435 specifying image size, 434 IMAP (Internet Messaging Access Protocol), 397, 398 imperative paradigms, 689 implementation phase of SDLC, 583 586 activities, 583 application testing, 584 conversion and cutover, 585 586 software customization, 583 584 system documentation, 585 INDEX training, 585 unit documentation, 585 in-betweening, 474 increasing productivity, document production software, 129 incremental backups, 228 indexes, database, 639 indexing, sorting compared, 637 638 India, offshoring, 542 inference engines, 564 information data compared, 22 theft, 232 information engineering methodology, 570 information systems, 514, 554 599 corporate data security. See corporate data security data security, 592 594 decision support systems, 562 563 definition, 556 design. See design phase of SDLC expert systems, 564 565 maintenance phase, 587 589 management information systems, 561 562 neural networks, 565 online voting, 596 597 in organizations, 556 559 reasons for developing, 568 569 SDLC. See system development life cycle (SDLC); specific phases of cycle systems analysis. See systems analysis transaction processing systems, 559 560 users, 557 uses, 558 559 information systems (IS) department, 511 information technology, 514 515 information technology industry, 497 509 careers. See computer professionals companies included in, 497 498 definition, 497 dot coms, 499, 501 effect on economy, 500 factors accounting for success, 501 information sources, 500 market share, 504 505 market tiers, 505 marketing channels, 506 508 offshoring, 500, 542 543 outsourcing, 499 500, 542 product development, 502 504 regulation, 508 509 Silicon Valley, 499 infrared light, 265 infrared ports, transferring images from digital cameras, 432 inheritance, 704 705 ink jet printers, 92, 94 The Inmates Are Running the Asylum (Cooper), 730 731 input, 15 input devices, 88 89. See also specific input devices INSERT keyword, 646 installing peripheral devices, 94 97 software. See installing software updates, 160 installing software, 152 160 local applications, 154 157 multiple files, 153 portable software, 158 software updates, 159 160 Web applications, 158 159 instant messaging (IM), 330 331 security, 331 setting up, 331 instantiation, Prolog, 717 718 Institute for Certification of Computing Professionals (ICCP), 516 instruction cycle, 32 instruction set, 30 integer data type, 634, 635 Integrated Automated Fingerprint Identification System (IAFIS), 234 integrated circuits (ICs), 27 integrated development environment (IDE), 686 687 Integrated Services Digital Network (ISDN), 314, 321 integration testing, 584 Intel 4004, 494 Intel microprocessors, 70, 494 intellectual property, 11 digital technology, 11 12 interactive DVD menus, 461 462 internal information, 559 International Business Machines. See IBM Internet, 6, 300 349 access, 57 addresses, 305 307 censorship, 10, 346 347 connection speed, 309 311 domains, 308 309 infrastructure, 303 304 791 INDEX job hunting, 517 marketing, 44 45 netiquette, 396 397 origins, 302 popularity, 302 protocols. See communications protocols putting Web pages on, 371 security. See Internet security; Web security size, 302 surfing anonymously, 402 403 Web versus, 360 Internet access, 57 Internet backbone, 303 Internet Corporation for Assigned Names and Numbers (ICANN), 309 Internet Explorer (IE), 143, 365 Internet Messaging Access Protocol (IMAP), 397, 398 Internet piracy, 179 Internet Protocol (IP), 305 Internet Relay Chat (IRC), 305 Internet security, 340 345. See also Web security intrusion attempts, 340 341 NAT, 344 345 routers, 343 345 securing ports, 342 343 VPNs, 345 Internet service(s), 330 339 file sharing, 337 339 FTP, 336 337 grid computing, 334 335 real-time messaging, 330 331 VoIP, 332 333 Internet service providers (ISPs), 303 304 interpreters, 30 intrusions, 340 IP (Internet Protocol), 305 IP addresses, 255, 305 306 dynamic, 306 307 private, 344 routable, 344 static, 306 iPhone, 9, 19 iPhone OS X, 203 iPod, 9, 20 IPv4, 305 IPv6, 305 Iran, Internet censorship, 347 IRC (Internet Relay Chat), 305 IS (information systems) department, 511 ISDN (Integrated Services Digital Network), 314, 321 ISDN terminal adapters, 314 ISPs (Internet service providers), 303 304 iterations, 698 iterative SDLC, 566 iTunes, 471 J JAD (joint application design), 567 Java, 679, 711, 712 game development, 687 program operation, 710 711 Java applets, 372, 373 The Ja Singer (film), 474 JIT (Just In Time), 569 job(s). See computer professionals job hunting, 517 job listings, 520 522 job search agents, 521 Jobs, Steve, 233, 495 Johnson, Leigh, 475 JOIN keyword, 646, 651 652 joining tables, 651 652 joint application design (JAD), 567 Joint Photographic Experts Group (JPEG) format, 442, 443 Jolson, Al, 474 journalism, 172 173 joysticks, 89 JPEG (Joint Photographic Experts Group) format, 442, 443 jumpdrives. See USB flash drives Just In Time (JIT), 569 K Karat, Clare-Marie, 730 731 Kay, Alan, 711 Kayak.com, 545 Kb (kilobit), 26 KB (kilobyte), 26 Kbit (kilobit), 26 KByte (kilobyte), 26 Kemper Insurance, 593 Kensington Security Slot, 98 kernel, 192 key frames, 458 keyboards, 57 cleaning, 101 design, 88 maintenance, 101 keychain drives. See USB flash drives keyloggers, 163 KeyPass, 41 keystroke logging, 37 keyword(s) computer programming, 676 SQL, 646 647 keyword stuffing, 378 Kilby, Jack, 493 kilo-, definition, 26 kilobit (Kb or Kbit), 26 kilobyte (KB or KByte), 26 knowledge base, 564 knowledge engineering, 564 known information, 680 681 Kubrick, Stanley, 474 Kurzweil, Ray, 662 L labels in worksheets, 130 LAN(s) (local area networks), 247, 274 281 accessing network resources, 276 advantages, 274 275 connecting to, 248 disadvantages, 275 file servers, 278 LAN parties, 280 security, 282 sharing printers, 278 280 specifying resources that can bee shared, 277 standards, 247 troubleshooting, 280 281 Wi-Fi. See Wi-Fi LAN jacking, 282 LAN parties, 280 lands, optical storage devices, 81 Lands’ End, 41 laser printers, 92, 94 latency, 309 311 laws computer crimes, penalties, 232 233 computer forensics, 235 computer use in enforcement, 234 235 professional ethics related, 523, 524 protecting databases, 656 657 Lawson, Jeff, 335 LCDs (liquid crystal displays), 90 radiation emissions, 535 leading, 128 leech(es), 339 leechers, 339 Leibniz, Gottfried Wilhelm von, 487 Leibniz Calculator, 487 Lenovo, 504 Level 1 cache, 68 Level 2 cache, 68 LexisNexis, 497 license agreements. See software licenses licensing, wireless networks, 266 LIFEPAK 12, 663 line spacing, 128 linear editing, 456 link(s) hypertext, 361 networks, 251 link popularity, 377 792 Linux, 201 Linux distributions, 201 Linux platform, 64 liquid crystal displays (LCDs). See LCDs (liquid crystal displays) LISP (LISt Processing), 679, 713 loading data, 76 local applications definition, 154 installing, 154 157 local area networks. See LAN(s) (local area networks) local shared objects, 402 location-enabled (location-aware) devices, 42 logic errors, 685 logical data type, 634, 635 logical storage models, 215 LoJack, 99 loops, 698 The Lord of the Rings The Two Towers (film), 474 lossless compression, 439 lossy compression, 439, 440 low-level languages, 676, 677 Lucas, George, 474 M Mac(s), 64 MAC addresses, 254 Mac OS, 197 200 backward compatibility, 198 199 dual boot, 199 evolution, 198 resource fork, 200 strengths, 198 versions, 198 virtual machine, 199 200 weaknesses, 200 Mac platform, 64 machine code, 30 machine languages, 30 31, 677 magazines, information on software, 145 magnetic storage, 78 80 tape, comparison with other storage technologies, 87 mail merge, 129 mail order, 507 mainframe computers, 16, 18 maintenance computer screens, 101 fans, 102 keyboards, 101 optical drives, 103 maintenance phase of SDLC, 587 589 duration, 588 589 quality-of-service metrics, 587 responsibility, 588 user support, 588 INDEX malicious software. See malware malware activities, 164 avoiding, 165 blended threats, 162 bots, 164 protection. See security software spyware, 164 symptoms of infection, 165 Trojan horses, 163 viruses, 163 Windows susceptibility, 196 worms, 163 management information systems (MISs), 561 562 TPSs versus, 562 management information systems (MIS) department, 511 managers, 557 Manitoba Milk Revenue Analyzer, 731 MANs (metropolitan area networks), 247 manual calculators, 486 487 manufacturer direct, 507 manufacturer’s suggested retail price (MSRP), 503 Manufacturing Resource Planning (MRP), 569 manufacturing technicians, 512 many-to-many relationships, 616 MapQuest, 545 Mark-8, 494 market share, 504 505 market tiers, 505 marketing, 44 45 marketing channels, 506 508 markup language, 362 mass-mailing worms, 163 Master File Table (MFT), 219, 220 master’s degrees, computer-related, 515 mathematical modeling software, 133 mathematical operators, 131 The Matrix (film), 475 The Matrix Reloaded (film), 475 The Matrix Revolutions (film), 475 Mauchly, John W., 490 Mb (megabit), 26 MB (megabyte), 26 Mbit (megabit), 26 MByte (megabyte), 26 McAfee Internet Security Suite, 167 McAfee security software, 144 McAfee VirusScan Plus, 122 McKay, John, 233 MCSE (Microsoft Certified Systems Engineer) certification, 516 mean time between failures (MTBF), 590 mechanical calculators, 487 489 media transfer, transferring images from digital cameras, 432 medicine, computers in, 662 663 MEDLINE, 662 MedlinePlus, 663 mega-, definition, 26 megabit (Mb or Mbit), 26 megabyte (MB or MByte), 26 megahertz (MHz), 67 megapixels, 433 memo data type, 634, 635 memory, 15 comparison of types, 75 EEPROM, 74 75 operating system management, 187 printers, 94 RAM. See random access memory (RAM) ROM, 73 virtual, 72 memory leaks, 187 menu(s), 190 191 interactive DVDs, 461 462 menu bar, 190 mesh topology, 250 message(s) e-mail. See e-mail method activation, 706 message headers, 392 meta keywords, 378 metafiles, 447 metasearch engines, 380 metasearch tools, 521 Metcalfe, Bob, 246 methods, 705 708 activation, 706 classes related, 706 coding, 705 definition, 705 functions, 705 polymorphism, 707 708 metropolitan area networks (MANs), 247 Mexico, offshoring, 542 MFT (Master File Table), 219, 220 MGM v. Gorkster, 524 MHz (megahertz), 67 MICR technology, 348 Micro Instrumentation and Telemetry Systems (MITS), 494 microchips, 27 microcomputers, 16 793 INDEX microcontrollers, 20 21 microprocessor(s), 15, 67 70 cache size, 68 choosing, 70 cycles, 67 68 definition, 67 effects on computer industry, 494 FSB, 68 instruction processing, 69 instruction set, 69 logic, 31 33 multi-core, 69 overclocking, 70 popular, 70 specifications, 67, 68 speed, 67 68, 70 word size, 68 microprocessor clock, 67 68 Microsoft Access, 625 Internet censorship tools, 347 Internet Explorer, 143, 365 location, 499 MS-DOS, 495 offshoring, 500 XNA framework, 687 Microsoft Certified Systems Engineer (MCSE) certification, 516 Microsoft Office 2007 Professional, 144 Microsoft Office Specialist certification, 516 Microsoft Windows, 194 196 applications and utilities included with, 143 bugs allowing unauthorized access, 591 evolution, 195 Network and Sharing Center, 306 strengths, 195 versions, 194, 196 weaknesses, 195 196 Windows Explorer, 143, 216 217 Windows Firewall, 143 Windows Media Audio (WMA) format, 424 Windows Media DRM, 470 471 Windows Media Player, 143 Windows Mobile OS, 203 Windows Movie Maker, 143 Windows Photo Gallery, 143 Windows Registry, 154, 229 microwaves, 265 MIDI (Musical Instrument Digital Interface), 426 427 advantages and disadvantages, 427 uses, 427 MIDI sequences, 426 MIDI sequencing software, 139 military computer use, 108 109 MIME (Multi-Purpose Internet Mail Extensions), 393 MIMO (multiple-input multiple-output) technology, 268 mini cases, 58 minicomputers, 16, 493 mini-laptops, 59 MIS(s). See management information systems (MISs) MIS (management information systems) department, 511 miscommunication, offshoring, 542 mission(s), 556 mission statements, 556 Mitnick, Kevin, 232 MITS (Micro Instrumentation and Telemetry Systems), 494 MITS Altair, 494 495 MLA style for citations, 382 mobile broadband, 327 mobile broadband-enabled computers, 329 mobile Internet access, 311 mobile learning, 291 mobile WiMAX, 324 mod(s), 65 66 modems, 304 analog, digital phone service, 313 cable, 317 DSL, 315 satellite, 319 voiceband, 312 313 modified waterfall SDLC, 566 money management software, 133 monochrome bitmaps, 436 Monsters Inc. (film), 474, 475 Moodle, 291 morality, censorship, 346 morphing, 474 Morris, Robert, 232 motion sensor alarms, 99 Motorola, 494 mouse, 57 operation, 88 optical, 88 movie downloads, DRM, 471 Moving Pictures Experts Group (MPEG) format, 457, 458 Mozilla, 365 MP3 format, 210, 424 MP3 players, 20. See also iPod MPEG (Moving Pictures Experts Group) format, 457, 458 MPEG-1 Layer 3 format, 424 MPEG-2 codec, 458 MPEG-2 video clips, 462 MPR standards, 535 MRP (Manufacturing Resource Planning), 569 MS-DOS, 495 MSRP (manufacturer’s suggested retail price), 503 MTBF (mean time between failures), 590 multi-core processors, 69 MultiMedia, 84 multimedia, Web portfolios, 519 520 multiparadigm languages, 679 multiplayer games, 142 multiple-input multiple-output (MIMO) technology, 268 multiple-user licenses, 147 multiprocessing, 186 Multi-Purpose Internet Mail Extensions (MIME), 393 multitasking, 186 multithreading, 186 multiuser operating systems, 187 music, digital. See digital music music software, 139 Musical Instrument Digital Interface. See MIDI (Musical Instrument Digital Interface) MyDoom worm, 591 MySpace, 361 N NAI (Network Advertising Initiative), 401 nanoseconds, 73 NAP(s) (network access points), 303 Napier, John, 487 Napier’s Bones, 487 narrowband, 251 NAS (network attached storage), 248 NAT (Network Address Translation), 344 345 National Cash Register (NCR), 489 National Crime Information Center (NCIC), 234 national ID cards, 660 661 National Science Foundation (NSF), 6, 302 native file format, 209 native resolution, 539 natural disasters, information system data vulnerability, 590 natural language queries, 136 794 NCIC (National Crime Information Center), 234 NCR (National Cash Register), 489 Net Nanny, 122 netbooks, 59 Netflix, 471 netiquette, 396 397 Netscape Navigator, 365 network(s), 244 291 classifications, 246 247 clients, 249 communications protocols. See communications protocols data travel over, 252 253 HomePNA, 257 258 interconnecting, 250 251 LANs. See LAN(s) (local area networks) links, 251 MANs, 247 network devices, 248 PANs, 246 peers, 249 physical topology, 250 251 powerline, 258 purposes, 246 security. See network security servers, 249 WANs, 247 wired. See wired networks wireless. See Wi-Fi; wireless network(s) network access points (NAPs), 303 network adapters. See network interface cards (NICs) Network Address Translation (NAT), 344 345 network administrators, 511 Network Advertising Initiative (NAI), 401 network attached storage (NAS), 248 network cards. See network interface cards (NICs) network circuitry, 57 network databases, 617 network devices, 248 ISPs, 303 304 network hubs, 261 network interface cards (NICs), 248 network resources accessing on LANs, 276 shared, 274. See also specific shared resources network routers, 261 configuring, 264 network security, 282 287 encryption. See encryption INDEX LANs, 282 Wi-Fi, 282 284 network servers, backup device, 223 network service providers (NSPs), 303 network specialists, 511 network switches, 261 network technology, information systems, 577 networkability, printers, 94 networked peripherals, 248 networking, certification, 516 neural networks, 565 New Technology File System (NTFS), 219 news gathering, 173 Newton, 9 NICs (network interface cards), 248 nodes, 248 connecting in networks, 251 non-executing zip files, 157 nonlinear editing, 456 nonprofit organizations, definition, 556 non-volatile data, 84 normalization, databases, 637 638 Northwest Airlines, 545 Norton AntiVirus software, 122, 162 Norton Internet Security, 167 Norton SystemWorks, 122, 144 NOT operator, 380 notation software, 139 notebook computers, 59 optimal placement, 538 Notepad, 143, 682 Noyce, Robert, 493 NSF (National Science Foundation), 302 NSPs (network service providers), 303 NTFS (New Technology File System), 219 NTSC circuitry, 90 number(s), digital data representation, 23 numbering pages, 128 numeric data, 23 O object(s), 702 classes compared, 702 definition, 702 object code, 30 object databases, 620 object-oriented analysis and design, documentation tools, 573 574 object-oriented database(s), 620 object-oriented database management systems (ODBMSs), 625 object-oriented languages applications suitable for, 712 currently popular, 711 712 origins, 711 object-oriented methodology, 570 object-oriented paradigm, 679 advantages and disadvantages, 712 object-oriented programming, 702 712 coding classes, 704 defining classes, 703 definition, 702 inheritance, 704 705 methods, 705 708 object-oriented languages, 711 712 objects versus classes, 702 polymorphism, 707 708 program structure, 709 711 object-relational databases, 621 O’Brien, Willis, 474 octets, 255, 305 306 ODBMSs (object-oriented database management systems), 625 Office Depot, 506 OfficeMax, 506 offshoring, 500, 542 543 OLAP (online analytical processing), 613 OLEDs (organic light emitting diodes), 90 radiation emissions, 535 OLTP (online transaction processing) systems, 560 Omega Engineering Corporation, 591 Omidyar, Pierre, 388 one-time-use credit cards, 390 one-to-many relationships, 616 one-to-one relationships, 616 online analytical processing (OLAP), 613 online auctions, 388 making payments, 389 391 online banking services, 349 online job banks, 520 522 online job databases, 519 online music stores, 8 online payment, 389 391 electronic wallets, 390 391 one-time-use credit cards, 390 person-to-person, 390 online processing, 560 795 INDEX online resumes, 518 519 online shopping, 386 387 making payments, 389 391 online shopping carts, 386 387 online social networks, 6 7 online transaction processing (OLTP) systems, 560 online voting, 596 597 op codes, 31 open source projects, 12 open source software, 150 151 security software, 167 opening files, 76 Opera, 366 operands, 31 operating environments, 195 operating systems (OSs), 16, 184 203 application software versus, 184 applications and utilities included with, 143 144 boot process, 192 193 definition, 184 desktop, 188 DOS, 202 early, 492 493 effects on user interfaces, 189 handheld, 202 203 Linux, 202 Mac OS, 197 200 memory management, 187 multiuser, 187 peripheral devices, 187 processor resource management, 186 server, 187 188 single-user, 187 system utilities, 188 tasks, 185 UNIX, 201 user interfaces. See user interfaces Windows, 194 196 operational planning, 557 operator codes, 677 optical drives, 57 creating video DVDs, 461 maintenance, 103 optical mouse, 88 optical storage. See also Blu-ray; CD(s) (compact discs); DVD(s) (digital video discs or digital versatile discs) definition, 81 opt-in mailing lists, 45 OR, SQL queries, 648, 649 OR operator, 380 Oracle, 499 offshoring, 500 Orbitz.com, 545 organic light emitting diodes. See OLEDs (organic light emitting diodes) organization(s) definition, 556 information systems. See information systems mission statements, 556 nonprofit, definition, 556 threats and opportunities affecting, 568 569 organizational charts, 557 OSs. See operating systems (OSs) Oughtred, William, 487 output, 15 outsourcing, 499 500, 542 overclocking, 70 Overlake Hospital (Bellevue, Washington), 662 overloading, 707 708 Overstock.com, 388 P Pacino, Al, 475 packet(s), 253 Packet Internet Groper (Ping), 310 packet switching, 253 254 packet writing, 219 page layout, 128 page numbering, 128 Paint, 143 paint software, 137, 143, 430 Palm OS, 202 Palm Pre, 19 PANs (personal area networks), 246 paragraph alignment, 128 paragraph style, 128 parallel conversion, 586 parallel processing, 69 parameters computer programming, 676 SQL, 647 particle renderers, 687 Pascal, 679, 700 Blaise, 487 Pascaline, 487 password(s), 34 41 authentication protocols, 34 36 definition, 35 forgetting, 35 help remembering, 40 41 managing, 39 PINs compared, 35 36 protecting, 38 39 secure, 38 41 theft, 36 37 wireless router, changing, 272 password managers, 40 41 patches, 728 software, 159 path(s), 206 pathfinder algorithms, 687 Patrick, Robert, 474 payment, online, 389 391 Payment Card Industry (PCI) Data Security Standards, 658 PC(s). See personal computer(s) (PCs) PC Doc Pro, 122 PC platform, 64 PC-DOS, 495 PCI (Payment Card Industry) Data Security Standards, 658 PCL (Printer Control Language), 94 PCX format, 442, 443 PDA(s) (personal digital assistants), 19 educational applications, 290 291 PDA video, 452, 459 PDF files, 210 peer-to-peer mode, 249 pen drives. See USB flash drives Penenberg, Adam L., 232 peripheral devices, 56. See also display devices; input devices; printer(s); storage; specific peripheral devices device drivers, 124 operating system management, 187 software for installation, 97 Perot, H. Ross, 542 Persistent Identification Element (PIE) system, 402 personal area networks (PANs), 246 personal computer(s) (PCs), 17, 64 definition, 16 invention, 494 495 success, 495 496 personal computer systems, 56 57 components, 56 57 personal digital assistants (PDAs), 19 personal finance software, 133 personal identification numbers (PINs), passwords compared, 35 36 person-to-person payments, 390 PERT (Program Evaluation and Review Technique), 570 petabyte, 26 Pfaelzer, Marianne, 232 PGAs (pin grid arrays), 27 PGP (Pretty Good Privacy), 287 pharming, 405 406 phased conversion, 586 Philippines, offshoring, 542 796 phishing, 37, 405, 594 595 phonemes, 428 429 photo editing software, 137 photographs. See graphics physical fitness, 540 physical storage model, 218 221 physical topology, networks, 250 251 piconets, 267 pictures. See graphics PIE (Persistent Identification Element) system, 402 PIECES framework, 569 pilot conversion, 586 Pilot Night Vision Sensors, 108 PIN(s) (personal identification numbers), passwords compared, 35 36 pin grid arrays (PGAs), 27 Ping (Packet Internet Groper), 310 pipelining, 69 pirated software, 147, 170 171 pits, optical storage devices, 81 Pixar, Inc., 8, 475 pixel(s), 90 pixel interpolation, 435 pixelated appearance, 435 PKE (public key encryption), 286 287 PKZIP, 439 PL/1, 679, 700 place shifting, 465 fair use, 472 plaintext, 285 planning phase of SDLC, 567 571 activities, 567 need for new information systems, 568 569 participants, 567 project schedule development, 570 571 project supervision, 567 system development methodology, 570 player software, 425 PlayStation, 17 Plug and Play, 97 plug-ins, 367 PN(s) (processor numbers), 68 PNG (Portable Network Graphics) format, 443 podcasts, 360 361 point size, 127 pointing devices, 88 pointing sticks, 89 polymorphism, 707 708 Pong, 142 POP (Post Office Protocol), 305, 397, 398, 399 INDEX POP servers, 398 pop-up ads, 385 pornography, censorship, 346 port(s) Ethernet, 261 open, detecting, 341 securing, 342 343 software, 309 port probes (port scans), 341 portable audio players, 425 426 file formats, 425 426 popular, 426 portable computers, 59 portable Internet access, 311, 323. See also mobile WiMAX; Wi-Fi portable media players, 20, 21 Portable Network Graphics (PNG) format, 443 portable satellite service, 325 portable software, 158 installing, 158 portable WiMAX, 324 Post Office Protocol (POP), 305, 397, 398, 399 PostScript, 94 power outages, information system data vulnerability, 590 power surges, 99 surge protection, 99 100 powerline networks, 258 PowerPD processors, 494 P2P file sharing, 337 339 BitTorrent, 338 339 precision farming, 733 predicates, 714 predictive analytics, 613 predictive dialers, 44 predictive methodology, 681 premises wiring, 257 presentation software, 138 pre-shared key (PSK), 283 Pretty Good Privacy (PGP), 287 primary key, 634 print journalism, 172 173 print resumes, 518 print servers, 249 print speed, printers, 93 printer(s), 57, 92 94 dot matrix, 92 93, 94 duplex, 93 features, 93 94 ink jet, 92, 94 laser, 92, 94 sharing on LANs, 278 280 Printer Control Language (PCL), 94 privacy database vulnerability, 654 digital technology, 11 ethical issues, 526 online job banks, 521 522 Privacy Directive 95/46/EC, 656 private attributes, 703 private IP addresses, 344 problem statements, 680, 681 procedural languages, 700 701 procedural paradigm, 679 procedural programming, 689 701 algorithms, 689 694 control structure use, 700 repetition control structures, 698 699 selection control structures, 697 sequence control structures, 695 696 sequential execution, 695 procedure(s), 696 procedure handbook, 585 processes, 572 operating systems, 186 processing, 15 processor(s). See microprocessor(s) processor numbers (PNs), 68 product activation, 157 product development, 502 504 hardware product life cycle, 502 503 new products, 502 software product life cycle, 504 product life cycle hardware, 502 503 software, 504 productivity document production software, 129 shared resources on LANs, 274 productivity software, 121 professional ethics, 523 533 career fields, 523 codes of ethics, 530 532 confidentiality issues, 526 527 decision making, 529 532 definition, 523 hacking, 528 importance for IT workers, 525 privacy issues, 526 relationship to laws, 523, 524 responsibility for software quality, 528 529 responsibility for software use, 529 software copyrights as ethical issue, 525 using work computer for personal activities, 527 528 whistleblowing, 532 533 797 INDEX program(s). See computer program(s) program code, 674 675 program editors, 684 685, 685 Program Evaluation and Review Technique (PERT), 570 PROgramming in LOGic. See Prolog (PROgramming in LOGic) programming languages, 29, 676 679 best, 678 679 categories, 676 definition, 676 evolution, 677 678 paradigms, 679 programming paradigms, 679 comparison, 713 programming tools, 686 688 APIs, 687 computer games, 687 688 IDEs, 686 687 SDKs, 686, 687 Project Development Plan, 567 project management software, 142, 571 Project PX, 108 Prolog (PROgramming in LOGic), 678, 679, 713, 714 721 coding facts, 714 715 goals, 715 716 instantiation, 717 718 rules, 718 720 user input, 721 properties, controls, 683 proprietary information, 526 proprietary software, 149 protecting passwords, 38 41 protocol suites, 305 prototypes, 489 490 pseudocode, 692 PSK (pre-shared key), 283 public attributes, 703 public domain software, 149 public key encryption (PKE), 286 287 puzzle games, 141 Q QBE (query by example), 136 QoS (quality of service), 587 quality, software, 528 529 quality assurance specialists, 512 quality of service (QoS), 587 quality-of-service metrics, 587 quarantined files, 169 queries databases, 136. See also formulating searches decision, 562 query by example (QBE), 136 query languages, 136 query processors, 377 Quick Response (QR), 41 QuickTime Movie format, 457 R R (recordable technology), 82 radiation risks, 534 536 radio frequency identification (RFID). See RFID (radio frequency identification) RadioShack, 495, 506 RAM. See random access memory (RAM) random access, 77 random access memory (RAM), 71 73 amount, 72 73 definition, 71 hard-disk storage compared, 71 importance, 71 operation, 72 speed, 73 types, 73 volatility, 72, 192 193 range Bluetooth, 267 HomePNA (HPNA), 257 Wi-Fi, 268 wireless networks, 266 Raskin, Jef, 731 rasterization, 447 RATs (Remote Access Trojans), 163 RAW format, 442, 443 ray tracing, 449 RB (REALbasic), 679 RCA Spectra 70, 493 RDBMSs (relational database management systems), 625 readability formulas, 127 reading data, 76 read-only memory (ROM), 73 read-only technology (ROM), 82 read-write heads, 78 real data type, 634, 635 Real ID Act, 660 661 Real Simple Syndication (RSS), 360 RealAudio format, 424 REALbasic (RB), 679 RealMedia format, 457 real-time messaging systems, 330 331 setting up, 331 record(s), databases, 134, 135, 615 adding, 647 organization, 639 640 record occurrences, 615 record types, 615 recordable technology (R), 82 recovery disks, 229 recovery software, 99 recycling equipment, 106 107 Red Book format, 466, 467 Red Cross, 610 reduced instruction set computing (RISC), 69 reference software, 141 region codes, 468 registers, 31 regulation, information technology industry, 508 509 relational database(s), 618 619 relational database management systems (RDBMSs), 625 relationships databases, 616 databases tracking, 617 many-to-many, 616 one-to-many, 616 one-to-one, 616 relative references, worksheets, 132 remarks, computer programs, 686 Remington Rand, 491, 492 Remote Access Trojans (RATs), 163 rendering, 449, 474, 475 repetition control structures, 698 699 repetitive stress injuries (RSIs), 536 537 report generators, 642 Report Program Generator (RPG), 678, 679 report templates, databases, 642 643 requests for proposal (RFPs), 580, 581 requests for quotations (RFQs), 580 581 reserved words, 205 resolution display devices, 91, 539 images. See image resolution native, 539 printers, 93 resolution dependence, 435 resource(s), 185 management by operating systems, 186 resource fork, Mac OS, 200 response rate, display devices, 90 response time, quality-of-service metrics, 587 restore points, 230 798 restoring data files, 225, 226, 228 229 resumes, 518 519 rewritable technology (RW), 82 RF signals, 265 cell phone emissions, 536 RFID (radio frequency identification) clothing production, warehousing, and shipping, 410 411 inventory management, 610 tracking, 42, 43 RFPs (requests for proposal), 580, 581 RFQs (requests for quotations), 580 581 ribbon, 190 ring topology, 250 RISC (reduced instruction set computing), 69 RJ45 connectors, 262 RLE (run-length encoding), 439 RM video files, 210 Roberts, Ed, 494 RoboForm, 41 robots, construction, 599 role-playing games, 141 ROM. See read-only memory (ROM); read-only technology (ROM) ROM BIOS, 73, 83 root directory, 206 rootkit, 165 routable IP addresses, 344 routers Internet security, 343 345 NAT, 344 345 operation, 343 344 RPG (Report Program Generator), 678, 679 RSA Security Inc., 335 RSIs (repetitive stress injuries), 536 537 RSS (Real Simple Syndication), 360 rules declarative paradigm, 713 714 Prolog, 718 720 run-length encoding (RLE), 439 running application software, 121 runtime errors, 685 Russia, offshoring, 542 RW (rewritable technology), 82 S SABRE (Semi-Automatic Business Research Environment) system, 544 Safari, 366 Safe Mode, 105 INDEX salami shaving, 232 salaries, for information technology industry jobs, 512 sales reps, 512 sampling rate, digital audio, 423 SAR (specific absorption rate), 536 Sarbanes-Oxley Act, 524 Sasser computer worm, 232 233 satellite Internet service, 318 319, 321 equipment needed, 319 operation, 318 speed, 318 satellite modems, 319 satellite news gathering (SNG), 173 Save As dialog box, 213 Save As option, 213 Save option, 213 saving files, 76 Scalable Vector Graphics (SVG), 448 scanners, 431 scheduled reports, 561 Scheme, 679, 713 Schickard, William, 487 Schickard’s Calculator, 487 schools, e-mail privacy policies, 409 SCOTTEVEST, 41 Scratch, 679, 712 screensavers, 123 SD (Secure Digital), 84 SDKs (software development kits), 686, 687 SDLC. See system development life cycle (SDLC) SDRAM, 73 SDSL (symmetric DSL), 314 Search and Replace feature, 127 search engine(s). See Web search engines search engine indexers, 376 search engine sites, search engines compared, 375 search operators, 379 380 search terms, 378 second-generation computers, 492 493 second-generation languages, 677 sectors, 218 secure connections, 389 online payments, 389 Secure Digital (SD), 84 Secure Electronic Registration and Voting Experiment (SERVE), 596, 597 secure HTTP (S-HTTP), 389 secure passwords, 38 41 secure programming, 723 729, 726 attack trees, 726 buffer overflow, 723 724 defensive programming, 726 mitigating vulnerabilities, 728 729 signed code, 727 software development, 725 727 threat modeling, 725 verbose error messages, 724 vulnerability to attack, 723 secure socket layer (SSL), 389 security BitTorrent, 339 cable Internet connections, 316 DRM technologies, 469 electronic wallets, 391 e-mail. See e-mail security hardware. See hardware security IM, 331 networks. See network security person-to-person payments, 390 secure connections for online payment, 389 software. See security software Web. See cookies; Web security Wi-Fi hotspots, 324 wireless networks, 266, 273 security breeches, information system data vulnerability, 591 Security Center, 143 Security+ Certification, 517 Security Peer Review Group (SPRG), 596 597 security software, 162, 167 169 antivirus modules, 167 169 definition, 162 dependability, 169 free, 167 frequency of system scans, 169 keeping up-to-date, 168 malware threats, 162 open source, 167 quarantines, 169 suites, 166 167 security specialists, 511 security suites, 166 167 Security Tracking of Office Property (STOP) plates, 99 sedentary lifestyle, 540 541 seed(s), 339 seeders, 339 SELECT keyword, 646, 648 selection control structures, 697 self-executing zip files, 157 self-installing executable files, 157 799 INDEX Semi-Automatic Business Research Environment (SABRE) system, 544 semiconducting materials, 27 semi-structured problems, 558 559 sequence control structures, 695 696 sequence diagrams, 574 sequential access, 77 sequential execution, 695 serial processing, 69 SERVE (Secure Electronic Registration and Voting Experiment), 596, 597 server(s), 18 application, 249 domain name, 308 e-mail, 397 file. See file servers POP, 398 print, 249 SMTP, 398 Web, 361 server operating systems, 187 188 server-side programs, 628 630 creating, 629 630 server-side scripts, 372 service companies, 498 software engineering, 498 service packs, 159 service set identifiers (SSIDs), 272 273 SETI@home, 7, 334 setup. See installing software setup programs, 154 Shannon, Claude, 252 shared resources, 274. See also specific shared resources shareware, 149 150 sharing printers, LANs, 278 280 shopping, online, 386 387 shopping carts, online, 386 387 shrink-wrap licenses, 147 S-HTTP (secure HTTP), 389 signal(s), corrupted, 253 signal scrambling, 465 signed code, 727 Silicon Valley, 499 Simon, Herbert, 558 Simone (film), 475 Simple Mail Transfer Protocol (SMTP), 305 SIMULA (SIMUlation LAnguage), 679, 711 simulation(s), educational applications, 290 simulation games, 141 SIMUlation LAnguage (SIMULA), 679, 711 Sin City (film), 475 single-user licenses, 147 single-user operating systems, 187 SIPRNet, 108 site licenses, 147 sketches. See graphics skins, 123 Sky Captain and the World of Tomorrow (film), 475 slates, 59 slide rule, 487 small business computers, 61 small-scale integration (SSI), 27 Smalltalk, 679, 711 smart phones, accessing Internet, 328 SmartMedia, 84 smartphones, 20, 21 operating systems, 202 203 smileys, 396 Smith, R. Blair, 544 Smith, R. C., 544 SMTP (Simple Mail Transfer Protocol), 305 SMTP servers, 398 SNG (satellite news gathering), 173 sniffing, 37 social networking sites, 361 sockets, 364 software, 15, 118 173 ad-blocking, 385 anti-spyware, 402 antivirus. See antivirus software application. See application software; specific types of application software backup, 227 boxed, downloading versus, 146 break reminder, 541 buying. See buying software buying computers, 64 categories, 120 commercial, 149 definition, 120 device drivers, 124 drawing, 446 e-mail client, 398, 399 executive dashboard, 613 file shredder, 220 file-encryption, 122 filtering, 122 freeware, 150 groupware, 121 information systems, 578 installing. See installing software LAN parties, 280 local applications, 154 157 malicious. See malware open source, 150 151 paint, 430 peripheral device installation, 97 PGP, 287 piracy, 147, 170 171 player, 425 portable, 158 proprietary, 149 public domain, 149 quality, 528 529 recovery, 99 responsibility for use, 529 security. See security software server-side programs, 628 630 service packs, 159 shareware, 149 150 sharing on LANs, 274 system, 16, 120, 121 text-to-speech, 428 429 tracing, 447 tracking, 99 uninstalling, 160 161 updates, 159 160 utility, 122 123 Software & Information Industry Association, 509 software copyrights, ethical issues, 525 software customization, 583 584 software development kits (SDKs), 686, 687 software engineering, 515 computer programming compared, 675 software failures, information system data vulnerability, 591 software licenses, 147 149, 151 agreements, 148 BSD, 150 151 commercial software, 148 concurrent-use, 147 EULAs, 148 GPL (General Public License), 151 location, 147 multiple-user, 147 proprietary software, 148 public domain software, 148 shrink-wrap, 147 single-user, 147 site, 147 software packages, contents, 152 153 software patches, 159 software ports, 309 software publishers, 498 800 Software Publishers Association, 509 software suites, 144 Solaris operating system, 102 solid state drives (SSDs), 84 backup device, 223 comparison with other storage technologies, 87 solid state storage, 84 85 operation, 84 types, 84 USB flash drives, 84, 85 Somerson, Paul, 730 Sony Betamax, 472, 529 BMG rootkit incident, 467 Sony Corp. v. niversal City Studios, 524, 529 sort key, 639 sort order, 639 sorting, indexing compared, 637 638 sound. See also digital audio storage using bits, 25 sound cards, 423 424 Sound recorder, 143 sound systems, 57 source code, 29 conversion to digital format, 30 31 source material, Web-based, citing, 382 383 spam, 45, 403 404 avoiding, 404 blocking, 403 404 dangers, 403 definition, 403 marketing, 45 spam filters, 404 specific absorption rate (SAR), 536 specifications, microprocessors, 67, 68 speech, digitization, 8 speech recognition, 428 429 speech synthesis, 428 speed Bluetooth, 267 cable Internet service, 316 cellular data service, 326, 327 downstream, 311 DSL, 315 Ethernet networks, 259, 261 262 HomePNA (HPNA), 257 Internet connection, 309 311 microprocessors, 67 68, 70 printers, 93 RAM, 73 satellite Internet service, 318 INDEX sources, 313 storage technologies, 77 voiceband modems, 313 Web videos, 460 Wi-Fi, 268, 324 WiMAX, 320 wireless networks, 266 spelling checkers, 126 spelling dictionaries, 126 Sperry Corp., 492 Sperry Rand Company, 489, 492 Spiderman (film), 474 475 spoofed addresses, 163 spoofing, 405 sports games, 141 spreadsheet(s), 130 132 appearance, 130 131 definition, 130 using, 131 132 spreadsheet software, 130 132, 133 operation, 131 SPRG (Security Peer Review Group), 596 597 Sprint, 303 spyware, 164 SQL (Structured Query Language), 645 652, 678 adding records to databases, 647 joining tables, 651 652 keywords, 646 647 operation, 645 queries, 645, 646, 648 649 simple queries, 646 updating fields, 650 SQL keywords, 646 647 SQL queries, 645, 646, 648 649 SRI (Stanford Research Institute), 348 SSDs. See solid state drives (SSDs) SSI (small-scale integration), 27 SSIDs (service set identifiers), 272 273 SSL (secure socket layer), 389 Stallman, Richard, 179 standalone password manager software, 40 41 standards AES, 285 Ethernet, 259 IEEE Standards Association, 509 LANs (local area networks), 247 MPR, 535 PCI, 658 TCO, 535 Wi-Fi, 268 Stanford Research Institute (SRI), 348 Staples, 506 star topology, 250 Star Wars (film), 474 stateless protocols, 365 static IP addresses, 306 static Web publishing, 627 statistical software, 133 STAT!Ref, 662 Steinhardt, Barry, 661 STOP (Security Tracking of Office Property) plates, 99 Stoppelenburg, Ramon, 544 storage, 15 hard-disk, RAM versus, 71 operating system management, 187 storage density, 77 storage devices, 57, 76 87 adding, 86 capacity, 77 components, 76 definition, 76 durability, 77 interaction with other components, 76 magnetic, 78 80 optical discs, 81 83 solid state, 84 85 speed, 77 types compared, 77, 87 versatility, 77 storage media, 76 storage servers, 18 store-and-forward technology, 397 stored programs, 16 strategic planning, 557 strategy games, 141 streaming audio, 425 streaming video, 459 street price, 498 STRIDE categories, 725 strong encryption, 285 286 breaking, 286 structured documentation tools, 572 573 structured English, 692 structured files, 614 structured methodology, 570 structured problems, 558 559 students, e-mail privacy, 409 styles, 128 subclasses, 704 coding, 705 subdirectories, 206 submenus, 191 subnotebooks, 59 subroutines, 696 801 INDEX success factors, 571 summary reports, 561 Sun Microsystems, 494, 499, 712 activities, 498 super distribution, 471 Super VGA (SVGA), 91 Super XGA (SXGA), 91 superclasses, 704 supercomputers, 18 19 SurfSecret KeyPad, 41 surge protection, 99 100 surge strips (surge suppressor or surge protector), 100 surveillance, 11 SVG (Scalable Vector Graphics), 448 SVGA (Super VGA), 91 swarms, 339 SXGA (Super XGA), 91 Symbian OS, 202 symmetric DSL (SDSL), 314 symmetric Internet connection, 311 symmetric key encryption, 286 syntax, programming languages, 676 syntax errors, 685 synthesized sound, 426 system application software, 120 system board, 28 system conversion, 586 system development life cycle (SDLC), 566 572. See also specific phases analysis phase, 571 575 design phase, 576 582 implementation phase, 583 586 iterative, 566 maintenance phase, 587 589 modified waterfall, 566 planning phase, 567 571 waterfall, 566 system development methodologies, 570 system documentation, 585 System Mechanic, 122 system operator, 588 system palettes, 438 system requirements, 145 definition, 571 determining, 571 572 documentation tools, 572 575 System Requirements Report, 572 System Requirements Report, 572 system software, 16, 120, 121 utility, 122 123 system synchronization, 226 system testing, 584 system unit, 57 system utilities, 122 systems analysis, 566 575 SDLC. See system development life cycle (SDLC); specific phases of cycle systems analysts, 510 systems design and analysis, 566 567 systems programmers, 588 T T4 syndrome, 540 tables databases. See database tables decision, declarative paradigm, 714 documents, 129 FAT, 219 MFT, 219, 220 wavetables, 426 tablet computers, 59 The Tabulating Machine Company, 489 tactical planning, 557 Tagged Image File Format (TOF or TIFF), 442, 443 tanks (military), 108 tape storage, 80 Target Acquisition Destination Sights, 108 taskbar, 190 tax preparation software, 133 TCO standards, 535 TCP (Transmission Control Protocol), 305 TCP/IP, 305 technical support specialists, 511 technical writers, 512 technology, user-friendliness, 730 731 technology magazines, information on software, 145 technotrash, 106 107 telecommuting, 513 telemarketing, 44 temporal compression, 458 tera-, definition, 26 terabyte, 26 Terminator 2 (film), 474 test areas, 584 testing DVD-video, 463 programs, 685 Texas Instruments, 494 text digital data representation, 24 25 specifying for Web pages, 370 text data type, 634, 635 text editors, 682, 684 685 Web page authoring, 369 text-to-speech software, 428 429 theft computers, 98 99 corporate identity, 594 595 identity, 36, 232 information, 232 passwords, 36 37 theglobe.com, 501 thesauruses, 127 third-generation computers, 493 third-generation languages, 677 32-bit bitmaps, 437 Thompson, Ken, 700 threat modeling, 725 3-D graphics, 449 451 tools for creating, 450 451 vector graphics related, 449 3-D graphics software, 137 throughput, quality-of-service metrics, 587 thumb drives. See USB flash drives TIF or TIFF (Tagged Image File Format), 442, 443 TigerDirect, 507 time shifting, 465 fair use, 472 Tippett, Peter, 162 Titus, Jonathan A., 494 TLS (Transport Layer Security), 389 toolbar, 190 top-level domains, 307 Torvalds, Linus, 201 Toshiba, 494 Total Quality Management (TQM), 569 touch screens, 89 tower cases, 58 Toy Story (film), 475 TPSs. See transaction processing systems (TPSs)_ TQM (Total Quality Management), 569 Traceroute, 310 tracing software, 447 track(s), 218 trackballs, 89 trackers, 339 tracking software, 99 tracking technology, 42 43 trackpads, 89 TrackPoints, 89 transaction(s), definition, 559 transaction processing systems (TPSs)_, 559 560 MISs versus, 562 online, 560 transceivers, wireless networks, 265 transistors, 492 802 Transmission Control Protocol (TCP), 305 Transport Layer Security (TLS), 389 travel industry, 544 545 tree topology, 250 Trend Micro Internet Security, 167 TripAdvisor.com, 545 Trojan horses, 37, 163 TRON (film), 474 troubleshooting hardware, 103 104 LANs, 280 281 True Color bitmaps, 437 Turabian style for citations, 382 TurboPasswords, 41 turning off cookies, 401 turnkey systems, 578 TWA, 544 24-bit bitmaps, 437 Twitter, 6, 361 2001 A Space Odyssey (film), 474 U uBid, 388 UDP (User Datagram Protocol), 305 UFDs. See USB flash drives ULSI (ultra large-scale integration), 27 ultra large-scale integration (ULSI), 27 Ultra XGA (UXGA), 91 UML. See Unified Modeling Language (UML) undeleting files, 221 unethical business practices. See professional ethics; whistleblowing Unicode, 25 Unified Modeling Language (UML), 573 object-oriented programming, 703 uninstall routine, 160 161 uninstalling software, 160 161 uninterruptible power supplies (UPSs), 100 Unisys, location, 499 unit testing, 584 United Airlines, 544, 545 United States Copyright Act, 524 United States Omnibus Crime Control and Safe Street Act, 408 United Virtualities (UV), 402 U.S. Army, 103, 108 reporters embedded with, 173 U.S. Census Bureau, 488 U.S. Department of Defense, 711 INDEX U.S. Department of Defense (DoD), 108 U.S. Digital Millennium Copyright Act, 10 U.S. Privacy Act, 657 UNIVAC, 491 Universal Declaration of Human Rights, 10 Universal Resource Locators (URLs), 361 362 universal serial bus. See USB entries UNIX, 201, 493 unpowered hubs, 96 unstructured files, 614 unstructured problems, 558 559 unzipping files, 156 157 update(s), software, 159 160 UPDATE keyword, 646, 650 updating data in databases, 610 611 updating over Web, 628 629 updating fields, 650 upgrading browsers, 366 computers, 65 UPSs (uninterruptible power supplies), 100 upstream speed, 311 URLs (Universal Resource Locators), 361 362 USA PATRIOT Act, 524, 657 USB flash drives, 84, 85 backup device, 223 comparison with other storage technologies, 87 USB hubs, 96 USB ports, 96 use case(s), 573 use case diagrams, 573 User Datagram Protocol (UDP), 305 user documentation, 585 user IDs, 34 35 managing, 39 user input, Prolog, 721 user interfaces, 189 192 command-line, 189 database design, 640 641 definition, 189 graphical, 189 192 operating system effects, 189 user levels, quality-of-service metrics, 587 user privileges, 655 user-friendliness of technology, 730 731 User’s Bill of Rights, 730, 731 utility software, 122 123 included with operating system, 143 144 UXGA (Ultra XGA), 91 V vacuum tubes, 491 value(s), worksheet(s), 130 value-added resellers (VARs), 508 vandalism, 232 vaporware, 503 VAR(s) (value-added resellers), 508 variable(s), 680 variable-length fields, 615 VDEs (visual development environments), 683 685 VDSL (very high-speed DSL), 314 vector graphics, 444 447 bitmap graphics compared, 444 445 conversion to bitmap graphics, 447 definition, 444 identifying, 444 3-D graphics related, 449 tools for creating, 446 447 on Web, 448 vendors computers, 66 software, 145 verbose error messages, 724 Verio, 592 VeriSign, 727 Verizon, 303 versatility, storage technologies, 77 vertical market software, 142 very high-speed DSL (VDSL), 314 VGA ports, 95, 96 VGA resolution, 91 Victoria’s Secret, 410 video digital. See digital video streaming, 459 video capture, 454 455 video editing software, 140 Video Graphics Array. See VGA entries Video Object (VOB) format, 457 videocasting, 361 videoconferencing cameras, 453 videogame consoles, 17 viewing angle width, 90 virtual machine (VM) technologies, Mac OS, 199 200 virtual memory, 72 virtual private networks (VPNs), 345 accessing, 345 importance, 345 setting up, 345 803 INDEX virus(es). See computer viruses virus definitions, 168 virus distribution, 232 virus hoaxes, 166 virus signatures, 167 VisiCalc, 495 Visual Basic, 679, 712 visual development environments (VDEs), 683 685 VM (virtual machine) technologies, Mac OS, 199 200 VOB (Video Object) format, 457 voice communication, 9 Voice over Internet Protocol. See VoIP (Voice over Internet Protocol) voice recognition, 428 429 voiceband modems, 312 313 speed, 313 VoIP (Voice over Internet Protocol), 305, 332 333 advantages and disadvantages, 333 operation, 332 setting up, 332 volatility, RAM, 72, 192 193 voting, online, 596 597 VPNs. See virtual private networks (VPNs) W walkthroughs, 694 Wal-Mart, 610 WANs (wide area networks), 247 WAP (Wireless Application Protocol), 327 war, acts of, information system data vulnerability, 591 warez, 179 waterfall SDLC, 566 Watson, Thomas J., 490 Wave format, 424 wavetables, 426 WBSs (work breakdown structures), 570, 571 weak encryption, 285 wearable technology, 41 Web, 7, 360 373 browsers. See Web browsers cookies, 367 368 database access, 627 630 definition, 360 HTML. See HTML (Hypertext Markup Language) HTTP, 364 365 Internet versus, 360 search engines. See Web search engines security. See cookies; Web security vector graphics, 448 Web pages. See Web page(s) Web sites. See Web site(s) Web 2.0, 361 Web applications, 158, 159 installing, 158 Web authoring software, 125 Web browsers, 361, 365 367 file formats, 366 helper applications, 367 plug-ins, 367 popular, 365 366 upgrading, 366 Web caches, 367 Web bug(s), 402 Web bug detectors, 402 Web caches, 367 Web crawlers, 375 376 Web page(s) adding audio files, 425 adding videos, 459 460 authoring. See Web page authoring ranking by search engines, 377 378 Web page authoring, 369 371 HTML conversion utilities, 369 putting Web pages on Internet, 371 specifying text and graphics, 370 starting HTML documents, 369 370 text editors, 369 Web palettes, 438 Web portfolios, 519 520 Web search engines, 374 382 definition, 374 375 formulating searches. See formulating searches information stored by, 381 keeping searches confidential, 381 operation, 375 ranking of Web sites, 377 378 recording of queries, 380 381 search engine indexers, 376 search engine sites compared, 375 Web crawlers, 375 376 Web security cookies. See cookies defenses, 407 fake sites, 405 406 Web servers, 361 Web site(s), 360 361 accessing, 361 362 backup device, 223 definition, 361 fake, 405 406 HTML. See HTML (Hypertext Markup Language) information on software, 145 Web site designers, 511 Web-based e-mail, 397, 398, 399, 408, 545 Web-based source material citing, 382 383 copyright, 383 permission to use, 383 Web-based video, 452, 459 460 file formats, 460 speed, 460 WEP (Wired Equivalent Privacy), 283 Wetherbe, James, 569 what-if analysis, 130 whistleblowing, 532 533 WHO (World Health Organization), 663 wide area networks (WANs), 247 Wi-Fi, 268 273 definition, 268 encryption. See encryption; wireless encryption equipment, 268 270 hotspots, 323 324 range, 268 security, 282 284 setup, 270 273 speed, 268 standards, 268 Wi-Fi adapters, 269 Wi-Fi hotspots security, 324 speed, 324 Wi-Fi Protected Access (WPA), 283 Wii, 17 wiki(s), 10, 361 Wikipedia, 10, 361 Wildstrom, Stephen H., 731 WiMAX, 320, 321 mobile, 324 portable, 324 speed, 320 Windows. See Microsoft Windows windows, 189 Windows Registry, 154 backing up, 229 WinZIP, 439 Wired Equivalent Privacy (WEP), 283 wired networks, 256 264 advantages, 256 definition, 256 disadvantages, 256 257 Ethernet. See Ethernet 804 HomePNA, 257 258 mixing wireless and wired devices, 273 powerline, 258 types, 257 wireframes, 449 wireless access points, 270 wireless ad-hoc networks, 270 Wireless Application Protocol (WAP), 327 wireless broadband service, 320, 321 Wireless CWNP certification, 516 wireless encryption, 283. See also encryption activating, 284 PSK, 283 WEP, 283 WPA, 283 wireless infrastructure networks, 270 wireless network(s), 7, 265 273 advantages, 265 Bluetooth, 267 definition, 265 disadvantages, 265 free access, 288 289 infrared light, 265 licensing, 266 microwaves, 265 mixing wireless and wired devices, 273 popular technologies, 266 range, 266 RF signals, 265 security, 266, 273, 283 284 speed, 266 tracking, 42 43 unauthorized access, 288 Wi-Fi. See Wi-Fi wireless network keys, 284 wireless routers, 270 accessing configuration utility, 271 changing default password, 272 configuring, 271 273 wireless-ready devices, 269 Wirth, Niklaus, 700 WMA (Windows Media Audio) format, 424 word processing software, 125 word size, 68 INDEX WordPad, 143 work. See computer professionals; employees work area safety back pain, 540 ergonomics, 537 eye strain, 538 539 radiation. See radiation risks repetitive stress injuries, 536 537 sedentary lifestyle, 540 541 work breakdown structures (WBSs), 570, 571 workers, 557. See also employees worksheets, 130 modifying, 132 workstations, 17 configuring for Ethernet, 264 definition, 248 wireless networks, 273 World Health Organization (WHO), 663 World Trade Center attack, 593 World Wide Web. See Web worms, 163 Wozniak, Steve, 495 WPA (Wi-Fi Protected Access), 283 WQXGA, 91 writable DVD drives, 461 writing data, 76 WUXGA, 91 X xB Browser, 403 Xbox, 17 XCP (Enhanced Copy Protection), 466 xD-Picture Cards, 84 xDSL, 314 Xerox Alto, 495 XForms, 629 XGA (eXtended Graphics Array), 91 XHTML, 362 XML advantages and disadvantages for storing data, 631 632 databases, 630 632 uses, 631 XML DBMSs, 625 XML resumes, 518 XNA framework, 687 Y Yahoo! e-mail authentication, 404 Internet censorship tools, 347 Yahoo! Mail, 545 YouTube, 383 posting videos, 459 Z Z3 computer, 489 ZEDO, 401 Zilog, 494 zip files non-executing, 157 self-executing, 157 zipped files, 156 157 zombies, 164 Zuse, Konrad, 489