We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
The previous two chapters introduced hash functions and hash tables. In this chapter, we’ll combine hash tables with lists to construct a search engine index. Our index will map a search word to the list of locations where that word occurs in a set of text documents. The data for our example search engine will come from the plays of William Shakespeare, the most influential English-language dramatist in history. We’ll work primarily with the text of Macbeth. The play provides a good development example because the text is rich enough to be interesting, but the structured script format makes it easy to extract everything we need with a reasonable amount of code.
The stack is the Incredible Hulk of data structures: superficially dumb, but so strong that it doesn’t matter. Stacks have only a few basic operations and they’re easy to implement, but they unlock a number of algorithms that are both theoretically powerful and practically important. You may recall that we previously discussed the role of the stack in recursion, and there’s a connection between the stack as an explicit data structure and recursive methods that use a stack implicitly.
Behaviorists, social learning theorists, evolutionary psychologists, cognitive psychologists, and neuroscientists have all brought their theories and methods to the study of human religious experience. This chapter explores how these approaches have added texture, depth, and data to the psychology of religion. We see that while most traditional behaviorists thought religious behavior did not require special theorizing, some psychologists of religion have relied heavily on classical conditioning, reinforcement contingencies, shaping, modeling, and other concepts from learning theory to explain religious life. Social cognitive theory has also been influential. In recent decades, an approach called the cognitive science of religion has built on work in evolutionary theory and cognitive psychology. This approach suggests that successful religious beliefs and practices have thrived precisely because they fit well with existing cognitive architecture – even though that architecture originally emerged for evolutionary reasons entirely unrelated to religion. The chapter concludes with an assessment of several approaches to religion grounded in biology and neuroscience.
Up to this point we’ve focused on introducing the Java language and – starting with the previous chapter – the technique of algorithm analysis. We’re now ready to put that machinery to work by describing our first important new data structure: lists. A list is like an array, in that it represents an ordered sequence of data values, but lists are more flexible: They support operations for dynamically inserting and removing data as the program executes. We’ve already used Java’s built-in ArrayList class to manage a collection of values; now we’re ready to talk about how it’s implemented internally.
The last chapter ended on a down note, when we realized that the standard binary search tree can’t guarantee O(log n) performance if it isn’t balanced. This chapter introduces self-balancing search trees. All three of the trees we’ll examine – 2-3-4 trees, B-trees, and red–black trees – implement search tree operations, but perform extra work to ensure that the tree stays balanced.
This chapter describes some of the ways that clinical psychologists contribute to the legal system and to legal decision-making. Forensic psychologists contribute to decisions about whether a defendant is competent to stand trial, whether a defendant was insane at the time he or she committed a crime, and whether certain individuals are a threat to themselves or others. Clinicians also become involved in civil actions, such as determinations about the role of stress or the extent of psychological damage following accidents or other traumatic events. Their involvement in criminal profiling and psychological autopsies is infrequent, but forensic clinical psychologists are commonly asked to perform activities such as psychological evaluations in child custody and divorce proceedings.
In digital frequency modulation, in particular frequency-shift keying (FSK), information is represented solely by the instantaneous frequency, whereas the amplitude of the ECB signal and thus the envelope of the RF signal are constant. Therefore, efficient power amplification is possible, an important advantage of digital frequency modulation. Even though the frequency and phase of a carrier signal are tightly related (the instantaneous frequency is given by the derivative of the phase), differentially encoded PSK and FSK fall into different families. Moreover, in FSK, the continuity of the carrier phase plays an important role, resulting in continuous-phase FSK (CPFSK). A generalization of CPFSK leads to continuous-phase modulation (CPM), similar to the generalization of MSK to Gaussian MSK discussed in Chapter 4. A brief introduction to CPM is presented and we especially enlighten the inherent coding of CPFSK and CPM. For the characterization and analysis, the general signal space concept derived in Chapter 6 is applied.
This opening chapter provides a broad survey of the field. It describes what features define clinical psychology and what clinical psychologists do in their roles as researchers, therapists, teachers, consultants, and administrators. It describes the increasingly diverse demographic characteristics of clinicians and their clients, and the wide range of settings in which they work. The chapter also outlines the personal, educational, and experiential requirements needed to enter the field. It discusses the continued appeal of clinical psychology as a profession, popular conceptions and misconceptions about clinical psychologists held by the general public, and how clinical psychology overlaps with, and differs from, other mental health professions, including counseling, school, and educational psychology, as well as social work and psychiatry.
Arrays are Java’s fundamental low-level data structure, used to manage fixed-size collections of items. Chapter 2 introduced ArrayList, which implemented a resizable sequential collection of data items, similar to Python’s lists. Arrays are lower-level, but they’re often the best choice for representing fixed-size collections of items, such as matrices. Arrays are also the basic building block of many higher-level data structures. Therefore, understanding how to create and manipulate basic arrays is an essential skill.
This chapter describes the wide variety of interview and observation techniques commonly used by clinical psychologists in their work as therapists and researchers. It categorizes interviews according to their goals, including intake, diagnosis, orientation for treatment or research, problem-referral, termination or debriefing, and crisis intervention. It then describes the characteristics of structured, semi-structured, and unstructured interviews, the typical stages of interviews and what research has revealed about the reliability and validity of differing types of interviews. Clinical observational techniques are described in much the same manner, including discussion of their goals and types as well as research on their strengths and limitations. The chapter also highlights various factors – particularly interview and observation structure, client diversity, and clinicians’ biases – that can affect the results of interviews and observations.
Recursion is a fundamental concept in computer science. A recursive algorithm is one that defines a solution to a problem in terms of itself. That is, recursive techniques solve large problems by building up solutions of smaller instances of the same problem. This turns out to be a powerful technique, because many advanced algorithmic problems and data structures are fundamentally self-similar.