Home > Store

Core C# and .NET: The Complete and Comprehensive Developer's Guide to C# 2.0 and .NET 2.0

Register your product to gain access to bonus material or receive a coupon.

Core C# and .NET: The Complete and Comprehensive Developer's Guide to C# 2.0 and .NET 2.0


  • Sorry, this book is no longer in print.
Not for Sale



In the tradition of Core Java , a clear, concise introduction to C#, using real code to solve real world problems

° Written in the proven Core style

° Written on C# 2.0

° Explains all the basic principles of .NET as well as C#

° Provides best practice tips throughout


  • Copyright 2006
  • Edition: 1st
  • Book
  • ISBN-10: 0-13-147227-5
  • ISBN-13: 978-0-13-147227-3

  • Written for C# 2.0 and .NET 2.0: contains coverage of generics, Master Pages, the DataGridView, and other new features
  • Covers Web development, Windows development, data management, security, threading, remoting, and much more
  • Presents hundreds of non-trivial code examples that help you solve real-world problems

The Complete and Comprehensive Developer's Guide to C# 2.0 and .NET 2.0

Core C# and .NET is the no-nonsense, example-rich guide to achieving exceptional results with C# 2.0 and .NET 2.0. Writing for experienced programmers, Stephen Perry presents today's best practices for leveraging both C# 2.0 language features and Microsoft's .NET 2.0 infrastructure.

Like all books in the Core Series, Core C# and .NET focuses on solving real-world problems with serious, non-trivial code. Perry's broad, deep coverage ranges from new C# generics to Web services, from reflection to security. He systematically introduces the development of Windows Forms applications and the effective use of GDI+ graphics classes. He offers detailed guidance on data management with XML and ADO.NET, plus advanced coverage of threading, remoting, and code security. Finally, Perry presents an extensive section on Web development, covering ASP.NET, state management, HTTP requests, and much more.

With practical insights into everything from scalability to localization, this is the C# book you've been searching for: your definitive guide to building production-quality C# applications.

Core C# and .NET delivers

  • Best practices for building C#/.NET Windows applications, Web applications, and Web services
  • Expert insight into security, scalability, and other crucial issues
  • Hundreds of professional-quality code examples
  • In-depth coverage of the latest C# 2.0 features, including generics


DEMONSTRATES practical techniques used by professional developers

FEATURES robust, thoroughly tested sample code and realistic examples

FOCUSES on the cutting-edge technologies you need to master today

PROVIDES expert advice that will help you build superior software

© Copyright Pearson Education. All rights reserved.


Source Code

Download the code files from this book.

Sample Content

Online Sample Chapter

Using .NET Windows Forms Controls

Downloadable Sample Chapter

Download the Sample Chapter related to this title. Also, download a special bonus chapter.

Table of Contents

About the Author.





1. Introduction to .NET and C#.

    Overview of the .NET Framework

      Microsoft .NET and the CLI Standards

    Common Language Runtime

      Compiling .NET Code

      Common Type System


    Framework Class Library

    Working with the .NET Framework and SDK

      Updating the .NET Framework

      .NET Framework Tools



      Framework Configuration Tool

    Understanding the C# Compiler

      Locating the Compiler

      Compiling from the Command Line


    Test Your Understanding

2. C# Language Fundamentals.

    The Layout of a C# Program

      General C# Programming Notes





      byte, sbyte

      short, int, long

      single, double

      Using Parse and TryParse to Convert a Numeric String

    Operators: Arithmetic, Logical, and Conditional

      Arithmetic Operators

      Conditional and Relational Operators

      Control Flow Statements




      while loop

      do loop

      for loop

      foreach loop

      Transferring Control Within a Loop

    C# Preprocessing Directives

      Conditional Compilation

      Diagnostic Directives

      Code Regions


      String Literals

      String Manipulation

    Enumerated Types

      Working with Enumerations

      System.Enum Methods

      Enums and Bit Flags


      Declaring and Creating an Array

      Using System.Array Methods and Properties

    Reference and Value Types

      System.Object and System.ValueType

      Memory Allocation for Reference and Value Types


      Summary of Value and Reference Type Differences


    Test Your Understanding

3. Class Design in C#.

    Introduction to a C# Class

    Defining a Class


      Access Modifiers

      Abstract, Sealed, and Static Modifiers

      Class Identifier

      Base Classes, Interfaces, and Inheritance

    Overview of Class Members

      Member Access Modifiers

    Constants, Fields, and Properties






      Method Modifiers

      Passing Parameters


      Instance Constructor

      Private Constructor

      Static Constructor

    Delegates and Events


      Delegate-Based Event Handling

    Operator Overloading


      Creating and Using a Custom Interface

      Working with Interfaces



      Defining Structures

      Using Methods and Properties with a Structure

    Structure Versus Class

      Structures Are Value Types and Classes Are Reference Types

      Unlike a Class, a Structure Cannot Be Inherited

      General Rules for Choosing Between a Structure and a Class


    Test Your Understanding

4. Working with Objects in C#.

    Object Creation

      Example: Creating Objects with Multiple Factories

    Exception Handling

      System.Exception Class

      Writing Code to Handle Exceptions

      Example: Handling Common SystemException Exceptions

      How to Create a Custom Exception Class

      Unhandled Exceptions

      Exception Handling Guidelines

    Implementing System.Object Methods in a Custom Class

      ToString() to Describe an Object

      Equals() to Compare Objects

      Cloning to Create a Copy of an Object

    Working with .NET Collection Classes and Interfaces

      Collection Interfaces

      System.Collections Namespace

      Stack and Queue



      System.Collections.Generic Namespace

    Object Serialization

      Binary Serialization

    Object Life Cycle Management

      .NET Garbage Collection


    Test Your Understanding


5. C# Text Manipulation and File I/O.

    Characters and Unicode


      Working with Characters

    The String Class

      Creating Strings

      Overview of String Operations

    Comparing Strings

      Using String.Compare

      Using String.CompareOrdinal

    Searching, Modifying, and Encoding a String's Content

      Searching the Contents of a String

      Searching a String That Contains Surrogates

      String Transformations

      String Encoding


      StringBuilder Class Overview

      StringBuilder Versus String Concatenation

    Formatting Numeric and DateTime Values

      Constructing a Format Item

      Formatting Numeric Values

      Formatting Dates and Time

    Regular Expressions

      The Regex Class

      Creating Regular Expressions

      A Pattern Matching Example

      Working with Groups

      Examples of Using Regular Expressions

    System.IO: Classes to Read and Write Streams of Data

      The Stream Class




      Using StreamReader and StreamWriter to Read and Write Lines of Text

      StringWriter and StringReader

      Encryption with the CryptoStream Class

    System.IO: Directories and Files


      Working with Directories Using the DirectoryInfo, Directory, and Path Classes

      Working with Files Using the FileInfo and File Classes


    Test Your Understanding

6. Building Windows Forms Applications.

    Programming a Windows Form

      Building a Windows Forms Application by Hand

    Windows.Forms Control Classes

      The Control Class

      Working with Controls

      Control Events

    The Form Class

      Setting a Form's Appearance

      Setting Form Location and Size

      Displaying Forms

      The Life Cycle of a Modeless Form

      Forms Interaction--A Sample Application

      Owner and Owned Forms

      Message and Dialog Boxes

      Multiple Document Interface Forms

    Working with Menus

      MenuItem Properties

      Context Menus

    Adding Help to a Form


      Responding to F1 and the Help Button

      The HelpProvider Component

    Forms Inheritance

      Building and Using a Forms Library

      Using the Inherited Form


    Test Your Understanding

7. Windows Forms Controls.

    A Survey of .NET Windows Forms Controls

    Button Classes, Group Box, Panel, and Label

      The Button Class

      The CheckBox Class

      The RadioButton Class

      The GroupBox Class

      The Panel Class

      The Label Class

    PictureBox and TextBox Controls

      The PictureBox Class

      The TextBox Class

    ListBox, CheckedListBox, and ComboBox Classes

      The ListBox Class

      Other List Controls: the ComboBox and the CheckedListBox

    The ListView and TreeView Classes

      The ListView Class

      The TreeView Class

    The ProgressBar, Timer, and StatusStrip Classes

      Building a StatusStrip

    Building Custom Controls

      Extending a Control

      Building a Custom UserControl

      A UserControl Example

      Using the Custom User Control

      Working with the User Control at Design Time

    Using Drag and Drop with Controls

      Overview of Drag and Drop

    Using Resources

      Working with Resource Files

      Using Resource Files to Create Localized Forms


    Test Your Understanding

8. .NET Graphics Using GDI+.

    GDI+ Overview

      The Graphics Class

      The Paint Event

    Using the Graphics Object

      Basic 2-D Graphics




      A Sample Project: Building a Color Viewer


      Loading and Storing Images

      Manipulating Images

      Sample Project: Working with Images

      A Note on GDI and BitBlt for the Microsoft Windows Platform


    Test Your Understanding

9. Fonts, Text, and Printing.


      Font Families

      The Font Class

    Drawing Text Strings

      Drawing Multi-Line Text

      Formatting Strings with the StringFormat Class

      Using Tab Stops

      String Trimming, Alignment, and Wrapping



      PrintDocument Class

      Printer Settings

      Page Settings

      PrintDocument Events

      PrintPage Event

      Previewing a Printed Report

      A Report Example

      Creating a Custom PrintDocument Class


    Test Your Understanding

10. Working with XML in .NET.

    Working with XML

      Using XML Serialization to Create XML Data

      XML Schema Definition (XSD)

      Using an XML Style Sheet

    Techniques for Reading XML Data

      XmlReader Class

      XmlNodeReader Class

      The XmlReaderSettings Class

      Using an XML Schema to Validate XML Data

      Options for Reading XML Data

    Techniques for Writing XML Data

    Using XPath to Search XML

      Constructing XPath Queries

      XmlDocument and Xpath

      XPathDocument and Xpath

      XmlDataDocument and Xpath


    Test Your Understanding

11. ADO.NET.

    Overview of the ADO.NET Architecture

      OLE DB Data Provider in .NET

      .NET Data Provider

    Data Access Models: Connected and Disconnected

      Connected Model

      Disconnected Model

    ADO.NET Connected Model

      Connection Classes

      The Command Object

      DataReader Object

    DataSets, DataTables, and the Disconnected Model

      The DataSet Class


      Loading Data into a DataSet

      Using the DataAdapter to Update a Database

      Defining Relationships Between Tables in a DataSet

      Choosing Between the Connected and Disconnected Model

    XML and ADO.NET

      Using a DataSet to Create XML Data and Schema Files

      Creating a DataSet Schema from XML

      Reading XML Data into a DataSet


    Test Your Understanding

12. Data Binding with Windows Forms Controls.

    Overview of Data Binding

      Simple Data Binding

      Complex Data Binding with List Controls

      One-Way and Two-Way Data Binding

      Using Binding Managers

    Using Simple and Complex Data Binding in an Application

      Binding to a DataTable

      Binding Controls to an ArrayList

      Adding an Item to the Data Source

      Identifying Updates

      Update Original Database with Changes

    The DataGridView Class



      Setting Up Master-Detail DataGridViews

      Virtual Mode


    Test Your Understanding


13. Asynchronous Programming and Multithreading.

    What Is a Thread?


    Asynchronous Programming

      Asynchronous Delegates

      Examples of Implementing Asynchronous Calls

    Working Directly with Threads

      Creating and Working with Threads

      Multithreading in Action

      Using the Thread Pool


    Thread Synchronization

      The Synchronization Attribute

      The Monitor Class

      The Mutex

      The Semaphore

      Avoiding Deadlock

      Summary of Synchronization Techniques


    Test Your Understanding

14. Creating Distributed Applications with Remoting.

    Application Domains

      Advantages of AppDomains

      Application Domains and Assemblies

      Working with the AppDomain Class


      Remoting Architecture

      Types of Remoting

      Client-Activated Objects

      Server-Activated Objects

      Type Registration

      Remoting with a Server-Activated Object

      Remoting with a Client-Activated Object (CAO)

      Design Considerations in Creating a Distributed Application

    Leasing and Sponsorship




    Test Your Understanding

15. Code Refinement, Security, and Deployment.

    Following .NET Code Design Guidelines

      Using FxCop

    Strongly Named Assemblies

      Creating a Strongly Named Assembly

      Delayed Signing

      Global Assembly Cache (GAC)



      Permissions and Permission Sets


      Security Policies

      Configuring Security Policy

      The .NET Framework Configuration Tool

      Configuring Code Access Security with the Configuration Tool--An Example

      Requesting Permissions for an Assembly

      Programmatic Security

    Application Deployment Considerations

      Microsoft Windows Deployment: XCOPY Deployment Versus the Windows Installer

      Deploying Assemblies in the Global Assembly Cache

      Deploying Private Assemblies

      Using CodeBase Configuration

      Using a Configuration File to Manage Multiple Versions of an Assembly

      Assembly Version and Product Information


    Test Your Understanding


16. ASP.NET Web Forms and Controls.

    Client-Server Interaction over the Internet

      Web Application Example: Implementing a BMI Calculator

      Using ASP.NET to Implement a BMI Calculator

      Inline Code Model

      The Code-Behind Model

      Code-Behind with Partial Classes

      Page Class

    Web Forms Controls

      Web Controls Overview

      Specifying the Appearance of a Web Control

      Simple Controls

      List Controls

      The DataList Control

    Data Binding and Data Source Controls

      Binding to a DataReader

      Binding to a DataSet

      DataSource Controls

    Validation Controls

      Using Validation Controls

    Master and Content Pages

      Creating a Master Page

      Creating a Content Page

      Accessing the Master Page from a Content Page

    Building and Using Custom Web Controls

      A Custom Control Example

      Using a Custom Control

      Control State Management

      Composite Controls

    Selecting a Web Control to Display Data


    Test Your Understanding

17. The ASP.NET Application Environment.

    HTTP Request and Response Classes

      HttpRequest Object

      HttpResponse Object

    ASP.NET and Configuration Files

      A Look Inside web.config

      Adding a Custom Configuration Section

    ASP.NET Application Security

      Forms Authentication

      An Example of Forms Authentication

    Maintaining State

      Application State

      Session State


      Page Output Caching

      Data Caching

    Creating a Web Client with WebRequest and WebResponse

      WebRequest and WebResponse Classes

      Web Client Example

    HTTP Pipeline

      Processing a Request in the Pipeline

      HttpApplication Class

      HTTP Modules

      HTTP Handlers


    Test Your Understanding

18. XML Web Services.

    Introduction to Web Services

      Discovering and Using a Web Service

    Building an XML Web Service

      Creating a Web Service by Hand

      Creating a Web Service Using VS.NET

      Extending the Web Service with the WebService and WebMethod Attributes

    Building an XML Web Service Client

      Creating a Simple Client to Access the Web Service Class

      Creating a Proxy with Visual Studio.NET

    Understanding WSDL and SOAP

      Web Services Description Language (WSDL)

      Simple Object Access Protocol (SOAP)

    Using Web Services with Complex Data Types

      A Web Service to Return Images

      Using Amazon Web Services

      Creating a Proxy for the Amazon Web Services

      Building a WinForms Web Service Client

    Web Services Performance

      Configuring the HTTP Connection

      Working with Large Amounts of Data


    Test Your Understanding

Appendix A. Features Specific to .NET 2.0 and C# 2.0.

Appendix B. DataGridView Events and Delegates.

Answers to Chapter Exercises.



Untitled Document The process of preparing programs for a digital computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music.

—Donald Knuth, preface to Fundamental Algorithms (1968)

Thirty-seven years later, programmers still experience the same creative satisfaction from a well-crafted program. It can be ten lines of recursive code that pops into one's head at midnight, or it can be an entire production management system whose design requires a year of midnights. Then, as now, good programs still convey an impression of logic and naturalness—particularly to their users.

But the challenges have evolved. Software is required to be more malleable—it may be run from a LAN, the Internet, or a cellular phone. Security is also a much bigger issue, since the code may be accessible all over the world. This, in turn, raises issues of scalability and how to synchronize code for hundreds of concurrent users. More users bring more cultures, and the concomitant need to customize programs to meet the language and culture characteristics of a worldwide client base.

. NET—and the languages written for it—addresses these challenges as well as any unified development environment. This book is written for developers, software architects, and students who choose to work with the .NET Framework. All code in the book is written in C#, although only one chapter is specifically devoted to the syntactical structure of the C# language.

This book is not an introduction to programming—it assumes you are experienced in a computer language. This book is not an introduction to object oriented programming (OOP)—although it will re-enforce the principles of encapsulation, polymorphism, and inheritance through numerous examples. Finally, this book is not an introduction to using Visual Studio .NET to develop C# programs. VS.NET is mentioned, but the emphasis is on developing and understanding C# and the .NET classes—independent of any IDE.

This book is intended for the experienced programmer who is moving to .NET and wants to get an overall feel for its capabilities. You may be a VB6 or C++ programmer seeking exposure to .NET; a VB.NET programmer expanding your repertoire into C#; or—and yes it does happen occasionally—a Java programmer investigating life on the far side. Here's what you'll find if you choose to journey through this book.

18 Chapters. The first four chapters should be read in order. They provide an introduction to C# and a familiarity with using the .NET Class libraries. The remaining chapters can be read selectively based on your interests. Chapters 6 and 7 describe how to develop Windows Forms applications. Chapter 8 and 9 deal with GDI+—the .NET graphics classes. Chapters 10 through 12 are about working with data. Both XML and ADO.NET are discussed. Chapters 13, 14, and 15 tackle the more advanced topics of threading, remoting, and code security, respectively. The final chapters form a Web trilogy: Chapter 16 discusses ASP.NET Web page development; Chapter 17 looks behind the scenes at how to manage state information and manage HTTP requests; the book closes with a look at Web Services.

  • .NET 2.0. The manuscript went to publication after the release of Beta 2.0. As such, it contains information based on that release. The 2.0 topics are integrated within the chapters, rather than placing them in a special 2.0 section. However, as a convenience, Appendix A contains a summary and separate index to the .NET 2.0 topics.
  • Coding examples. Most of the code examples are short segments that emphasize a single construct or technique. The objective is to avoid filler code that does nothing but waste paper. Only when it is essential, does a code example flow beyond a page in length. (Note that all significant code examples are available as a download from www.corecsharp.net.)
  • Questions and answers. Each chapter ends with a section of questions to test your knowledge. The answers are available in a single section at the end of the book.
  • Fact rather opinion. This book is not based on my opinion; it is based on the features inherent in .NET and C#. Core recommendations and notes are included with the intent of providing insight rather than opinion.

While some will disagree, if you really want to learn C# and .NET, shut down your IDE, pull out your favorite text editor, and learn how to use the C# compiler from the command line. Once you have mastered the fundamentals, you can switch to VS.NET and any other IDE for production programming.

Finally, a word about .NET and Microsoft. This book was developed using Microsoft .NET 1.x and Whidbey betas. It includes topics such as ADO.NET and ASP.NET that are very much a Microsoft proprietary implementations. In fact Microsoft has applied to patent these methodologies. However all of C# and many of the .NET basic class libraries are based on a standard that enables them to be ported to other platforms. Now, and increasingly in the future, many of the techniques described in this book will be applicable to .NET like implementations (see Mono) on non-Windows platforms.


Download the Index file related to this title.



Untitled Document Download the Errata from Core C# and .NET

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020