• System Design Tutorial
  • What is System Design
  • System Design Life Cycle
  • High Level Design HLD
  • Low Level Design LLD
  • Design Patterns
  • UML Diagrams
  • System Design Interview Guide
  • Crack System Design Round
  • System Design Bootcamp
  • System Design Interview Questions
  • Microservices
  • Scalability

Difference between Bottom-Up Model and Top-Down Model

  • Difference Between OSI Model and TCP/IP Model
  • Difference between Top Down and Bottom Up Integration Testing
  • Difference between V-model and RAD model
  • Difference between Prototype Model and RAD Model
  • Difference between Relational model and Document Model
  • Difference between V-model and Spiral model
  • Difference between RAD Model and Spiral Model
  • Difference between E-R Model and Relational Model in DBMS
  • Difference between Agile Model and V-Model
  • Difference between V-model and Waterfall model
  • Difference between V-model and Incremental model
  • Difference between Prototype Model and Incremental Model
  • Difference between Waterfall model and Prototype model
  • Difference between RAD Model and Incremental Model
  • Difference between Spiral model and Incremental model
  • Difference between v-bind and v-model in Vue.js
  • Difference between RAD Model and Waterfall Model
  • Difference between Waterfall Model and Spiral Model
  • What is the difference between DOM and BOM ?

Top-Down Design Model:   In the top-down model, an overview of the system is formulated without going into detail for any part of it. Each part of it then refined into more details, defining it in yet more details until the entire specification is detailed enough to validate the model. if we glance at a haul as a full, it’s going to appear not possible as a result of it’s so complicated For example: Writing a University system program, writing a word processor. Complicated issues may be resolved victimization high down style, conjointly referred to as Stepwise refinement where, 

  • We break the problem into parts,
  • Then break the parts into parts soon and now each of parts will be easy to do.   

Advantages:  

  • Breaking problems into parts help us to identify what needs to be done.
  • At each step of refinement, new parts will become less complex and therefore easier to solve.
  • Parts of the solution may turn out to be reusable.
  • Breaking problems into parts allows more than one person to solve the problem.   

Bottom-Up Design Model:   In this design, individual parts of the system are specified in detail. The parts are linked to form larger components, which are in turn linked until a complete system is formed. Object-oriented language such as C++ or java uses a bottom-up approach where each object is identified first. 

Advantage:  

  • Make decisions about reusable low-level utilities then decide how there will be put together to create high-level construct. ,

The contrast between Top-down design and bottom-up design.   

Please Login to comment...

Similar reads.

  • Difference Between
  • System Design

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

Computing Learner

A blog where you can learn computing related subjects

How to solve problems using Inheritance and Polymorphism in Python

Inheritance and polymorphism in python

In this post I’m going to show you how to solve problems using inheritance and polymorphism in python, how to solve a real-life problem. I’ll keep working in the problem description I show you in the first post of the series. So, it is easy for you to understand the situation we have to solve.

This post is a part of a series of object-oriented programming in python.

If you missed the previous ones, this is the order you can follow:

  • OOP in python: classes and objects .
  • Python lists .
  • Inheritance and polymorphism in python with examples .

Problem description

Let’s remember the problem description from the first post of the series.

Company “AutoCars” has a car rental service. The manager of the company is asking you to create software that helps him to improve the business. The company keeps a record of all the cars and the customers that rented a car at least one time.

For the cars, the business keeps in a record of the year model, make, type of the car (sedan, SUV, 4×4), price per day and if the car uses petrol or diesel.

For the customers, the company keeps the record of the name, id and preferred payment method (cash, ETF, card).

Your task is to design and implement a software in python that helps the manager to keep track of the cars and the customers.

The business started to grow while you were implementing the software that will help the manager. Now, several friends and family are renting cars in the company to support the manager. So, the manager wants to offer them discounts to thank them for their support. The manager is planning to give a 15% discount to friends and a 30% discount to family.

We can easily solve this issue by using programming, instead of leaving the manager to do it manually. Because that is what we do, we solve problems using programming.

Did you guess already how are we going to solve this?

Yes, you are right, we are going to use inheritance and polymorphism to give an elegant solution to this problem.

Solving the problem using Inheritance

Alert: the same problem always has several solutions in programming. I’m going to show you one solution, not “the solution”. Always keep your mind open when solving problems, that is the way you will find better solutions every time.

The first thing we have to do when we are solving a problem is to read several times until we fully understand what the problem is.

In this case, while reading we can see that now there are three types of customers. The three types are family, friends, and others.

When you see a situation like this, when you have several types of anything, it is the first indication that you can use inheritance to model the problem, and so the solution.

So, for any new type of customer, we create a new class. Then, we have the class FamilyCustomer and FriendCustomer.

Now we have to make the definitive test to know if there is inheritance or not. If you missed that explanation, you can read it here .

So, let’s write the questions:

  • Are all family customers, customers?
  • Are all fiend customers, customers?

You can easily see that the answer to the previous questions is yes in both cases. They are customers because they are paying for the service to support the manager.

We identified inheritance without even think about the attributes of each class. That is the right way. Inheritance in programming has nothing to do with the amount of (shared) attributes. Inheritance is about the semantic meaning of the relation; it is about the concepts. That is why the answer to the previous questions must be true. If the answer is false, then there is no inheritance, at least not in the order we made the question.

Because nothing changed about the “general customers”, we don’t have to change that class. This is one of the advantages of inheritance. We can extend our software solution with minor modifications to our previous code.

See below the implementation we made of the class Customer. It is here only to remind you about the code. I didn’t change anything there.

The solution: part I

Let’s see the implementations of the new classes.

The keyword pass means we are not implementing anything in that class at this moment. Usually, that will mean that the class is a kind of a dummy class, it does nothing. However, because the two classes inherit from the class Customer, they have the same attributes and methods than the class Customer.

In other words, the two new classes have the same functionalities (and can be used for the same) than the class Customer.

Let’s now add a method to the class that represents the company, that helps the manager to know the price of the rent for a customer.

The solution: part II

What is new in this implementation?

The keyword “type” allows us to ask for the type of an object (or variable). The condition “type(customer) == FamilyCustomer” will return true if the type of the object customer is FamilyCustomer.

Let’s now test the new implementation with the following code.

In the code above, we have a car, a variable (days) that will be used as the number of days some want to rent the car, and three different types of customers. Notice that although the classes FamilyCustomer and FriendCustomer were not implemented, we can use them in the same way we use the class Customer. Again, that is one of the advantages of inheritance.

Let’s see the results after executing the code.

As you can see, the price for the same car and the same number of days is different for the different types of customers.

At this moment, we can say we solved the new problem of the manager.

Compliments to you for solving another problem!!!

Solving the problem using Inheritance and Polymorphism

The manager wants to keep improving the business with us because of the solution we implemented. We made life easier for the manager.

Now the manager wants to send a personalised email to the customers wishing them a happy new year and informing them of a gift to enjoy during the first month of the year.

The email will have the following text for:

  • Family customers: “Dear family member, I wish you a happy new year.”
  • Friends’ customers: “Dear friend, I wish you a happy new year.”
  • Normal customers: “Esteemed <full name of the customer>, I wish you a happy new year.”

This is somehow similar that the previous problem we solved. We have to do something, depending on the type of customer. Let’s use the same approach that we used with the previous problem.

If we execute this code, the result is below.

Dear family member, I wish you a happy new year.

Dear friend, I wish you a happy new year.

Esteemed NC, I wish you a happy new year.

So, we solved the problem again. But let’s compare this solution with another one. It is always a good idea to know how to solve a problem in different ways.

If we see the messages, they start different depending to whom they are addressed. But after that, the message is the same.

Knowing this, we can associate the first part of the message with the specific type of the object, and the last part is the same for all the customers.

The solution

Let’s see how we can implement our solution using the previous fact.

We added a method in each class named intro. This method is responsible to give the appropriate intro according to the type of customer.

After this, let’s see how the method that gets the whole message looks like.

Wait, what???

What happened here?

Here we just used polymorphism. The method intro will be executed according to the type of the object. That is the power of using inheritance and polymorphism to solve problems.

If the type is FamilyCustomer, the method intro that will be executed is the one implemented in the class FamilyCustomer. The same applies to the other two types of objects.

If you execute the same code from our first solution, using the new implementation, the result will be the same.

So, what solution do you prefer?

Solving problems using Inheritance and polymorphism in python is a powerful tool that we have at our disposal.

Both of them are part of the most important and powerful tools for programmers that use the object-oriented programming paradigm.

Solving problems using polymorphism makes your code clearer and easy to maintain. Also, makes us use some of the principles of the object-oriented programming paradigm.

When implementing the method intro in each class, we are giving responsibility to each type of class. Each of them is responsible now to make a proper intro to a message address to a customer of that specific type. By doing that, the implementation related to getting the full message to the customer is way easier than before. The code is easier to understand and to maintain.

If tomorrow, the manager wants to change the introduction for the family, you only have to change in the FamilyCustomer class. Because is its responsibility to know how to introduce a text to that type of customer. There will be no need to change code in the class that represents the company, whenever we want to address the specific type of customer differently. This is a powerful tool we can use to create better software.

Don’t forget to subscribe to get more content like this one.

H@appy coding!!

Email address

inheritance follows which approach to problem solving

inheritance follows which approach to problem solving

  • Table of Contents
  • Course Home
  • Assignments
  • Peer Instruction (Instructor)
  • Peer Instruction (Student)
  • Change Course
  • Instructor's Page
  • Progress Page
  • Edit Profile
  • Change Password
  • Scratch ActiveCode
  • Scratch Activecode
  • Instructors Guide
  • About Runestone
  • Report A Problem
  • 1.1 Objectives
  • 1.2 Getting Started
  • 1.3 What Is Computer Science?
  • 1.4 What Is Programming?
  • 1.5 Why Study Data Structures and Abstract Data Types?
  • 1.6 Why Study Algorithms?
  • 1.7 Reviewing Basic C++
  • 1.8 Getting Started with Data
  • 1.10 Collections
  • 1.11 Defining C++ Functions
  • 1.12 Object-Oriented Programming in C++: Defining Classes
  • 1.13 Inheritance in C++
  • 1.14 Optional: Graphics in C++
  • 1.15 Summary
  • 1.16 Discussion Questions
  • 1.17 Programming Exercises
  • 1.18 Glossary
  • 1.12. Object-Oriented Programming in C++: Defining Classes" data-toggle="tooltip">
  • 1.14. Optional : Graphics in C++' data-toggle="tooltip" >

Before you keep reading...

Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.

Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.

1.13. Inheritance in C++ ¶

In this section we introduce another important aspect of object-oriented programming. Inheritance is the ability for one class to be related to another class in much the same way that people can be related to one another. Children inherit characteristics from their parents. Similarly, C++ child classes can inherit characteristic data and/or behaviors from a parent class. The child classes are often referred to as subclasses or derived classes , and the parent class is often called the base class or superclass .

Figure 8 shows the built-in C++ collections and their relationships to one another. We call a relationship structure such as this an inheritance hierarchy . For example, the string is a child of the sequential collection. In this case, we call the string the child and the sequence the parent (or subclass string and superclass sequence). This is often referred to as an IS-A Relationship (the string IS-A sequential collection). This implies that strings inherit important characteristics from sequences, namely the ordering of the underlying data and operations such as concatenation, repetition, and indexing.

../_images/inheritance1.png

Figure 8: An Inheritance Hierarchy for C++ Collections ¶

Vectors, arrays, and strings are all types of sequential collections. They all inherit common data organization and operations. However, each of them is distinct as well. The children all gain from their parents but distinguish themselves by adding additional characteristics.

By organizing classes in this hierarchical fashion, object-oriented programming languages allow previously written code to be extended to meet the needs of a new situation. In addition, by organizing data in this hierarchical manner, we can better understand the relationships that exist. We can be more efficient in building our abstract representations.

A child class inherits both behaviors and properties from the parent subject to some access restrictions. These variables and functions become members of the derived class. A virtual function is a member function which is declared within a base class and is overwritten by a derived class. In C++, the keyword virtual is used. A simple example of using a virtual function in C++ is shown below. In this example, the two derived subclasses inherit the printType method from the Base class.

1.13.1. Logic Gates and Circuits ¶

To explore this idea further, we will construct a simulation , an application to simulate digital circuits. The basic building block for this simulation will be the logic gate. These electronic switches represent Boolean algebra relationships between their input and their output. In general, gates have a single output line. The value of the output is dependent on the values given on the input lines.

AND gates have two input lines, each of which can be either 0 or 1, representing false or true , respectively. If both of the input lines have the value 1, the resulting output is 1. However, if either or both of the input lines is 0, the result is 0. OR gates also have two input lines and produce a 1 if one or both of the input values is a 1. In the case where both input lines are 0, the result is 0.

NOT gates differ from the other two gates in that they only have a single input line. The output value is simply the opposite of the input value. If 0 appears on the input, 1 is produced on the output. Similarly, 1 produces 0. Figure 9 shows how each of these gates is typically represented. Each gate also has a truth table of values showing the input-to-output mapping that is performed by the gate.

../_images/truthtable.png

Figure 9: Three Types of Logic Gates ¶

By combining these gates in various patterns and then applying a set of input values, we can build circuits that have logical functions. Figure 10 shows a circuit consisting of two AND gates, one OR gate, and a NOT gate. The output lines from the two AND gates feed directly into the OR gate, and the resulting output from the OR gate is given to the NOT gate. If we apply a set of input values to the four input lines (two inputs for each AND gate), the values are processed and a result appears at the output of the NOT gate. Figure 10 also shows an example with values.

../_images/circuit1.png

Figure 10: Circuit ¶

In order to implement a circuit, we will first build a representation for logic gates. Logic gates are easily organized into a class inheritance hierarchy as shown in Figure 11 . At the top of the hierarchy, the LogicGate class represents the most general characteristics of logic gates: namely, a label for the gate and an output line. The next level of subclasses breaks the logic gates into two families, those that have one input line and those that have two. Below that, the specific logic functions of each appear.

../_images/logicquestion.png

Q-2: What will the logic gate yield (1 / 0)?

../_images/gates.png

Figure 11: An Inheritance Hierarchy for Logic Gates ¶

We can now start to implement the classes by starting with the most general, LogicGate . As noted earlier, each gate has a label for identification and a single output line. In addition, we need methods to allow a user of a gate to ask the gate for its label.

The other behavior that every logic gate needs is the ability to know its output value. This will require that the gate perform the appropriate logic based on the current input. In order to produce output, the gate needs to know specifically what that logic is. This means calling a method to perform the logic computation. The complete class is shown in Listing 8 .

A protected member variable or function is similar to a private member but it has the additional benefit that they can be accessed by derived classes. The access keyword protected is used for this.

At this point, we will not implement the performGateLogic function. The reason for this is that we do not know how each gate will perform its own logic operation. Those details will be included by each individual gate that is added to the hierarchy. This is a very powerful idea in object-oriented programming. We are writing a method that will use code that does not exist yet. The parameter virtual is a reference to the actual gate object invoking the method. Any new logic gate that gets added to the hierarchy will simply need to implement the performGateLogic function and it will be used at the appropriate time. Once done, the gate can provide its output value. This ability to extend a hierarchy that currently exists and provide the specific functions that the hierarchy needs to use the new class is extremely important for reusing existing code.

We categorized the logic gates based on the number of input lines. The AND gate has two input lines. The OR gate also has two input lines. NOT gates have one input line. The BinaryGate class will be a subclass of LogicGate and will add two input lines. The UnaryGate class will also subclass LogicGate but will have only a single input line. In computer circuit design, these lines are sometimes called “pins” so we will use that terminology in our implementation.

Listing 9 and Listing 10 implement these two classes. The constructors in both of these classes start with an explicit call to the constructor of the parent class using the parent’s name method. When creating an instance of the BinaryGate class, we first want to initialize any data items that are inherited from LogicGate . In this case, that means the label for the gate. The constructor then goes on to add the two input lines ( pinA and pinB ). This is a very common pattern that you should always use when building class hierarchies. Child class constructors need to call parent class constructors and then move on to their own distinguishing data.

The only behavior that the BinaryGate class adds is the ability to get the values from the two input lines. Since these values come from some external place, we will simply ask the user via an input statement to provide them. The same implementation occurs for the UnaryGate class except that there is only one input line.

Now that we have a general class for gates depending on the number of input lines, we can build specific gates that have unique behavior. For example, the AndGate class will be a subclass of BinaryGate since AND gates have two input lines. As before, the first line of the constructor calls upon the parent class constructor ( BinaryGate ), which in turn calls its parent class constructor ( LogicGate ). Note that the AndGate class does not provide any new data since it inherits two input lines, one output line, and a label.

The only thing AndGate needs to add is the specific behavior that performs the Boolean operation that was described earlier. This is the place where we can provide the performGateLogic method. For an AND gate, this method first must get the two input values and then only return 1 if both input values are 1. The complete class is shown in Listing 11 .

We can show the AndGate class in action by creating an instance and asking it to compute its output. The following session shows an AndGate object, gand1 , that has an internal label "gand1" . When we invoke the getOutput method, the object must first call its performGateLogic method which in turn queries the two input lines. Once the values are provided, the correct output is shown.

The same development can be done for OR gates and NOT gates. The OrGate class will also be a subclass of BinaryGate and the NotGate class will extend the UnaryGate class. Both of these classes will need to provide their own performGateLogic functions, as this is their specific behavior.

We can use a single gate by first constructing an instance of one of the gate classes and then asking the gate for its output (which will in turn need inputs to be provided). For example:

1.13.2. Building Circuits ¶

Now that we have the basic gates working, we can turn our attention to building circuits. In order to create a circuit, we need to connect gates together, the output of one flowing into the input of another. To do this, we will implement a new class called Connector .

The Connector class will not reside in the gate hierarchy. It will, however, use the gate hierarchy in that each connector will have two gates, one on either end (see Figure 12 ). This relationship is very important in object-oriented programming. It is called the HAS-A Relationship . Recall earlier that we used the phrase “IS-A Relationship” to say that a child class is related to a parent class, for example UnaryGate IS-A LogicGate .

../_images/connector.png

Figure 12: A Connector Connects the Output of One Gate to the Input of Another ¶

Now, with the Connector class, we say that a Connector HAS-A LogicGate meaning that connectors will have instances of the LogicGate class within them but are not part of the hierarchy. When designing classes, it is very important to distinguish between those that have the IS-A relationship (which requires inheritance) and those that have HAS-A relationships (with no inheritance).

Listing 12 shows the Connector class. The two gate instances within each connector object will be referred to as the fromgate and the togate , recognizing that data values will “flow” from the output of one gate into an input line of the next. The call to setNextPin is very important for making connections (see Listing 13 ). We need to add this method to our gate classes so that each togate can choose the proper input line for the connection.

../_images/desired_circuit.png

Figure 13: Circit of NOT(AND(ganda,gnadb)OR AND(gandc,gandd)) ¶

Q-3: What is the difference between HAS-A and IS-A relationships? Select all that apply.

  • An IS-A class object is an instance of an inherited class.
  • A HAS-A class object has all of the methods of another class.
  • No. HAS-A relationships do not mean that one class is copying another class.
  • An IS-A class object contains instances of another class.
  • No. IS-A relationships do not mean that an object contains different class instances.
  • A HAS-A class object is an instance of an inherited class.
  • No, HAS-A reltionships do not use inheritance.
  • A HAS-A class object contains instances of another class.

Self Check Challenge

One of the fundamental building blocks of a computer is something called a flip flop. It’s not something that computer science professors wear on their feet, but rather a kind of circuit that is stable and stores the last piece of data that was put on it. A simple flip-flop can be made from two NOR gates (a combination OR and NOT ) that are tied together as in the following diagram. Create a new gate class, called NorGate. NorGates work like OrGates that have a Not attached to the output. See if you can use your new class to implement this.

../_images/flipflop.png

Note if the initial inputs to Reset and Set are both 0 then the output of the flip-flop is 0. But if the Set input is toggled to 1 then the output becomes 1. The great thing is that when the set input goes to 0 the output stays 1, until the reset input is toggled to 1 which resets the output of the circuit back to zero.

  • Optional : Graphics in C++' data-toggle="tooltip" > Optional : Graphics in C++">

Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

  • View all journals
  • Explore content
  • About the journal
  • Publish with us
  • Sign up for alerts
  • Book Review
  • Published: 03 May 2002

Solving Problems in Genetics

  • J N Thompson Jr 1  

Heredity volume  88 ,  page 414 ( 2002 ) Cite this article

5151 Accesses

Metrics details

Richard V Kowles Springer-Verlag, New York; 2001. 479 pp. $24.95, paperback. ISBN 0–387–98841–6

Few subjects have the dual reputation among students of being both intriguing and scary. Learning genetics is one of them. Students find the subject intriguing, because it offers the ability to explore and even explain some of the most fundamental aspects of an organism's makeup and biological history. But it is also scary, because its quantitative precision and problem-solving approaches mean that one cannot simply memorize facts. One must actually understand the principles to apply them successfully. A book like Richard Kowles’ guide to problem solving is an excellent way to help students bridge this divide.

One of this book's strengths is that it offers students the practice needed to gain a solid appreciation of the basic genetic principles of inheritance and genetic organization. Topics range from segregation, basic probability, and the cell cycle to gene mapping, deducing metabolic pathways, translation, population genetics, and special aspects of human genetics. These are topics that can easily be overlooked when placed beside more dramatic examples of modern genetic technology and their rapidly advancing applications in cell and molecular biology. But they are nonetheless as important as the flashy headliners.

Each chapter is introduced with a discussion of the topic and some hints to applying the principles in solving problems. This discussion is a very good review or quick reference, but it is not expected to stand on its own as the sole explanation of the subject. Worked examples are given. This is followed by a series of problems and then the answers. The worked answers are generally brief, yet sufficient to show a student where they made an error. But sometimes, such as in the pedigree problems, additional explanation would be helpful. For example, in one pedigree problem the first question is ‘What is the probable mode of inheritance?’; the text's answer, ‘Y-linked (holandric)’. The second question, ‘Are you positive about this conclusion?’; the text's answer, ‘No’. The third question asks why they are not certain they gave the right answer the first time, and the answer in the book is ‘Could also be sex-limited’. While accurate in content, this is not necessarily a sequence that would build a student's confidence in their problem-solving abilities.

The diagrams are plentiful and helpful. There is also a good index, although I was troubled that some reference material, such as the Chi square statistical table (Table 1.1), pedigree symbols (Figure 2.1), and the genetic code (Table 9.1), are placed in the text of a chapter but have no index entries of their own. That makes them inconvenient to find when doing later problem sets or class homework.

No text is going to satisfy everyone in all details, but I found this one to be quite well done and of value to students who will use it as intended. In other words, students need to try working the problems on their own, and not just go straight to the answers as less disciplined students are wont to do. As an assist to self-study, students gain practice in using their knowledge, much as they will ultimately do on examinations and in professional applications of this information. Even if they are sometimes left with questions about how to handle certain material, they will at least have a good idea of where their confusion lies. And that is where the teacher comes back into the picture.

Author information

Authors and affiliations.

Department of Zoology, David Ross Boyd Professor and Chair, University of Oklahoma, Norman, 73019, Oklahoma, USA

J N Thompson Jr

You can also search for this author in PubMed   Google Scholar

Corresponding author

Correspondence to J N Thompson Jr .

Rights and permissions

Reprints and permissions

About this article

Cite this article.

Thompson, J. Solving Problems in Genetics. Heredity 88 , 414 (2002). https://doi.org/10.1038/sj.hdy.6800066

Download citation

Published : 03 May 2002

Issue Date : 01 May 2002

DOI : https://doi.org/10.1038/sj.hdy.6800066

Share this article

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

Quick links

  • Explore articles by subject
  • Guide to authors
  • Editorial policies

inheritance follows which approach to problem solving

Change Password

Your password must have 8 characters or more and contain 3 of the following:.

  • a lower case character, 
  • an upper case character, 
  • a special character 

Password Changed Successfully

Your password has been changed

  • Sign in / Register

Request Username

Can't sign in? Forgot your username?

Enter your email address below and we will send you your username

If the address matches an existing account you will receive an email with instructions to retrieve your username

Problem Solving in Genetics: Content Hints Can Help

  • Jennifer S. Avena
  • Jennifer K. Knight

Department of Molecular, Cellular, and Developmental Biology, University of Colorado–Boulder, Boulder, CO 80309

Search for more papers by this author

*Address correspondence to: Jennifer K. Knight ( E-mail Address: [email protected] ).

Problem solving is an integral part of doing science, yet it is challenging for students in many disciplines to learn. We explored student success in solving genetics problems in several genetics content areas using sets of three consecutive questions for each content area. To promote improvement, we provided students the choice to take a content-focused prompt, termed a “content hint,” during either the second or third question within each content area. Overall, for students who answered the first question in a content area incorrectly, the content hints helped them solve additional content-matched problems. We also examined students’ descriptions of their problem solving and found that students who improved following a hint typically used the hint content to accurately solve a problem. Students who did not improve upon receipt of the content hint demonstrated a variety of content-specific errors and omissions. Overall, ultimate success in the practice assignment (on the final question of each topic) predicted success on content-matched final exam questions, regardless of initial practice performance or initial genetics knowledge. Our findings suggest that some struggling students may have deficits in specific genetics content knowledge, which when addressed, allow the students to successfully solve challenging genetics problems.

INTRODUCTION

Problem solving has been defined in the literature as engaging in a decision-making process leading to a goal, in which the course of thought needed to solve the problem is not certain ( Novick and Bassok, 2005 ; Bassok and Novick, 2012 ; National Research Council, 2012 ; Prevost and Lemons, 2016 ). Ample research shows that students have difficulty learning how to solve complex problems in many disciplines. For example, in biology and chemistry, students often omit critical information or recall information incorrectly and/or apply information incorrectly to a problem ( Smith and Good, 1984 ; Smith, 1988 ; Prevost and Lemons, 2016 ). Furthermore, across many disciplines, researchers have found that experts use different procedural processes than nonexperts when solving problems ( Chi et al. , 1981 ; Smith and Good, 1984 ; Smith et al. , 2013 ). While students often identify problems based on superficial features, such as the type of organism discussed in a problem, experts identify primary concepts and then link the concept with strategies on how to solve such a problem ( Chi et al. , 1981 ; Smith and Good, 1984 ; Smith et al. , 2013 ). Experts also often check their work and problem solutions more frequently than nonexperts ( Smith and Good, 1984 ; Smith, 1988 ). Given the difficulties students have in problem solving and the value of such skills to their future careers, there is clearly a need for undergraduate educators to assist students in developing problem-solving skills ( American Association for the Advancement of Science, 2011 ; National Research Council, 2012 ).

Two kinds of knowledge have been described in the literature as important for solving problems: domain specific and domain general. Domain-specific knowledge is knowledge about a specific field, including the content (declarative knowledge), the procedural processes used to solve problems (procedural knowledge), and how to apply content and process when solving problems (conditional knowledge; Alexander and Judy, 1988 ). Domain-general knowledge is knowledge that can be used across many contexts ( Alexander and Judy, 1988 ; Prevost and Lemons, 2016 ). A third category, strategic knowledge, is defined as knowledge about problem-solving strategies that can be domain specific or domain general ( Chi, 1981 ; Alexander and Judy, 1988 ). Research suggests that domain-specific knowledge is needed, but may not be sufficient, for applying strategic knowledge to solve problems ( Alexander and Judy, 1988 ; Alexander et al. , 1989 ). Thus, helping students learn to solve problems likely requires teaching them how to activate their content knowledge, apply their knowledge to a problem, and logically think through the problem-solving procedure.

Previous research suggests that receiving help in a variety of forms, including procedure-based prompts ( Mevarech and Amrany, 2008 ), a combination of multiple content- and procedure-based prompts ( Pol et al. , 2008 ), and models ( Stull et al. , 2012 ), can be beneficial to learning.   Not surprisingly, accessing relevant prior knowledge has been shown to positively influence performance ( Dooling and Lachman, 1971 ; Bransford and Johnson, 1972 ; Gick and Holyoak, 1980 ). For example, in genetics, successful problem solvers often identify similarities between problems, whereas unsuccessful problem solvers do not ( Smith, 1988 ). Previous research also suggests that receiving procedural guidance can be beneficial to learning. In a study that asked students to examine different problems with related solutions, prompting students to consider previously reviewed problems helped most students subsequently solve a challenging problem ( Gick and Holyoak, 1980 ). In another study, when students received guidance that included identifying similarities to other problems as well as other procedural skills, such as planning and checking their work, they were better able to solve subsequent problems than in the absence of such guidance ( Mevarech and Amrany, 2008 ). However, although accessing prior knowledge is important, it is also important that students understand how to apply their prior knowledge to a given problem ( Bransford and Johnson, 1972 ). Thus, while students may realize they need additional information to solve a problem, if they cannot make sense of this information in the context of a given problem, the information is unlikely to be useful.

In addition to knowledge, students need practice. Within the field of psychology, many studies have examined the association between practice and performance. Completing a practice test leads to better performance on a subsequent final test compared with other conditions in which students do not test themselves, such as studying or completing an unrelated or no activity (e.g., Roediger and Karpicke, 2006 ; Adesope et al. , 2017 ). In a meta-analysis, this effect, termed the “testing effect,” was found to occur regardless of whether feedback was given and regardless of the time between the practice test and the final test ( Adesope et al. , 2017 ). The benefits of practice testing on later performance can occur not only when using the same questions (retention) but also when students are asked to transfer information to nonidentical questions, including questions that require application of concepts. In one of the few studies on the testing effect using transfer questions, students who took practice tests performed better on transfer questions on a final test for both factual (i.e., a single fact in a sentence) and conceptual (i.e., a cohesive idea across multiple sentences) questions than those who studied but did not take practice tests ( Butler, 2010 ). This study also found that those who performed well on their practice tests were more likely to do well than those who performed poorly on their practice tests 1 week after practice on a subsequent final test, which included conceptual questions that required application ( Butler, 2010 ).

In the current study, we focused on whether students who are incorrectly solving a problem can apply content knowledge given to them as a prompt to correctly solve subsequent genetics problems. We address the following questions: 1) Does providing a single content-focused prompt help students answer similar questions during subsequent practice, and does this practice help on later exams? 2) When unable to apply content prompts, what content errors and omissions do students make that lead them to continue to answer incorrectly?

Participants

We invited students enrolled in an introductory-level undergraduate genetics course for biology majors (total of 416 students in the course) at a 4-year institution during Spring 2017 to complete each of two practice assignments containing content related to course exams. The first practice assignment was taken immediately before a unit exam, and the second assignment was taken either immediately before the next unit exam or after this exam in preparation for the cumulative final exam (see Supplemental Figure S1 for timeline). Each assignment was offered online (using the survey platform Qualtrics) for up to 6 points of extra credit (650 total course points). Students received 4 points for answering the question with an explanation of their problem-solving process and an additional 2 points if they answered correctly. The practice assignments were announced in class and by email, with encouragement to complete the assignment as preparation for an upcoming exam. Students had the option to consent to have their answers used for research purposes, and all students who completed the assignment received credit regardless of their consent.

Course Performance Metrics

Students in the course were given the option to complete the Genetics Concept Assessment (GCA; Smith et al. , 2008 ) online at the beginning of the semester (within the first week of classes) for participation extra credit. The 25 GCA questions address eight of the 11 learning objectives taught in this course. Initial performance on the GCA is reported as the pretest. Students answered the same GCA questions again on the cumulative final exam, for credit, along with instructor-generated questions that also addressed the content from practice assignments along with other course content. The instructor-generated questions on the final exam comprised 15% of the student’s final course grade, and the GCA questions comprised just under 8% of the student’s final course grade.

Practice Assignment Content

We selected content areas known to be challenging for genetics students ( Smith et al. , 2008 ; Smith and Knight, 2012 ) and developed sets of questions on the following five topics: calculation of the probability of inheritance across multiple generations (“probability”), prediction of the cause of an incorrect chromosome number after meiosis (“nondisjunction”), interpretation of a gel and pedigree to determine inheritance patterns (“gel/pedigree”), prediction of the probability of an offspring’s genotype using linked genes (“recombination”), and determination of the parental germ line from which a gene is imprinted (“imprinting”).

For each content area, we wrote three questions intended to be isomorphic that had the following characteristics: they addressed the same underlying concept but used different superficial characteristics, targeted higher-order cognitive processes as assessed by Bloom’s level ( Bloom et al. , 1956 ), contained the same amount of information, and required students to perform similar processes to solve the problem. The questions were in constructed-response format but had a single correct answer, and each question also had a coinciding visual aid (example in Figure 1 ; see all questions in the Supplemental Material). The questions were initially based on previously used exam questions in the course and were tested and modified through individual think-aloud interviews (16 students and seven genetics faculty) and/or a focus group (three students).

FIGURE 1. Example of a practice question used for problem solving on the content of nondisjunction. Each question in the study had a visual aid, was constructed response, and had a single correct answer.

The three questions within a given content area (referred to as a “trio”) were given sequentially in the practice assignments, with the first, second, and third questions referred to as “Q1,” “Q2,” and “Q3,” respectively. For each problem-solving assignment, we randomized for each student the order of the three questions within each content area and the order in which each content area was presented. In the first problem-solving assignment, to prevent fatigue, students answered two of three randomly assigned content areas (probability, nondisjunction, and gel/pedigree), and for the second assignment, students completed questions on both recombination and imprinting.

Experimental Conditions

We developed content-focused prompts (referred to hereafter as “content hints”) based on common student errors revealed during in-class questions and previous exams for this course and/or during individual student think-aloud interviews. Each hint addressed the most common student error and contained only a single content idea ( Table 1 ). In each online practice assignment, we randomly assigned students to one of two conditions: an optional content hint when taking the second question of a content trio (hint at Q2) or an optional content hint when taking the third question of a content trio (hint at Q3). The first question (Q1) served as a baseline measure of performance for all students. At Q2, we compared the performance of students in the two conditions to determine the effect of a hint versus practice only. At Q3, we compared the performance of students within each condition with their performance on Q2 to determine whether performance was maintained (for hint at Q2 condition) or the hint improved performance compared with Q2 (for hint at Q3 condition). Using this randomized design, we could examine the differential effect of practice versus a hint, while still giving all students a chance to receive hints.

Either at Q2 or at Q3 (depending on the condition), students were asked to respond to the following question: “Do you want a hint to solve this problem (No penalty)? If so, click here.” If they clicked, the hint appeared immediately below the problem, so students could see the hint while solving the problem. By asking students to select the hint rather than just showing it to everyone, we could track who chose to take a hint and thus distinguish between hint takers and non–hint takers. We did not provide real-time feedback to students, because the provided hints were intended to serve as a scaffolding mechanism without individual feedback. In addition, it would have been challenging to provide feedback, because the online platform used did not allow for personalized feedback and because the student answers were constructed response and could not be automatically graded.

Problem-Solving Content and Errors

We instructed students to explain in writing their thinking and the steps they were taking to solve the problem before they provided the final answer to each question ( Prevost and Lemons, 2016 ). Students were not allowed to return to a question once answered. The instructions at the beginning of the assignment outlined an example of how to do this (see the Supplemental Material), and students were able to reread the instructions and an example, if desired, during the assignment. In this study, we only tracked student performance and their use of language regarding the content hint, not their thinking or problem-solving steps.

We categorized student content-specific errors and omissions and also the use of language related to the content hint. The two authors reviewed a selection of student answers to develop an initial set of codes. We then independently coded, over three iterations, the same 66 of 456 selected answers. After each iteration, we discussed our codes to come to a consensus and revised the coding scheme as needed to represent student answers. We coded an additional 19 answers to reach a final interrater agreement of 85% (Cohen’s kappa of 0.83). Because we had coded and agreed upon 19% of the student answers at this point and our agreement was above acceptable levels ( Landis and Koch, 1977 ), we then each coded half of the remaining 371 answers independently and discussed and resolved any concerns.

Statistical Analysis

We scored student answers on the practice assignments as incorrect (0) or correct (1) and used performance data only from students who provided a final answer to all possible questions in one or both assignments. We analyzed data from 233 students: 133 students completed both practice assignments, 54 students completed only the first assignment, and 46 students completed only the second assignment. Where content areas are not specified, we report results on all content areas together. We analyzed patterns at the level of the individual answer and used logistic regressions to compare answer performance between conditions, content areas, and progression groups, treating performance on one content area as independent from another content area. A student’s performance within a single content area for Q1, Q2, and Q3 was treated as dependent (i.e., a repeated measure), and we used McNemar’s test to analyze differences in percentage correct between questions. To examine trends at the student level, we used ordinary least-squares (OLS) regression analysis.

For the analysis of student content language use and content errors, we excluded any trios in which one answer could not be coded (i.e., no problem solving described: 36 answers) or for which there was not enough explanation to be interpretable (31 answers). A total of 342 answers are discussed in this study. We used logistic regression to compare the presence of content-specific language between differing groups within the same hint condition.

For the GCA and instructor-generated final exam questions, we report performance as percentage correct. We excluded GCA pretest scores for individuals who took less than 6 minutes to complete the online questionnaire with the GCA or did not finish at least 85% of the questions. For both the GCA and the instructor-generated final exam (a total of 150 points), a subset of questions addressed the same content areas as the practice assignment questions and are termed “practice-related” questions in this study. For the GCA, practice-related questions included one multiple-choice question per content area (questions 10, 20, 24, 25) for a total of 8 points. For the instructor-generated final exam, there were two short-answer questions on nondisjunction and recombination and one multiple-choice question on probability, worth a total of 21 points. We also calculated performance on the remaining questions from the GCA and from the instructor-generated final exam (“practice-unrelated” questions). We used OLS regression analysis to examine the association between a student’s practice assignment and exam performance, and we report unstandardized beta coefficients. We used average performance on practice Q3 questions (“practice Q3 correct”), a measure of practice success, as the predictor. We also included average performance on Q1 (“practice Q1 correct”) in the regression models. For assessment performance analyses, we examined only students who completed both practice assignments (three total content areas) to ensure that all practice predictor variables were calculated based on the same number of questions (three Q3s and Q1s). Out of 133 students who completed both practice assignments, 109 students completed the GCA pre- and posttest and instructor-generated final exam and thus were included in the OLS models. The OLS regression model was the following for the GCA and instructor-generated exam questions, both practice related and practice unrelated:

inheritance follows which approach to problem solving

We also compared assessment outcomes for students who completed the GCA at both time points and the final exam but did not complete any practice assignments ( n = 35) with those who completed all assessments and practice assignments (via OLS or independent t tests, as indicated). For this analysis, the OLS regression model was the following for the GCA and instructor-generated exam questions, both practice-related and practice-unrelated:

inheritance follows which approach to problem solving

We used Stata v. 15.0 and R v. 3.3.3 (dplyr, VennDiagram, statmod, VGAM, irr packages) for all statistical tests. The cutoff for statistical significance was defined as an alpha of 0.05.

Human Subjects Approval

This work was reviewed by the University of Colorado Institutional Review Board, and the use of human subjects was approved (protocols 16-0511 and 15-0380).

Practice Problem-Solving Performance: Question Difficulty

By randomizing the order in which students answered each question within a content area, we were able to use student performance on the first question to compare the difficulty of each of the three questions. For all content areas except imprinting, the questions were isomorphic (χ 2 , p > 0.05), and answering the imprinting question did not influence student performance on recombination questions (taking recombination question first vs. second in the practice assignment; logistic regression, p > 0.05). Therefore, from this point on, all data presented represent the four remaining content areas: probability, nondisjunction, gel/pedigree, and recombination.

Two hundred thirty-three students answered a total of 553 trios of questions (Q1, Q2, Q3). The number of trios answered varies for each content area, because not all students answered all questions or completed both assignments: In the first assignment, students answered trios in two out of three content areas (randomly assigned), and in the second assignment, all students answered the trio of questions on recombination. We first examined the performance of all students across all four content areas and then for each content area individually ( Table 2 ). For all content areas combined, student performance increased from question 1 (Q1) to questions 2 (Q2) and 3 (Q3). Upon examination of each content area individually, however, we found that the percentage of correct answers increased from Q1 to Q3 in recombination and gel/pedigree, but not for the content areas of nondisjunction and probability. In comparing Q1 performance between content areas, students had a higher percent correct for gel/pedigree and nondisjunction questions than for probability and recombination questions and a higher percent correct for probability than for recombination ( Table 2 ).

aPerformance at the level of the individual answer for 553 trios of questions (1659 questions total). The number of trios for each content area is represented by n . Practice assignment 2 included the recombination questions; practice assignment 1 included the other three content areas. Across all content areas combined, the Q2 and Q3 percent correct were significantly higher than Q1 (McNemar’s test, p < 0.05), while there was no difference between Q2 and Q3 (McNemar’s test, p > 0.05). For recombination and gel/pedigree, the Q3 percent correct was significantly different from Q1 (McNemar’s test, p < 0.05), while there was no difference in pairwise comparisons between Q1 and Q2 or Q2 and Q3 (McNemar’s test, p > 0.05). For probability and nondisjunction, there was no significant difference in percent correct among Q1, Q2, and Q3 (McNemar’s test, p > 0.05). For Q1, gel/pedigree and nondisjunction had higher performance than probability (OR = 1.9, p < 0.05, and OR = 3.2, p < 0.001, respectively) and also higher than recombination (OR = 3.1, p < 0.001, and OR = 5.2, p < 0.001, respectively); probability had higher performance than recombination (OR = 1.6, p < 0.05).

Hint Choice

Although all students were given the option to receive a content hint for each content area during practice assignments, they only took this option in 68% of trios overall (Supplemental Table S1). Students who were offered the hint at Q2 were equally likely as those who were offered the hint at Q3 to take a hint for any given content area. For the most difficult content area (recombination), students chose to take a hint more often than for the easier content area of gel/pedigree. When looking at performance across all content areas combined, students who took a hint in a given trio scored significantly lower on all three questions than students who did not take a hint in a given trio (Supplemental Table S2). This pattern, while not always significant, was also seen in each individual content area (Supplemental Table S2). Additionally, across all content areas combined, answers did not show improvement, on average, from Q1 to Q3 in trios in which a hint was not taken, while they did in trios in which a hint was taken. This difference was also significant in the individual content area of recombination, but not the other content areas (Supplemental Table S2). To maintain reasonable sample sizes in our analyses, we combined all content areas together for the remainder of the data in this paper regarding practice performance.

We also characterized students’ initial Q1 performance based on frequency of taking a hint. To best represent whether a student had a consistent pattern in hint choice, we focused on only the students who completed questions in both practice assignments (the maximum of three content areas). Of the 133 students who completed both assignments, 14 students never chose to take a hint, 56 students sometimes chose to take a hint, and 63 students always chose to take a hint when offered. Students who never took a hint performed better on Q1 than students who always took a hint (Supplemental Table S3). We have not further analyzed answer trios in which a student chose not to take a hint for several reasons. We did not have a randomization process for hint presentation: all students were given the option, and those who did not take a hint chose not to do so for reasons that we could not directly examine. In addition, because so few of the students in the study chose to never take a hint, and because we were primarily interested in the effect of taking a content hint on student success, we focused on the students who did take a hint, randomized to either Q2 or Q3 within a trio.

Content Hints Help a Subset of Students

To examine the immediate effect of a content hint on student performance, we focused the remainder of our analyses on situations in which students took a hint. We used Q1 as a baseline measure of student performance in a given content area. Because students were offered a hint either at Q2 or at Q3, we compared student performance at Q2 in the presence or absence of a hint for this question. To examine whether performance was maintained (for hint at Q2 condition) or whether the hint improved performance compared with Q2 (for hint at Q3 condition), we examined performance at Q3. For the students who took a hint, we first looked at aggregate data at the level of individual answers, binning answers into Q1 correct versus incorrect and then looking at performance on the subsequent two questions ( Figure 2 ). As shown in Figure 2 A, if students answered Q1 correctly within a trio, 15% went on to answer Q2 incorrectly (without a hint), indicating that practice itself may not help these students who initially answer correctly. Students who did receive a hint at Q2 performed the same as those who did not, indicating the drop in performance from Q1 to Q2 was not due to the hint. In a given trio, Q3 performance also did not differ based on when a hint was received, and performance, on average, did not change from Q2 to Q3, indicating that a hint did not positively or negatively impact performance for these students who initially answer correctly.

FIGURE 2. The effect of a hint differs depending on Q1 correctness. (A) Q1 incorrect: the percent of correct answers for Q2 and Q3 is shown for trios in which a hint was taken at Q2 ( n = 84 trios) or at Q3 ( n = 110 trios). *, p < 0.05; all else NS, p > 0.05 (logistic regression between conditions; McNemar’s test between Q2 and Q3 for each condition). (B) Q1 correct: the percent of correct answers for Q2 and Q3 is shown for trios in which a hint was taken at Q2 ( n = 89 trios) or at Q3 ( n = 91 trios). There were no significant differences between conditions (logistic regression, p > 0.05) or between Q2 and Q3 (McNemar’s test, p > 0.05).

If students answered Q1 incorrectly within a trio, 21% went on to answer Q2 correctly without a hint, suggesting that practice alone can help these students who initially answer incorrectly ( Figure 2 B). However, a significantly higher percent of students answered correctly upon receiving a hint at Q3. Students who took the hint at Q2 were significantly more likely to get Q2 correct than students who had not yet taken a hint, indicating the hint provides an added benefit beyond practice itself. A similar percent of the students who took a hint at Q2 also answered Q3 correctly, indicating that, on average, they maintained performance on a subsequent question after the hint was taken. By the third question in a content area, all students had received a hint, some at Q2 and some at Q3. Those who took a hint at Q3 performed equivalently on Q3 to those who had taken a hint at Q2, indicating that students benefited similarly at the end of practicing a given content area, regardless of when the hint was received.

To examine how individual students performed sequentially on a trio of questions, we followed the progression of individual students from Q1 to Q3 ( Figures 3 and 4 ). Students took a hint at Q2 in 173 trios of questions ( Figure 3 ). Of these, 49% of students in a given trio answered Q1 incorrectly. Thirty-seven percent of those moved on to get Q2 correct when they received a hint, and then 68% of those went on to get Q3 correct. Thus, the majority, but not all students, maintained this improvement from Q2 to Q3. Students took a hint at Q3 in 201 trios of questions ( Figure 4 ). Of these, 55% of students in a given trio answered Q1 incorrectly. Seventy-nine percent of those also got Q2 incorrect, and then 26% of those moved on to get Q3 correct when they received a hint. As seen in Figures 3 and 4 , while a hint helped some students answer a subsequent question correctly, a hint did not help all students; some students answered Q1, Q2, and Q3 incorrectly despite taking a hint.

FIGURE 3. Student-level progression across answer trios in which a hint was taken at Q2. Percent of correct answers is shown with the number of answers in each category (e.g., Q1 incorrect) in parentheses. Arrows indicate the percent of answers that track to the next category. Bolded arrows signify categories of trios that were analyzed for content-specific language use and errors/omissions: trios with Q1 incorrect but Q2 and Q3 correct (011 group) and those with all three answers incorrect (000 group).

FIGURE 4. Student-level progression for answer trios in which a hint was taken at Q3. Percentage of correct answers is shown with the number of answers in each category (e.g., Q1 incorrect) in parentheses. Arrows indicate the percent of answers that track to the next category. Bolded arrows signify categories of trios that were analyzed for content-specific language use and errors/omissions: trios with Q1 and Q2 incorrect but Q3 correct (001 group) and those with all three answers incorrect (000 group).

Content-Specific Language Use and Errors or Omissions

To further explore why the hint did not help some students but did help others, we examined how students used the given content hint. We categorized within a student’s documented problem-solving answer 1) the presence of language that reflected the content described in the hint (coded as present or absent; Table 3 ), and 2) the types of content errors and omissions made in solving the problem, tracking both correctness and language use across the three questions (Q1, Q2, Q3) for each content area ( Table 4 ). Only the following selection of students who answered Q1 incorrectly and took a hint were considered for this analysis (see bolded arrows in Figures 3 and 4 ): students in a given trio who answered Q2 and Q3 correctly after taking a hint at Q2 (defined as 011), those who answered correctly after taking a hint at Q3 (defined as 001), and those who answered incorrectly on all three questions (defined as 000). Students who shifted from incorrect at Q1 to correct at Q2 or Q3 (011 and 001 students, respectively) more often used language associated with the content of the hint than students who answered all three questions incorrectly. In cases in which students took a hint at Q2, 83% of answers in the 011 group contained language reflecting the hint content compared with 55% in the 000 group ( n = 40 and 74 Q2 and Q3 answers, respectively; logistic regression, odds ratio [OR] = 3.8, p < 0.01). Similarly, when students took a hint at Q3, 91% of answers in the 001 group contained language reflecting the hint content compared with 60% in the 000 group ( n = 23 and 60 Q3 answers, respectively; logistic regression, OR = 9.2, p < 0.01).

Students who continued to answer incorrectly (000 group) displayed a wide variety of content-specific errors and omissions, including multiple errors or omissions within a single answer. Figure 5 shows these errors and omissions for Q1 through Q3 categorized by content area, with each error type or omission represented by different colored circles. For each content area, the orange shading represents an error or omission related to the hint content; the other colors represent different errors or omissions specific to each content area and not related to the content hint. Details for each content area for the 000 group are given in the following sections.

FIGURE 5. Presence of content errors and omissions in incorrect answers in four critical content areas in genetics. The number of answers in which each content error/omission code was observed is shown, with overlap in color indicating the presence of multiple errors/omissions within a single answer. Only 000 progression groups are shown for all questions Q1–Q3. In each case, orange shading indicates an error aligned with the hint content.

Recombination

In the recombination questions, the most common error in the 000 group was no use of map units to solve the problem (57% of 143 answers; Figure 5 A, orange oval). In addition, students made three other types of errors, sometimes in addition to the most common error. In some answers, while map units were used, they were used incorrectly (29%; Figure 5 A, blue oval). Students also made errors in gamete-type identification in which they incorrectly assigned the type of gamete (recombinant or parental) or assigned the probability of recombination to the nonrecombinant gamete (22%; Figure 5 A, green oval). Less often, students incorrectly identified the desired genotype to solve the problem (4%; Figure 5 A, magenta oval). Even after receiving the hint defining map distance, many students made the most common error of not using map units to solve the problem (“No use of map units”; 49% of 67 answers), even though some of these students ( n = 12) used the content language of the hint.

Probability

In the probability questions in this study, students needed to appropriately assign offspring having a probability of 2/3 for a certain genotype based on information about the parents and the mode of inheritance (due to one possible offspring genotype from a parental mating being eliminated). The two most common errors in the 000 group were incorrectly assigning at least one genotype or probability (which includes not using the 2/3 probability correctly; 81% of 67 answers; Figure 5 B, orange circle) and not using or improperly using the product rule for multiplying multiple independent probabilities (64%; Figure 5 B, green circle). These two errors were most commonly present in combination in the same answer (40%; Figure 5 B). While not as common, student answers sometimes contained the error of inaccurate use of modes of inheritance or calculations, either alone or in combination with other errors (21%; Figure 5 B, blue circle). Even after receiving the hint about the 2/3 probability, many students made incorrect genotype or probability assignments (“Genotype/probability misassignment”; 70% of 33 answers), even though some of these students ( n = 5) used the content language of the hint.

Gel/Pedigree

Gel/pedigree was one of the two higher-performing categories (the other being nondisjunction), so there are fewer answers in the 000 group. In these problems, students were asked to interpret both a gel and pedigree to determine inheritance patterns. To most accurately answer the gel/pedigree questions, examination of the molecular gel information to inform the number of chromosome copies present was needed. The omission of not discussing the number of alleles per gene in males and females was most common (91% of 23 answers; Figure 5 C, orange circle), and while only a few answers contained this single omission, many answers contained this omission in addition to other errors/omissions of not clearly using the provided gel (57% total; Figure 5 C, green circle) and incompletely defining a mode of inheritance (26% total; Figure 5 C, blue circle). Even after receiving the hint about X chromosome allele number, many students made the most common omission of not discussing the number of alleles per gene in males and females (“No discussion of copy number”; 88% of 8 answers), and none of these students used the content language of the hint.

Nondisjunction

In the nondisjunction problems, students were asked to identify the cause of an incorrect chromosome number after meiosis. Three errors in understanding of meiosis were present at similar levels in answers in the 000 group, including students not accurately describing homologues versus sister chromatids and/or in what phase they separated at the metaphase plate (30% of 33 answers; Figure 5 D, orange circle), students not sufficiently understanding that phases in meiosis (I or II) should be considered and differentiated (42%; Figure 5 D, green circle), and students not understanding the typical outcome of meiosis or how errors could occur (33%; Figure 5 D, blue circle). After receiving the hint describing chromosome alignment during meiosis, several students still made the error of not accurately describing homologues versus sister chromatids and/or in what phases they separated in meiosis (“Incorrect chromosome definition/separation rules”; 38% of 13 answers), even though some of these students ( n = 3) used the content language of the hint.

Practice Is Associated with Higher Longer-Term Assessment Performance

In addition to the immediate impact of a hint on student performance during a practice assignment, we also examined whether practice itself was associated with longer-term performance on a final exam. Of the 233 students who completed practice assignments, 133 completed both assignments, and 100 completed only one assignment. To ensure that all practice predictor variables were calculated based on the same number of questions (three Q1s and Q3s), we focused on only the students who completed both practice assignments. Of the 133 students who completed both assignments, 109 of these students completed the GCA pre- and posttest and instructor-generated final exam: These are the students included in the final analyses reported in Table 5 and Supplemental Tables S4 and S5. Using the mean performance on Q3 practice questions as a measure of “success” in the practice assignments (Supplemental Table S4), we found that, for students who completed both practice assignments, success in practice significantly predicted both GCA posttest and instructor-generated question performance for practice-related questions (controlling for mean Q1 performance and GCA pretest performance; Table 5 , models 1 and 2). These students also had significantly higher scores on practice-unrelated GCA posttest and instructor-generated questions ( Table 5 , models 3 and 4).

aPerformance is reported as percent correct. Data reported show only students who completed both practice assignments and all assessments included in analyses ( n = 109). Standard error of β (unstandardized beta coefficient) is shown in parentheses. Interpretation example (Practice Q3 correct, model 2): When controlling for practice Q1 performance and GCA pretest, there is a higher final exam performance of 0.29% for each 1% increase in Q3 performance.

* p < 0.05.

** p < 0.01.

*** p < 0.001.

Finally, we examined whether there was a difference in final exam performance between students who did not complete any practice assignments and those who completed both assignments. There were 35 students who did not complete any practice assignments but did complete the GCA pre- and posttest and instructor-generated final exam. We used GCA pretest scores to control for potential differences in incoming genetics knowledge between the group of students who completed both practice assignments and those who completed none, although we could not control for other factors, such as motivation or interest. There was no significant difference in the GCA pretest scores between these two groups (Supplemental Table S4), but students who completed the practice questions had higher GCA posttest and instructor-generated final exam scores than students who did not practice (Supplemental Table S5).

Content Hints Help a Subset of Students during Problem-Solving Practice

We administered genetics practice problems to students on concepts that had already been presented and practiced in class. Overall, we found that some students benefit from this practice, in particular if they initially answer incorrectly. Owing to the design of our study, each student completed at least one question (Q1) within a content area without any assistance. Students then received a hint on one of the subsequent questions. This provided students with the opportunity to struggle through the first question for each concept on their own before receiving assistance. An initial struggle without assistance, followed by feedback, has been shown to help students’ future performance ( Kapur and Bielaczyc, 2012 ), and although we did not provide feedback to students about whether they were correct or incorrect in their initial answers, we gave all students a chance to receive scaffolding via a content hint. For students who had initially answered Q1 incorrectly, when they took a content hint while answering Q2, 37% answered correctly, while only 21% of students answered this question correctly if they did not take a hint at Q2. This difference of 16% indicates that, although practice alone can help, practice with content scaffolding helps more students. In addition, we have demonstrated that students benefit from a content hint regardless of whether they receive that hint at the second question or at the third question. This suggests that students who are learning from the hint at Q2 are able to apply this knowledge in answering the next question. Once they receive a key piece of content, the students who use the hint successfully continue to do so on future problems.

Not all students in this study chose to take an offered hint when solving practice problems. Students who did not take a hint for a particular trio had a higher Q1 score than students who did take a hint. Along with these baseline differences in performance, several possible factors could have influenced students’ choices. One component of student choice could relate to self-regulatory capacity in monitoring their understanding ( Aleven et al. , 2003 ). Students who did not take a hint may have felt confident in their problem-solving ability and thus chose not to view additional information they felt they already knew. In a study that examined students’ use of three-dimensional molecular models to assist in drawing molecular representations, some students did not use models even when the models were placed directly into their hands ( Stull et al. , 2012 ). Some of these students reported thinking they did not need the models to answer the given questions ( Stull et al. , 2012 ). This supports the idea that students who do not use provided hints may simply feel they do not need them. On the other hand, 29% of the students in our study who did not take a hint answered the first question incorrectly, indicating their confidence was misplaced. Similarly, in a study that offered computer-tailored hints for solving problems, even students predicted to benefit from hints did not always take them ( Aleven et al. , 2006 ). In the current study, due to the constructed-response nature of the questions, students could not receive immediate feedback on whether they correctly answered a question. Thus, there would be value in examining whether immediate feedback on performance would influence students’ future choices. Because we could not discover students’ rationales for not taking a hint in this study, we cannot make any further conclusions about their choices.

Utility of a Single Content Idea

We showed that the inclusion of just one content idea as a hint helped some initially struggling students understand a concept, potentially by activating their prior knowledge related to the hint content. In looking at these students’ problem solving, we found that students who improved in a given content trio (011 and 001 groups) more often used language similar to the content of the hint than students who consistently answered incorrectly in a given trio (000 group). Thus, for students helped by the hint, this particular piece of content likely was critical for correctly solving the problem. Adding to previous frameworks ( Alexander and Judy, 1988 ; Alexander et al. , 1989 ), we suggest that this declarative (content) knowledge is the component of domain-specific knowledge that is needed to effectively apply procedural (e.g., strategic) knowledge to accurately solve a problem. In future studies, we plan to further explore the details of students’ procedural processes during problem solving and to determine whether a student’s inability to recall a piece of information is the main reason for an incorrect answer or whether there are additional higher-order cognitive skills and processes required for correct problem solving.

Some students continued to answer all questions in a content trio incorrectly (000 group) despite a content hint. These students often had multiple gaps in content knowledge or made content errors or omissions not related to the content hint. In future studies, students could receive tailored content hint(s) to match all errors that are present; this could allow us to determine whether the lack of content is the reason for incorrect answers, rather than a lack of procedural process skills. In one previous study, a computer program for solving problems that provides tailored hints and feedback was used to specifically assist in genetics problem solving, providing up to four hints specific to each component of a given problem (the Genetics Cognitive Tutor; Corbett et al. , 2010 ). The authors found a significant improvement in learning from pre- to postcompletion of this program ( Corbett et al. , 2010 ).

In cases in which students consistently answered incorrectly (000 group), some used language related to the content hint but made errors when trying to apply the hint in their explanations. If students have inaccurate knowledge on how to apply content, even when correct content ideas are provided, a hint may be insufficient. Indeed, Smith (1988) found that unsuccessful problem solvers can often identify important pieces of information but do not know how to apply this information. In this case, providing more scaffolding to a student, such as by providing students with worked examples of similar problems (e.g., Sweller and Cooper, 1985 ; Renkl and Atkinson, 2010 ) or providing more guided hints and feedback via a cognitive tutor (e.g., Corbett et al. , 2010 ), may be needed.

These students who consistently answer incorrectly may also be lacking critical problem-solving skills. In this study, we focused on the use and application of content knowledge, but in future studies, we will examine the problem-solving processes taken by students who answer correctly and compare these with the processes used by students who answer incorrectly. Certain skills may be particularly critical, such as displaying metacognitive ability (the knowledge and regulation of one’s own cognition). Activating prior knowledge by identifying similarities between problems is an effective metacognitive skill to help orient oneself to a problem ( Gick and Holyoak, 1980 ; Smith, 1988 ; Meijer et al. , 2006 ), and using this behavior in combination with several other metacognitive skills, including planning and checking work, can improve problem-solving ability ( Mevarech and Amrany, 2008 ). Thus, a prompt that asks students to explain how the content in a hint is related to information the student has used previously to solve a problem may be helpful, as it may elicit their prior knowledge of solving similar problems.

Content-Specific Errors and Omissions

Recombination..

For the topic of recombination, students who answered consistently incorrectly (000 group) did not often use map units to determine the probability of offspring when considering two linked genes; instead, many students attempted to solve the problem using Punnett squares and/or the logic of solving a probability question for genes on different chromosomes. Even when students used map units, they often either performed incorrect calculations or assigned recombinant probabilities to the incorrect genotypes. This suggests that the conceptual idea behind calculating probability of inheritance using linked genes is challenging.

Probability.

Students struggled in calculating the probability that an unaffected child of two heterozygotes would be a heterozygote. Instead of considering information in the pedigree that would allow them to eliminate one of the genotype possibilities (homozygous recessive), students often assumed that the probability of a heterozygote offspring of carriers would be 1/2 rather than 2/3. For students who answered these questions consistently incorrectly (000 group), the most common error included the combination of not using the probability of 2/3 with failing to use the product rule appropriately to account for multiple generations. This suggests that struggling students do not understand the broader concept of how to consider multiple generations when determining probability and thus have difficulty integrating multiple ideas into their solutions. Indeed, previous work has shown that many students have difficulty in using both of these types of calculations ( Smith, 1988 ; Smith and Knight, 2012 ).

Gel/pedigree.

Students who answered consistently incorrectly (000 group) most frequently displayed difficulty in reading the gel to identify the number of allele copies and then connecting this information to the pedigree. In this course, students were taught that, although gels are not always quantitative, one can use the thickness of bands on a DNA gel to determine the relative amounts of DNA present in a sample. Despite being taught this convention, students still had difficulty applying the concept of both allele number (e.g., only one X chromosome allele for a male) and amount of DNA (e.g., a thicker band representing two of the same alleles for an individual). Thus, students need more practice understanding the concept of interpreting information on gels.

Nondisjunction.

In nondisjunction questions, students who consistently answered incorrectly (000 group) had a diversity of misunderstandings about meiosis, with three errors being most common. The nondisjunction questions explicitly asked students to specify a phase in meiosis, if any, that was affected. However, students often failed to consider in which meiotic division, I or II, an error could occur, or they expressed uncertainty about differentiating between the two phases of meiosis. Students also struggled with identifying when during meiosis homologous versus sister chromatids separate; they sometimes attempted to identify the type of chromosome that was failing to separate or to state when each would normally separate, but they were often incorrect. The third error students made represented a general misunderstanding of meiosis in which students incorrectly identified the number of each chromosome that should be present in a gamete, or students assumed an atypical event, such as multiple rounds of replication, must have occurred to produce a gamete with one extra chromosome. Previous work on this topic also found that students demonstrate many errors when depicting meiosis, including incorrect chromosome alignment during metaphase ( Wright and Newman, 2011 ; Newman et al. , 2012 ).

As with previous studies that report on the testing effect (e.g., Adesope et al. , 2017 ; Butler, 2010 ), we found that practice was associated with later assessment performance. Regardless of practice Q1 performance and GCA pretest performance, student success in practice predicted students’ longer-term performance, both practice related and practice unrelated, on their instructor-generated final exam and GCA scores in a course. We also showed that those students who completed both practice assignments performed better than students who did not complete any practice assignments, controlling for GCA pretest performance. Because we could not randomize students into practice or no-practice conditions, we caution that, even though we used the GCA pretest as a proxy for incoming ability, there are likely many other factors influencing these students’ performance. Other factors shown to relate to success include student motivation, interest, and metacognition (e.g., Pintrich and de Groot, 1990 ; Schiefele et al. , 1992 ; Young and Fry, 2008 ).

Limitations

Our study addressed four critical content areas in genetics with which we know students struggle. However, students likely have additional or different difficulties on other genetics content. In addition, these questions had only a single correct answer and thus may have been limited in their ability to test student problem-solving skills. In the future, we would like to examine more ill-defined questions with multiple possible solutions ( National Research Council, 2012 ).

While we anticipated that most students would take the option to receive a hint, only 68% of students did so. To provide an accurate representation of the influence of a hint, we had to limit our analyses to those who chose to take a hint. As seen in Stull and colleagues’ ( 2012 ) work on molecular model use and as suggested by our data examining use of the content language reflected in the hint, not all students are likely to use hints, even when hints are easily available. However, it would be interesting to know why students who choose not to take a hint make that decision and whether this decision is based on high confidence or fear that the hint may confuse them.

We also could not test directly whether students who took a hint performed better than those who did not take a hint in longer-term performance, as the only way to measure this is to randomize the students who do and do not receive a hint. We chose not to take this approach, because we felt it was important for student success to give everyone the same access to information.

Implications for Instruction

This study suggests that, after learning a topic in class, a subset of students who initially give incorrect answers to problems on these topics can improve after receiving a single content idea that may fill a knowledge gap. Some students may generally understand how to solve these problems but lack one or two pieces of information; providing the missing piece allows them to apply their knowledge and solve the problem. For these students, reviewing certain pieces of genetics content, which we describe in this study, may be enough to help them solve such problems correctly. Furthermore, we suggest emphasizing the importance of practicing, as this study showed that success at the end of practice predicts longer-term performance in a class, regardless of initial understanding of genetics topics. Even if a student initially struggles with an answer, this “productive failure” can be beneficial to the student’s learning ( Kapur and Bielaczyc, 2012 ). Students who continue to struggle despite content hints likely lack content knowledge as well as problem-solving skills. We plan to further examine such deficits in how students solve problems in order to provide suggestions that are focused on the logical steps and metacognitive processes necessary for solving problems. Such instruction may be most beneficial after students have an initial chance to practice problems, so that they have a chance to challenge themselves before receiving hints.

ACKNOWLEDGMENTS

This work was supported by the National Science Foundation (DUE 1711348). We thank Oscar Whitney for assistance with initial development and testing of questions and Ashton Wiens and Felix Jimenez for assistance with statistical analyses. We are also grateful to Paula Lemons, Stephanie Gardner, and Laura Novick for their advice on the project and to all of the students who participated in this study.

  • Adesope, O. O., Trevisan, D. A., & Sundararajan, N. ( 2017 ). Rethinking the use of tests: A meta-analysis of practice testing . Review of Educational Research , 87 (3), 659–701. https://doi.org/10.3102/0034654316689306 Google Scholar
  • Aleven, V., McLaren, B., Roll, I., & Koedinger, K. ( 2006 ). Toward meta-cognitive tutoring: A model of help-seeking with a cognitive tutor . International Journal of Artificial Intelligence in Education , 16 , 101–130. Google Scholar
  • Aleven, V., Stahl, E., Schworm, S., Fischer, F., & Wallace, R. ( 2003 ). Help seeking and help design in interactive learning environments . Review of Educational Research , 73 (3), 277–320. https://doi.org/10.3102/00346543073003277 Google Scholar
  • Alexander, P. A., & Judy, J. E. ( 1988 ). The interaction of domain-specific and strategic knowledge in academic performance . Review of Educational Research , 58 (4), 375–404. https://doi.org/10.3102/00346543058004375 Google Scholar
  • Alexander, P. A., Pate, P. E., Kulikowich, J. M., Farrell, D. M., & Wright, N. L. ( 1989 ). Domain-specific and strategic knowledge: Effects of training on students of differing ages or competence levels . Learning and Individual Differences , 1 (3), 283–325. https://doi.org/10.1016/1041-6080(89)90014-9 Google Scholar
  • American Association for the Advancement of Science . ( 2011 ). Vision and change in undergraduate biology education: A call to action . Washington, DC. Google Scholar
  • Bassok, M., & Novick, L. R. ( 2012 ). Problem solving . In Holyoak, K. J.Morrison, R. G. (Eds.), Oxford handbook of thinking and reasoning (pp. 413–432). New York: Oxford University Press. Google Scholar
  • Bloom, B. S., Engelhart, M. D., Furst, E. J., Hill, W. M., & Krathwohl, D. R. ( 1956 ). Taxonomy of educational objectives: The classification of educational goals . New York: David McKay. Google Scholar
  • Bransford, J. D., & Johnson, M. K. ( 1972 ). Contextual prerequisites for understanding: Some investigations of comprehension and recall . Journal of Verbal Learning and Verbal Behavior , 11 (6), 717–726. https://doi.org/10.1016/S0022-5371(72)80006-9 Google Scholar
  • Butler, A. C. ( 2010 ). Repeated testing produces superior transfer of learning relative to repeated studying . Journal of Experimental Psychology. Learning, Memory, and Cognition , 36 (5), 1118–1133. https://doi.org/10.1037/a0019902 Medline ,  Google Scholar
  • Chi, M. T. H. ( 1981 ). Knowledge development and memory performance . In Friedman, M. P.Das, J. P.O’Connor, N. (Eds.), Intelligence and learning (pp. 221–229). Boston: Springer US. https://doi.org/10.1007/978-1-4684-1083-9_20 Google Scholar
  • Chi, M. T. H., Feltovich, P. J., & Glaser, R. ( 1981 ). Categorization and representation of physics problems by experts and novices . Cognitive Science , 5 (2), 121–152. https://doi.org/10.1207/s15516709cog0502_2 Google Scholar
  • Corbett, A., Kauffman, L., Maclaren, B., Wagner, A., & Jones, E. ( 2010 ). A Cognitive Tutor for genetics problem solving: Learning gains and student modeling . Journal of Educational Computing Research , 42 (2), 219–239. Google Scholar
  • Dooling, D. J., & Lachman, R. ( 1971 ). Effects of comprehension on retention of prose . Journal of Experimental Psychology , 88 , 216. Google Scholar
  • Gick, M. L., & Holyoak, K. J. ( 1980 ). Analogical problem solving . Cognitive Psychology , 12 (3), 306–355. https://doi.org/10.1016/0010-0285(80)90013-4 Google Scholar
  • Kapur, M., & Bielaczyc, K. ( 2012 ). Designing for productive failure . Journal of the Learning Sciences , 21 (1), 45–83. https://doi.org/10.1080/10508406.2011.591717 Google Scholar
  • Landis, J. R., & Koch, G. G. ( 1977 ). The measurement of observer agreement for categorical data . Biometrics , 33 (1), 159–174. Medline ,  Google Scholar
  • Meijer, J., Veenman, M. V. J., & van Hout-Wolters, B. H. A. M. ( 2006 ). Metacognitive activities in text-studying and problem-solving: Development of a taxonomy . Educational Research and Evaluation , 12 (3), 209–237. https://doi.org/10.1080/13803610500479991 Google Scholar
  • Mevarech, Z. R., & Amrany, C. ( 2008 ). Immediate and delayed effects of meta-cognitive instruction on regulation of cognition and mathematics achievement . Metacognition and Learning , 3 (2), 147–157. https://doi.org/10.1007/s11409-008-9023-3 Google Scholar
  • National Research Council . ( 2012 ). Discipline-based education research: Understanding and improving learning in undergraduate science and engineering . Washington, DC: National Academies Press. https://doi.org/10.17226/13362 Google Scholar
  • Newman, D. L., Catavero, C. M., & Wright, L. K. ( 2012 ). Students fail to transfer knowledge of chromosome structure to topics pertaining to cell division . CBE—Life Sciences Education , 11 (4), 425–436. https://doi.org/10.1187/cbe.12-01-0003 Link ,  Google Scholar
  • Novick, L. R., & Bassok, M. ( 2005 ). Problem solving . In Holyoak, K. J.Morrison, R. G. (Eds.), The Cambridge handbook of thinking and reasoning (pp. 321–349). New York: Cambridge University Press. Google Scholar
  • Pintrich, P. R., & de Groot, E. V. ( 1990 ). Motivational and self-regulated learning components of classroom academic performance . Journal of Educational Psychology , 82 (1), 33–40. https://doi.org/10.1037/0022-0663.82.1.33 Google Scholar
  • Pol, H. J., Harskamp, E. G., Suhre, C. J. M., & Goedhart, M. J. ( 2008 ). The effect of hints and model answers in a student-controlled problem-solving program for secondary physics education . Journal of Science Education and Technology , 17 (4), 410–425. https://doi.org/10.1007/s10956-008-9110-x Google Scholar
  • Prevost, L. B., & Lemons, P. P. ( 2016 ). Step by step: Biology undergraduates’ problem-solving procedures during multiple-choice assessment . CBE—Life Sciences Education , 15 (4), ar71. https://doi.org/10.1187/cbe.15-12-0255 Link ,  Google Scholar
  • Renkl, A., & Atkinson, R. K. ( 2010 ). Learning from worked-out examples and problem solving . In Plass, J. L.Moreno, R.Brünken, R. (Eds.), Cognitive load theory (pp. 91–108). New York: Cambridge University Press. Google Scholar
  • Roediger, H. L., & Karpicke, J. D. ( 2006 ). Test-enhanced learning: Taking memory tests improves long-term retention . Psychological Science , 17 (3), 249–255. https://doi.org/10.1111/j.1467-9280.2006.01693.x Medline ,  Google Scholar
  • Schiefele, U., Krapp, A., & Winteler, A. ( 1992 ). Interest as a predictor of academic achievement: A meta-analysis of research . In Renninger, K. A.Hidi, S.Krapp, A. (Eds.), The role of interest in learning and development (pp. 183–212). Hillsdale, NJ: Erlbaum. Google Scholar
  • Smith, J. I., Combs, E. D., Nagami, P. H., Alto, V. M., Goh, H. G., Gourdet, M. A. A. , … Tanner, K. D. ( 2013 ). Development of the biology card sorting task to measure conceptual expertise in biology . CBE—Life Sciences Education , 12 (4), 628–644. https://doi.org/10.1187/cbe.13-05-0096 Link ,  Google Scholar
  • Smith, M. K., & Knight, J. K. ( 2012 ). Using the Genetics Concept Assessment to document persistent conceptual difficulties in undergraduate genetics courses . Genetics , 191 (1), 21–32. https://doi.org/10.1534/genetics.111.137810 Medline ,  Google Scholar
  • Smith, M. K., Wood, W. B., & Knight, J. K. ( 2008 ). The Genetics Concept Assessment: A new concept inventory for gauging student understanding of genetics . CBE—Life Sciences Education , 7 (4), 422–430. Link ,  Google Scholar
  • Smith, M. U. ( 1988 ). Successful and unsuccessful problem solving in classical genetic pedigrees . Journal of Research in Science Teaching , 25 (6), 411–433. https://doi.org/10.1002/tea.3660250602 Google Scholar
  • Smith, M. U., & Good, R. ( 1984 ). Problem solving and classical genetics: Successful versus unsuccessful performance . Journal of Research in Science Teaching , 21 (9), 895–912. https://doi.org/10.1002/tea.3660210905 Google Scholar
  • Stull, A. T., Hegarty, M., Dixon, B., & Stieff, M. ( 2012 ). Representational translation with concrete models in organic chemistry . Cognition and Instruction , 30 (4), 404–434. https://doi.org/10.1080/07370008.2012.719956 Google Scholar
  • Sweller, J., & Cooper, G. A. ( 1985 ). The use of worked examples as a substitute for problem solving in learning algebra . Cognition and Instruction , 2 (1), 59–89. https://doi.org/10.1207/s1532690xci0201_3 Google Scholar
  • Wright, L. K., & Newman, D. L. ( 2011 ). An interactive modeling lesson increases students’ understanding of ploidy during meiosis . Biochemistry and Molecular Biology Education , 39 (5), 344–351. https://doi.org/10.1002/bmb.20523 Medline ,  Google Scholar
  • Young, A., & Fry, J. D. ( 2008 ). Metacognitive awareness and academic achievement in college students . Journal of the Scholarship of Teaching and Learning , 8 (2), 1–10. Google Scholar
  • Jeremy L. Hsu ,
  • Rou-Jia Sung ,
  • Su L. Swarat ,
  • Alexandra J. Gore ,
  • Stephanie Kim , and
  • Stanley M. Lo
  • Paula Lemons, Monitoring Editor
  • Jennifer S. Avena ,
  • Betsy B. McIntosh ,
  • Oscar N. Whitney ,
  • Ashton Wiens , and
  • Erika Offerdahl, Monitoring Editor
  • Trace data from student solutions to genetics problems reveals variance in the processes related to different course outcomes 23 March 2020

inheritance follows which approach to problem solving

Submitted: 11 June 2018 Revised: 8 February 2019 Accepted: 19 February 2019

© 2019 J. S. Avena and J. K. Knight. CBE—Life Sciences Education © 2019 The American Society for Cell Biology. This article is distributed by The American Society for Cell Biology under license from the author(s). It is available to the public under an Attribution–Noncommercial–Share Alike 3.0 Unported Creative Commons License (http://creativecommons.org/licenses/by-nc-sa/3.0).

What exactly is a programming paradigm?

Thanoshan MV

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ― Martin Fowler

When programming, complexity is always the enemy. Programs with great complexity, with many moving parts and interdependent components, seem initially impressive. However, the ability to translate a real-world problem into a simple or elegant solution requires a deeper understanding.

While developing an application or solving a simple problem, we often say “If I had more time, I would have written a simpler program”. The reason is, we made a program with greater complexity. The less complexity we have, the easier it is to debug and understand. The more complex a program becomes, the harder it is to work on it.

Managing complexity is a programmer’s main concern . So how do programmers deal with complexity? There are many general approaches that reduce complexity in a program or make it more manageable. One of the main approaches is a programming paradigm. Let's dive into programming paradigms!

Introduction to programming paradigms

The term programming paradigm refers to a style of programming . It does not refer to a specific language, but rather it refers to the way you program.

There are lots of programming languages that are well-known but all of them need to follow some strategy when they are implemented. And that strategy is a paradigm.

The types of programming paradigms

types-of-paradigms

Imperative programming paradigm

The word “imperative” comes from the Latin “impero” meaning “I command”.

It’s the same word we get “emperor” from, and that’s quite apt. You’re the emperor. You give the computer little orders to do and it does them one at a time and reports back.

The paradigm consists of several statements, and after the execution of all of them, the result is stored. It’s about writing a list of instructions to tell the computer what to do step by step.

In an imperative programming paradigm, the order of the steps is crucial, because a given step will have different consequences depending on the current values of variables when the step is executed.

To illustrate, let's find the sum of first ten natural numbers in the imperative paradigm approach.

Example in C:

In the above example, we are commanding the computer what to do line by line. Finally, we are storing the value and printing it.

1.1 Procedural programming paradigm

Procedural programming (which is also imperative) allows splitting those instructions into procedures .

NOTE: Procedures aren't functions. The difference between them is that functions return a value, and procedures do not. More specifically, functions are designed to have minimal side effects, and always produce the same output when given the same input. Procedures, on the other hand, do not have any return value. Their primary purpose is to accomplish a given task and cause a desired side effect.

A great example of procedures would be the well known for loop. The for loop's main purpose is to cause side effects and it does not return a value.

To illustrate, let's find the sum of first ten natural numbers in the procedural paradigm approach.

In the example above, we've used a simple for loop to find the summation of the first ten natural numbers.

Languages that support the procedural programming paradigm are:

Procedural programming is often the best choice when:

  • There is a complex operation which includes dependencies between operations, and when there is a need for clear visibility of the different application states ('SQL loading', 'SQL loaded', 'Network online', 'No audio hardware', etc). This is usually appropriate for application startup and shutdown (Holligan, 2016).
  • The program is very unique and few elements were shared (Holligan, 2016).
  • The program is static and not expected to change much over time (Holligan, 2016).
  • None or only a few features are expected to be added to the project over time (Holligan, 2016).

Why should you consider learning the procedural programming paradigm?

  • It's simple.
  • An easier way to keep track of program flow.
  • It has the ability to be strongly modular or structured.
  • Needs less memory: It's efficient and effective.

1.2 Object-oriented programming paradigm

OOP is the most popular programming paradigm because of its unique advantages like the modularity of the code and the ability to directly associate real-world business problems in terms of code.

Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches. ― Paul Graham

The key characteristics of object-oriented programming include Class, Abstraction, Encapsulation, Inheritance and Polymorphism.

A class is a template or blueprint from which objects are created.

java-oops

Objects are instances of classes. Objects have attributes/states and methods/behaviors. Attributes are data associated with the object while methods are actions/functions that the object can perform.

oop

Abstraction separates the interface from implementation. Encapsulation is the process of hiding the internal implementation of an object.

Inheritance enables hierarchical relationships to be represented and refined. Polymorphism allows objects of different types to receive the same message and respond in different ways.

To illustrate, let's find the sum of first ten natural numbers in the object-oriented paradigm approach.

Example in Java:

We have a class Addition that has two states, sum and num which are initialized to zero. We also have a method addValues() which returns the sum of num numbers.

In the Main class, we've created an object, obj of Addition class. Then, we've initialized the num to 10 and we've called addValues() method to get the sum.

Languages that support the object-oriented paradigm:

Object-oriented programming is best used when:

  • You have multiple programmers who don’t need to understand each component (Holligan, 2016).
  • There is a lot of code that could be shared and reused (Holligan, 2016).
  • The project is anticipated to change often and be added to over time (Holligan, 2016).

Why should you consider learning the object-oriented programming paradigm?

  • Reuse of code through Inheritance.
  • Flexibility through Polymorphism.
  • High security with the use of data hiding (Encapsulation) and Abstraction mechanisms.
  • Improved software development productivity: An object-oriented programmer can stitch new software objects to make completely new programs (The Saylor Foundation, n.d.).
  • Faster development: Reuse enables faster development (The Saylor Foundation, n.d.).
  • Lower cost of development: The reuse of software also lowers the cost of development. Typically, more effort is put into the object-oriented analysis and design (OOAD), which lowers the overall cost of development (The Saylor Foundation, n.d.).
  • Higher-quality software: Faster development of software and lower cost of development allows more time and resources to be used in the verification of the software. Object-oriented programming tends to result in higher-quality software (The Saylor Foundation, n.d.).

1.3 Parallel processing approach

Parallel processing is the processing of program instructions by dividing them among multiple processors.

A parallel processing system allows many processors to run a program in less time by dividing them up.

Languages that support the Parallel processing approach:

  • NESL (one of the oldest ones)

Parallel processing approach is often the best use when:

  • You have a system that has more than one CPU or multi-core processors which are commonly found on computers today.
  • You need to solve some computational problems that take hours/days to solve even with the benefit of a more powerful microprocessor.
  • You work with real-world data that needs more dynamic simulation and modeling.

Why should you consider learning the parallel processing approach?

  • Speeds up performance.
  • Often used in Artificial Intelligence. Learn more here: Artificial Intelligence and Parallel Processing by Seyed H. Roosta.
  • It makes it easy to solve problems since this approach seems to be like a divide and conquer method.

Here are some useful resources to learn more about parallel processing:

  • Parallel Programming in C by Paul Gribble
  • Introduction to Parallel Programming with MPI and OpenMP by Charles Augustine
  • INTRODUCTION TO PARALLEL PROGRAMMING WITH MPI AND OPENMP by Benedikt Steinbusch

2. Declarative programming paradigm

Declarative programming is a style of building programs that expresses the logic of a computation without talking about its control flow.

Declarative programming is a programming paradigm in which the programmer defines what needs to be accomplished by the program without defining how it needs to be implemented. In other words, the approach focuses on what needs to be achieved instead of instructing how to achieve it.

Imagine the president during the state of the union declaring their intentions for what they want to happen. On the other hand, imperative programming would be like a manager of a McDonald's franchise. They are very imperative and as a result, this makes everything important. They, therefore, tell everyone how to do everything down to the simplest of actions.

So the main differences are that imperative tells you how to do something and declarative tells you what to do .

2.1 Logic programming paradigm

The logic programming paradigm takes a declarative approach to problem-solving. It's based on formal logic.

The logic programming paradigm isn't made up of instructions - rather it's made up of facts and clauses. It uses everything it knows and tries to come up with the world where all of those facts and clauses are true.

For instance, Socrates is a man, all men are mortal, and therefore Socrates is mortal.

The following is a simple Prolog program which explains the above instance:

The first line can be read, "Socrates is a man.'' It is a base clause , which represents a simple fact.

The second line can be read, "X is mortal if X is a man;'' in other words, "All men are mortal.'' This is a clause , or rule, for determining when its input X is "mortal.'' (The symbol ":-'', sometimes called a turnstile , is pronounced "if''.) We can test the program by asking the question:

that is, "Is Socrates mortal?'' (The " ?- '' is the computer's prompt for a question). Prolog will respond " yes ''. Another question we may ask is:

That is, "Who (X) is mortal?'' Prolog will respond " X = Socrates ''.

To give you an idea, John is Bill's and Lisa's father. Mary is Bill's and Lisa's mother. Now, if someone asks a question like "who is the father of Bill and Lisa?" or "who is the mother of Bill and Lisa?" we can teach the computer to answer these questions using logic programming.

Example in Prolog:

Example explained:

The above code defines that John is Bill's father.

We're asking Prolog what value of X makes this statement true? X should be Mary to make the statement true. It'll respond X = Mary

Languages that support the logic programming paradigm:

  • ALF (algebraic logic functional programming language)

Logic programming paradigm is often the best use when:

  • If you're planning to work on projects like theorem proving, expert systems, term rewriting, type systems and automated planning.

Why should you consider learning the logic programming paradigm?

  • Easy to implement the code.
  • Debugging is easy.
  • Since it's structured using true/false statements, we can develop the programs quickly using logic programming.
  • As it's based on thinking, expression and implementation, it can be applied in non-computational programs too.
  • It supports special forms of knowledge such as meta-level or higher-order knowledge as it can be altered.

2.2 Functional programming paradigm

The functional programming paradigm has been in the limelight for a while now because of JavaScript, a functional programming language that has gained more popularity recently.

The functional programming paradigm has its roots in mathematics and it is language independent. The key principle of this paradigm is the execution of a series of mathematical functions.

You compose your program of short functions. All code is within a function. All variables are scoped to the function.

In the functional programming paradigm, the functions do not modify any values outside the scope of that function and the functions themselves are not affected by any values outside their scope.

To illustrate, let's identify whether the given number is prime or not in the functional programming paradigm.

Example in JavaScript:

In the above example, we've used Math.floor() and Math.sqrt() mathematical functions to solve our problem efficiently. We can solve this problem without using built-in JavaScript mathematical functions, but to run the code efficiently it is recommended to use built-in JS functions.

number is scoped to the function isPrime() and it will not be affected by any values outside its scope. isPrime() function always produces the same output when given the same input.

NOTE: there are no for and while loops in functional programming. Instead, functional programming languages rely on recursion for iteration (Bhadwal, 2019).

Languages that support functional programming paradigm:

Functional programming paradigm is often best used when:

  • Working with mathematical computations.
  • Working with applications aimed at concurrency or parallelism.

Why should you consider learning the functional programming paradigm?

  • Functions can be coded quickly and easily.
  • General-purpose functions can be reusable which leads to rapid software development.
  • Unit testing is easier.
  • Debugging is easier.
  • Overall application is less complex since functions are pretty straightforward.

2.3 Database processing approach

This programming methodology is based on data and its movement. Program statements are defined by data rather than hard-coding a series of steps.

A database is an organized collection of structured information, or data, typically stored electronically in a computer system. A database is usually controlled by a database management system (DBMS) ("What is a Database", Oracle, 2019).

To process the data and querying them, databases use tables . Data can then be easily accessed, managed, modified, updated, controlled and organized.

A good database processing approach is crucial to any company or organization. This is because the database stores all the pertinent details about the company such as employee records, transaction records and salary details.

Most databases use Structured Query Language (SQL) for writing and querying data.

Here’s an example in database processing approach (SQL):

The PersonID column is of type int and will hold an integer. The LastName , FirstName , Address , and City columns are of type varchar and will hold characters, and the maximum length for these fields is 255 characters.

The empty Persons table will now look like this:

Screenshot-from-2019-11-10-22-37-53

Database processing approach is often best used when:

  • Working with databases to structure them.
  • Accessing, modifying, updating data on the database.
  • Communicating with servers.

Why are databases important and why should you consider learning database processing approach?

  • Massive amount of data is handled by the database: Unlike spreadsheet or other tools, databases are used to store large amount of data daily.
  • Accurate: With the help of built-in functionalities in a database, we can easily validate.
  • Easy to update data: Data Manipulation Languages (DML) such as SQL are used to update data in a database easily.
  • Data integrity: With the help of built-in validity checks, we can ensure the consistency of data.

Programming paradigms reduce the complexity of programs. Every programmer must follow a paradigm approach when implementing their code. Each one has its advantages and disadvantages .

If you're a beginner, I would like to suggest learning object-oriented programming and functional programming first. Understand their concepts and try to apply them in your projects.

For example, if you're learning object-oriented programming, the pillars of object-oriented programming are Encapsulation, Abstraction, Inheritance and Polymorphism. Learn them by doing it. It will help you to understand their concepts on a deeper level, and your code will be less complex and more efficient and effective.

I strongly encourage you to read more related articles on programming paradigms. I hope this article helped you.

Please feel free to let me know if you have any questions.

You can contact and connect with me on Twitter @ThanoshanMV .

Thank you for reading.

Happy Coding!

  • Akhil Bhadwal. (2019). Functional Programming: Concepts, Advantages, Disadvantages, and Applications
  • Alena Holligan. (2016). When to use OOP over procedural coding
  • The Saylor Foundation. (n.d.). Advantages and Disadvantages of Object-Oriented Programming (OOP)
  • What is a Database | Oracle. (2019).

System.out.println("Hey there, I am Thanoshan!");

If this article was helpful, share it .

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

inheritance follows which approach to problem solving

Python Inheritance MCQs

Question 1: The mechanism of designing a new class based on one or more existing classes is called:

  • Inheritance
  • Polymorphism
  • None of these

The capability of extending an existing class to build a new class instead of building from scratch is called inheritance.

Learn inheritance in Python .

Question 2: What is overriding?

  • Overriding can occur in the case of inheritance of classes.
  • It is a process of redefining inherited method in child class
  • It is a magic method in Python

A child class may provide a different definition to any of the methods inherited from the parent. This is called overriding.

Question 3: What kind of relationship exists between inherited class and base class?

Since the inherited class is a superset of the base class, there exists IS A relationship. Learn inheritance in Python .

Question 4: What is not true about overriding in Python?

  • Redefining a base class method in the inherited class is called method overriding.
  • Overriding is the essential feature of object-oriented language.
  • The overridden methods must have the same number of arguments as the base class method of the same name.
  • All the above statements are true.

The child class may provide a different definition to inherited method with the additional number of arguments. Learn inheritance in Python .

Question 5: Instance variables and methods in the Python class are:

  • Private by default
  • Public by default
  • Protected by default
  • These terms are not applicable in Python.

Python doesn't have any mechanism that effectively restricts access to any instance variable or method. All members in a Python class are public by default. Any member can be accessed from outside the class environment.

Visit access modifiers in Python .

Question 6: In order to make an instance variable private should be

  • prefixed by a single underscore
  • prefixed by a double underscore
  • having single underscore before and after the name
  • having double underscore before and after the name

An instance variable having double underscore (__) behaves like a private member. It can be accessed by name mangling syntax.

Question 7: Which of the following statements is correct considering the following code?

  • print(b1.__price)
  • print(book.__price)
  • print(_book.__price)
  • print(b1._book__price)

Name mangling syntax is _object._class__variable hence correct expression is _book.__price .

Learn access modifiers in Python .

Question 8: Which of the following is the correct syntax of inheritance?

  • class derived(class base):
  • class derived(base):
  • def class derived(base):
  • none of the above

The name of the parent class is given in parenthesis in front of the child class. Learn inheritance in Python .

Inheritance

Objective Today, we're delving into Inheritance. Check out the Tutorial tab for learning materials and an instructional video!

Task You are given two classes, Person and Student , where Person is the base class and Student is the derived class. Completed code for Person and a declaration for Student are provided for you in the editor. Observe that Student inherits all the properties of Person .

Complete the Student class by writing the following:

  • A string, .
  • An integer, .
  • An integer array (or vector) of test scores, .
  • A char calculate() method that calculates a Student object's average and returns the grade character representative of their calculated average:

inheritance follows which approach to problem solving

Input Format

The locked stub code in your editor calls your Student class constructor and passes it the necessary arguments. It also calls the calculate method (which takes no arguments).

You are not responsible for reading the following input from stdin: The first line contains , , and , respectively. The second line contains the number of test scores. The third line of space-separated integers describes .

Constraints

Output Format

This is handled by the locked stub code in your editor. Your output will be correct if your Student class constructor and calculate() method are properly implemented.

Sample Input

Sample Output

Explanation

This student had scores to average: and . The student's average grade is . An average grade of corresponds to the letter grade , so our calculate() method should return the character 'O' .

Cookie support is required to access HackerRank

Seems like cookies are disabled on this browser, please enable them to open this website

Tips on Problem Solving ≠ From Introduction to Genetics 8 th edition.

         Ratios : a 1:2:1 (or 3:1) ratio indicates that one gene is involved (see Problem 3). A 9:3:3:1 ratio, or some modification of it, indicates that two genes are involved (see Problem 4). A testcross results in a 1:1 ratio if the organism being tested is heterozygous and a 1:0 ratio if it is homozygous (see Problem 2).

         Pedigrees : normal parents have affected offspring in recessive disorders (see Problem 8). Normal parents have normal offspring and affected parents have affected and/or normal offspring in dominant disorders (see Problems 7). If phenotypically identical parents produce progeny with two phenotypes, the parents were both heterozygous (see Problems 27).

         Probability : when dealing with two or more independently assorting genes, consider each gene separately (see Problem 48).

         X‑linked or autosomal : if the male phenotype is different from the female phenotype, X linkage is involved for the allele carried by the female (see Problems 15, 27).

         Inheritance patterns: there are only seven possible inheritance

         patterns for a gene . Usually only numbers 1 ≠ 4 will be encountered:

            1. Autosomal dominant

            2. Autosomal recessive

            3. X‑linked dominant

            4. X-linked recessive

            5. Autosomal with expression limited to one sex

            6. Y‑linked

            7. X‑ and Y‑linked (pseudoautosomal)

A Systematic Approach to Problem Solving         

         Now that you have struggled with a number of genetics problems, it may be worthwhile to make some generalizations about problem solving beyond what has been presented for each chapter so far.

        

         The first task always is to determine exactly what information has been presented and what is being asked. Frequently, it is necessary to rewrite the problem or to symbolize the presented information in some way.

         The second task is to formulate and test hypotheses. If the results generated by a hypothesis contradict some aspect of the problem, then the hypothesis is rejected. If the hypothesis generates data compatible with the problem, then it is retained.

         A systematic approach is the only safe approach in working genetics problems. Shortcuts in thought processes usually lead to an incorrect answer. Consider the following two types of problems.

1.       When analyzing pedigrees, there are usually only four possibilities (hypotheses) to be considered: autosomal dominant, autosomal recessive, X‑linked dominant, and X‑linked recessive. The criteria for each should be checked against the data. Additional factors that should be kept in mind are epistasis, penetrance, expressivity, age of onset, incorrect diagnosis in earlier generations, adultery, adoptions that are not mentioned, and inaccurate information in general. All these factors can be expected in real life, although few will be encountered in the problems presented here.

2.       When studying matings, frequently the first task is to decide whether you are dealing with one gene, two genes, or more than two genes (hypotheses). The location of the gene or genes may or may not be important. If location is important, then there are two hypotheses: autosomal and X‑linked. If there are two or more genes, then you may have to decide on linkage relationships between them. There are two hypotheses: unlinked and linked.

         If ratios are presented, then 1:2:1 (or some modification signaling dominance) indicates one gene, 9:3:3:1 (or some modification reflecting epistasis) indicates two genes, and 27:9:9:9:3:3:3:1 (or some modification signaling epistasis) indicates three genes. If ratios are presented that bear no relationship to the above, such as 35:35:15:15, then you are dealing with two linked genes (see Chapter 4 for a discussion of linkage).

         If phenotypes rather than ratios are emphasized in the problem, then a cross of two mutants that results in wild type indicates the involvement of two genes rather than alleles of the same gene. Both mutants are recessive to wild type. A correlation of sex with phenotype indicates X linkage for the gene mutant in the female parent, while a lack of correlation indicates autosomal location.

         If the problem involves X linkage, frequently the only way to solve it is to focus on the male progeny.

         Once you determine the number of genes being followed and their location, the problem essentially solves itself if you make a systematic listing of genotype and phenotype.

         Sometimes, the final portion of a problem will give additional information that requires you to adjust all the work that you have done up to that point. As an example, in Problem 64 of Chapter 6, crosses 1 ≠ 3 lead you to assume that you are working with one gene. In cross 4, data incompatible with this assumption are presented. Your initial assumption of one gene is correct for the information given in the first three crosses; it is not a mistake. Other than a lack of systematic thought, the greatest mistake that a student can make is to label a rejected hypothesis an error. This decreases self-confidence and increases anxiety, with the result that real mistakes will likely follow. The beginner needs to keep in mind that science progresses by the rejection of hypotheses. When a hypothesis is rejected, something concrete is known: the proposed hypothesis does not explain the results. An unrejected hypothesis may be right or it may be wrong, and there is no way to know without further experimentation.

         A very generalized procedure for problem solving would look like this:

1.       Determine what information is being presented and what is being asked.

2.       Formulate all possible hypotheses.

3.       Check the consequences of each hypothesis against the data (the given information).

         Reject all hypotheses that are incompatible with the data.

         Retain all hypotheses that are compatible with the data.

         If no hypothesis is compatible with the data, return to step 1.

  • Share full article

For more audio journalism and storytelling, download New York Times Audio , a new iOS app available for news subscribers.

A Plan to Remake the Middle East

While talks for a cease-fire between israel and hamas continue, another set of negotiations is happening behind the scenes..

This transcript was created using speech recognition software. While it has been reviewed by human transcribers, it may contain errors. Please review the episode audio before quoting from this transcript and email [email protected] with any questions.

From New York Times, I’m Michael Barbaro. This is The Daily.

[MUSIC CONTINUES]

Today, if and when Israel and Hamas reach a deal for a ceasefire fire, the United States will immediately turn to a different set of negotiations over a grand diplomatic bargain that it believes could rebuild Gaza and remake the Middle East. My colleague Michael Crowley has been reporting on that plan and explains why those involved in it believe they have so little time left to get it done.

It’s Wednesday, May 8.

Michael, I want to start with what feels like a pretty dizzying set of developments in this conflict over the past few days. Just walk us through them?

Well, over the weekend, there was an intense round of negotiations in an effort, backed by the United States, to reach a ceasefire in the Gaza war.

The latest ceasefire proposal would reportedly see as many as 33 Israeli hostages released in exchange for potentially hundreds of Palestinian prisoners.

US officials were very eager to get this deal.

Pressure for a ceasefire has been building ahead of a threatened Israeli assault on Rafah.

Because Israel has been threatening a military offensive in the Southern Palestinian city of Rafah, where a huge number of people are crowded.

Fleeing the violence to the North. And now they’re packed into Rafah. Exposed and vulnerable, they need to be protected.

And the US says it would be a humanitarian catastrophe on top of the emergency that’s already underway.

Breaking news this hour — very important breaking news. An official Hamas source has told The BBC that it does accept a proposal for a ceasefire deal in Gaza.

And for a few hours on Monday, it looked like there might have been a major breakthrough when Hamas put out a statement saying that it had accepted a negotiating proposal.

Israeli Prime Minister Benjamin Netanyahu says the ceasefire proposal does not meet his country’s requirements. But Netanyahu says he will send a delegation of mediators to continue those talks. Now, the terms —

But those hopes were dashed pretty quickly when the Israelis took a look at what Hamas was saying and said that it was not a proposal that they had agreed to. It had been modified.

And overnight —

Israeli troops stormed into Rafah. Video showing tanks crashing over a sign at the entrance of the city.

— the Israelis launched a partial invasion of Rafah.

It says Hamas used the area to launch a deadly attack on Israeli troops over the weekend.

And they have now secured a border crossing at the Southern end of Gaza and are conducting targeted strikes. This is not yet the full scale invasion that President Biden has adamantly warned Israel against undertaking, but it is an escalation by Israel.

So while all that drama might suggest that these talks are in big trouble, these talks are very much still alive and ongoing and there is still a possibility of a ceasefire deal.

And the reason that’s so important is not just to stop the fighting in Gaza and relieve the suffering there, but a ceasefire also opens the door to a grand diplomatic bargain, one that involves Israel and its Arab neighbors and the Palestinians, and would have very far-reaching implications.

And what is that grand bargain. Describe what you’re talking about?

Well, it’s incredibly ambitious. It would reshape Israel’s relationship with its Arab neighbors, principally Saudi Arabia. But it’s important to understand that this is a vision that has actually been around since well before October 7. This was a diplomatic project that President Biden had been investing in and negotiating actually in a very real and tangible way long before the Hamas attacks and the Gaza war.

And President Biden was looking to build on something that President Trump had done, which was a series of agreements that the Trump administration struck in which Israel and some of its Arab neighbors agreed to have normal diplomatic relations for the first time.

Right, they’re called the Abraham Accords.

That’s right. And, you know, Biden doesn’t like a lot of things, most things that Trump did. But he actually likes this, because the idea is that they contribute to stability and economic integration in the Middle East, the US likes Israel having friends and likes having a tight-knit alliance against Iran.

President Biden agrees with the Saudis and with the Israelis, that Iran is really the top threat to everybody here. So, how can you build on this? How can you expand it? Well, the next and biggest step would be normalizing relations between Israel and Saudi Arabia.

And the Saudis have made clear that they want to do this and that they’re ready to do this. They weren’t ready to do it in the Trump years. But Mohammed bin Salman, the Crown Prince of Saudi Arabia, has made clear he wants to do it now.

So this kind of triangular deal began to take shape before October 7, in which the US, Israel, and Saudi Arabia would enter this three way agreement in which everyone would get something that they wanted.

And just walk through what each side gets in this pre-October 7th version of these negotiations?

So for Israel, you get normalized ties with its most important Arab neighbor and really the country that sets the tone for the whole Muslim world, which is Saudi Arabia of course. It makes Israel feel safer and more secure. Again, it helps to build this alliance against Iran, which Israel considers its greatest threat, and it comes with benefits like economic ties and travel and tourism. And Prime Minister Benjamin Netanyahu has been very open, at least before October 7th, that this was his highest diplomatic and foreign policy priority.

For the Saudis, the rationale is similar when it comes to Israel. They think that it will bring stability. They like having a more explicitly close ally against Iran. There are economic and cultural benefits. Saudi Arabia is opening itself up in general, encouraging more tourism.

But I think that what’s most important to the Crown Prince, Mohammed bin Salman, is what he can get from the United States. And what he has been asking for are a couple of essential things. One is a security agreement whose details have always been a little bit vague, but I think essentially come down to reliable arms supplies from the United States that are not going to be cut off or paused on a whim, as he felt happened when President Biden stopped arms deliveries in 2021 because of how Saudi was conducting its war in Yemen. The Saudis were furious about that.

Saudi Arabia also wants to start a domestic nuclear power program. They are planning for a very long-term future, possibly a post-oil future. And they need help getting a nuclear program off the ground.

And they want that from the US?

And they want that from the US.

Now, those are big asks from the us. But from the perspective of President Biden, there are some really enticing things about this possible agreement. One is that it will hopefully produce more stability in the region. Again, the US likes having a tight-knit alliance against Iran.

The US also wants to have a strong relationship with Saudi Arabia. You know, despite the anger at Mohammed bin Salman over the murder of the Saudi dissident Jamal Khashoggi, the Biden administration recognizes that given the Saudis control over global oil production and their strategic importance in the Middle East, they need to have a good relationship with them. And the administration has been worried about the influence of China in the region and with the Saudis in particular.

So this is an opportunity for the US to draw the Saudis closer. Whatever our moral qualms might be about bin Salman and the Saudi government, this is an opportunity to bring the Saudis closer, which is something the Biden administration sees as a strategic benefit.

All three of these countries — big, disparate countries that normally don’t see eye-to-eye, this was a win-win-win on a military, economic, and strategic front.

That’s right. But there was one important actor in the region that did not see itself as winning, and that was the Palestinians.

[MUSIC PLAYING]

First, it’s important to understand that the Palestinians have always expected that the Arab countries in the Middle East would insist that Israel recognize a Palestinian state before those countries were willing to essentially make total peace and have normal relations with Israel.

So when the Abraham Accords happened in the Trump administration, the Palestinians felt like they’d been thrown under the bus because the Abraham Accords gave them virtually nothing. But the Palestinians did still hold out hope that Saudi Arabia would be their savior. And for years, Saudi Arabia has said that Israel must give the Palestinians a state if there’s going to be a normal relationship between Israel and Saudi Arabia.

Now the Palestinians see the Saudis in discussions with the US and Israel about a normalization agreement, and there appears to be very little on offer for the Palestinians. And they are feeling like they’re going to be left out in the cold here.

Right. And in the minds of the Palestinians, having already been essentially sold out by all their other Arab neighbors, the prospect that Saudi Arabia, of all countries, the most important Muslim Arab country in the region, would sell them out, had to be extremely painful.

It was a nightmare scenario for them. And in the minds of many analysts and US officials, this was a factor, one of many, in Hamas’s decision to stage the October 7th attacks.

Hamas, like other Palestinian leaders, was seeing the prospect that the Middle East was moving on and essentially, in their view, giving up on the Palestinian cause, and that Israel would be able to have friendly, normal relations with Arab countries around the region, and that it could continue with hardline policies toward the Palestinians and a refusal, as Prime Minister Benjamin Netanyahu has said publicly, to accept a Palestinian state.

Right. So Michael, once Hamas carries out the October 7th attacks in an effort to destroy a status quo that it thinks is leaving them less and less relevant, more and more hopeless, including potentially this prospect that Saudi Arabia is going to normalize relations with Israel, what happens to these pre-October 7th negotiations between the US, Saudi Arabia, and Israel?

Well, I think there was a snap assumption that these talks were dead and buried. That they couldn’t possibly survive a cataclysm like this.

But then something surprising happened. It became clear that all the parties were still determined to pull-off the normalization.

And most surprisingly of all, perhaps, was the continued eagerness of Saudi Arabia, which publicly was professing outrage over the Israeli response to the Hamas attacks, but privately was still very much engaged in these conversations and trying to move them forward.

And in fact, what has happened is that the scope of this effort has grown substantially. October 7th didn’t kill these talks. It actually made them bigger, more complicated, and some people would argue, more important than ever.

We’ll be right back.

Michael, walk us through what exactly happens to these three-way negotiations after October 7th that ends up making them, as you just said, more complicated and more important than ever?

Well, it’s more important than ever because of the incredible need in Gaza. And it’s going to take a deal like this and the approval of Saudi Arabia to unlock the kind of massive reconstruction project required to essentially rebuild Gaza from the rubble. Saudi Arabia and its Arab friends are also going to be instrumental in figuring out how Gaza is governed, and they might even provide troops to help secure it. None of those things are going to happen without a deal like this.

Fascinating.

But this is all much more complicated now because the price for a deal like this has gone up.

And by price, you mean?

What Israel would have to give up. [MUSIC PLAYING]

From Saudi Arabia’s perspective, you have an Arab population that is furious at Israel. It now feels like a really hard time to do a normalization deal with the Israelis. It was never going to be easy, but this is about as bad a time to do it as there has been in a generation at least. And I think that President Biden and the people around him understand that the status quo between Israel and the Palestinians is intolerable and it is going to lead to chaos and violence indefinitely.

So now you have two of the three parties to this agreement, the Saudis and the Americans, basically asking a new price after October 7th, and saying to the Israelis, if we’re going to do this deal, it has to not only do something for the Palestinians, it has to do something really big. You have to commit to the creation of a Palestinian state. Now, I’ll be specific and say that what you hear the Secretary of State, Antony Blinken, say is that the agreement has to include an irreversible time-bound path to a Palestinian state.

We don’t know exactly what that looks like, but it’s some kind of a firm commitment, the likes of which the world and certainly the Israelis have not made before.

Something that was very much not present in the pre-October 7th vision of this negotiation. So much so that, as we just talked about, the Palestinians were left feeling completely out in the cold and furious at it.

That’s right. There was no sign that people were thinking that ambitiously about the Palestinians in this deal before October 7th. And the Palestinians certainly felt like they weren’t going to get much out of it. And that has completely changed now.

So, Michael, once this big new dimension after October 7th, which is the insistence by Saudi Arabia and the US that there be a Palestinian state or a path to a Palestinian state, what is the reaction specifically from Israel, which is, of course, the third major party to this entire conversation?

Well, Israel, or at least its political leadership, hates it. You know, this is just an extremely tough sell in Israel. It would have been a tough sell before October 7th. It’s even harder now.

Prime Minister Benjamin Netanyahu is completely unrepentantly open in saying that there’s not going to be a Palestinian state on his watch. He won’t accept it. He says that it’s a strategic risk to his country. He says that it would, in effect, reward Hamas.

His argument is that terrorism has forced a conversation about statehood onto the table that wasn’t there before October 7th. Sure, it’s always in the background. It’s a perennial issue in global affairs, but it was not something certainly that the US and Israel’s Arab neighbors were actively pushing. Netanyahu also has — you know, he governs with the support of very right-wing members of a political coalition that he has cobbled together. And that coalition is quite likely to fall apart if he does embrace a Palestinian state or a path to a Palestinian state.

Now, he might be able to cobble together some sort of alternative, but it creates a political crisis for him.

And finally, you know, I think in any conversation about Israel, it’s worth bearing in mind something you hear from senior US officials these days, which is that although there is often finger pointing at Netanyahu and a desire to blame Netanyahu as this obstructionist who won’t agree to deals, what they say is Netanyahu is largely reflecting his population and the political establishment of his country, not just the right-wingers in his coalition who are clearly extremist.

But actually the prevailing views of the Israeli public. And the Israeli public and their political leaders across the spectrum right now with few exceptions, are not interested in talking about a Palestinian state when there are still dozens and dozens of Israeli hostages in tunnels beneath Gaza.

So it very much looks like this giant agreement that once seemed doable before October 7th might be more important to everyone involved than ever, given that it’s a plan for rebuilding Gaza and potentially preventing future October 7th’s from happening, but because of this higher price that Israel would have to pay, which is the acceptance of a Palestinian state, it seems from everything you’re saying, that this is more and more out of reach than ever before and hard to imagine happening in the immediate future. So if the people negotiating it are being honest, Michael, are they ready to acknowledge that it doesn’t look like this is going to happen?

Well, not quite yet. As time goes by, they certainly say it’s getting harder and harder, but they’re still trying, and they still think there’s a chance. But both the Saudis and the Biden administration understand that there’s very little time left to do this.

Well, what do you mean there’s very little time left? It would seem like time might benefit this negotiation in that it might give Israel distance from October 7th to think potentially differently about a Palestinian state?

Potentially. But Saudi Arabia wants to get this deal done in the Biden administration because Mohammed bin Salman has concluded this has to be done under a Democratic president.

Because Democrats in Congress are going to be very reluctant to approve a security agreement between the United States and Saudi Arabia.

It’s important to understand that if there is a security agreement, that’s something Congress is going to have to approve. And you’re just not going to get enough Democrats in Congress to support a deal with Saudi Arabia, who a lot of Democrats don’t like to begin with, because they see them as human rights abusers.

But if a Democratic president is asking them to do it, they’re much more likely to go along.

Right. So Saudi Arabia fears that if Biden loses and Trump is president, that those same Democrats would balk at this deal in a way that they wouldn’t if it were being negotiated under President Biden?

Exactly. Now, from President Biden’s perspective, politically, think about a president who’s running for re-election, who is presiding right now over chaos in the Middle East, who doesn’t seem to have good answers for the Israeli-Palestinian question, this is an opportunity for President Biden to deliver what could be at least what he would present as a diplomatic masterstroke that does multiple things at once, including creating a new pathway for Israel and the Palestinians to coexist, to break through the logjam, even as he is also improving Israel’s relations with Saudi Arabia.

So Biden and the Crown Prince hope that they can somehow persuade Bibi Netanyahu that in spite of all the reasons that he thinks this is a terrible idea, that this is a bet worth taking on Israel’s and the region’s long-term security and future?

That’s right. Now, no one has explained very clearly exactly how this is going to work, and it’s probably going to require artful diplomacy, possibly even a scenario where the Israelis would agree to something that maybe means one thing to them and means something else to other people. But Biden officials refuse to say that it’s hopeless and they refuse to essentially take Netanyahu’s preliminary no’s for an answer. And they still see some way that they can thread this incredibly narrow needle.

Michael, I’m curious about a constituency that we haven’t been talking about because they’re not at the table in these discussions that we are talking about here. And that would be Hamas. How does Hamas feel about the prospect of such a deal like this ever taking shape. Do they see it as any kind of a victory and vindication for what they did on October 7th?

So it’s hard to know exactly what Hamas’s leadership is thinking. I think they can feel two things. I think they can feel on the one hand, that they have established themselves as the champions of the Palestinian people who struck a blow against Israel and against a diplomatic process that was potentially going to leave the Palestinians out in the cold.

At the same time, Hamas has no interest in the kind of two-state solution that the US is trying to promote. They think Israel should be destroyed. They think the Palestinian state should cover the entire geography of what is now Israel, and they want to lead a state like that. And that’s not something that the US, Saudi Arabia, or anyone else is going to tolerate.

So what Hamas wants is to fight, to be the leader of the Palestinian people, and to destroy Israel. And they’re not interested in any sort of a peace process or statehood process.

It seems very clear from everything you’ve said here that neither Israel nor Hamas is ready to have the conversation about a grand bargain diplomatic program. And I wonder if that inevitably has any bearing on the ceasefire negotiations that are going on right now between the two of them that are supposed to bring this conflict to some sort of an end, even if it’s just temporary?

Because if, as you said, Michael, a ceasefire opens the door to this larger diplomatic solution, and these two players don’t necessarily want that larger diplomatic solution, doesn’t that inevitably impact their enthusiasm for even reaching a ceasefire?

Well, it certainly doesn’t help. You know, this is such a hellish problem. And of course, you first have the question of whether Israel and Hamas can make a deal on these immediate issues, including the hostages, Palestinian prisoners, and what the Israeli military is going to do, how long a ceasefire might last.

But on top of that, you have these much bigger diplomatic questions that are looming over them. And it’s not clear that either side is ready to turn and face those bigger questions.

So while for the Biden administration and for Saudi Arabia, this is a way out of this crisis, these larger diplomatic solutions, it’s not clear that it’s a conversation that the two parties that are actually at war here are prepared to start having.

Well, Michael, thank you very much. We appreciate it.

On Tuesday afternoon, under intense pressure from the US, delegations from Israel and Hamas arrived in Cairo to resume negotiations over a potential ceasefire. But in a statement, Israel’s Prime Minister Benjamin Netanyahu made clear that even with the talks underway, his government would, quote, “continue to wage war against Hamas.”

Here’s what else you need to know today. In a dramatic day of testimony, Stormy Daniels offered explicit details about an alleged sexual encounter with Donald Trump that ultimately led to the hush money payment at the center of his trial. Daniels testified that Trump answered the door in pajamas, that he told her not to worry that he was married, and that he did not use a condom when they had sex.

That prompted lawyers for Trump to seek a mistrial based on what they called prejudicial testimony. But the judge in the case rejected that request. And,

We’ve seen a ferocious surge of anti-Semitism in America and around the world.

In a speech on Tuesday honoring victims of the Holocaust, President Biden condemned what he said was the alarming rise of anti-Semitism in the United States after the October 7th attacks on Israel. And he expressed worry that too many Americans were already forgetting the horrors of that attack.

The Jewish community, I want you to know I see your fear, your hurt, and your pain. Let me reassure you, as your president, you’re not alone. You belong. You always have and you always will.

Today’s episode was produced by Nina Feldman, Clare Toeniskoetter, and Rikki Novetsky. It was edited by Liz O. Baylen, contains original music by Marion Lozano, Elisheba Ittoop, and Dan Powell, and was engineered by Alyssa Moxley. Our theme music is by Jim Brunberg and Ben Landsverk of Wonderly.

That’s it for The Daily. I’m Michael Barbaro. See you tomorrow.

The Daily logo

  • May 16, 2024   •   30:47 The Make-or-Break Testimony of Michael Cohen
  • May 15, 2024   •   27:03 The Possible Collapse of the U.S. Home Insurance System
  • May 14, 2024   •   35:20 Voters Want Change. In Our Poll, They See It in Trump.
  • May 13, 2024   •   27:46 How Biden Adopted Trump’s Trade War With China
  • May 10, 2024   •   27:42 Stormy Daniels Takes the Stand
  • May 9, 2024   •   34:42 One Strongman, One Billion Voters, and the Future of India
  • May 8, 2024   •   28:28 A Plan to Remake the Middle East
  • May 7, 2024   •   27:43 How Changing Ocean Temperatures Could Upend Life on Earth
  • May 6, 2024   •   29:23 R.F.K. Jr.’s Battle to Get on the Ballot
  • May 3, 2024   •   25:33 The Protesters and the President
  • May 2, 2024   •   29:13 Biden Loosens Up on Weed
  • May 1, 2024   •   35:16 The New Abortion Fight Before the Supreme Court

Hosted by Michael Barbaro

Featuring Michael Crowley

Produced by Nina Feldman ,  Clare Toeniskoetter and Rikki Novetsky

Edited by Liz O. Baylen

Original music by Marion Lozano ,  Elisheba Ittoop and Dan Powell

Engineered by Alyssa Moxley

Listen and follow The Daily Apple Podcasts | Spotify | Amazon Music | YouTube

If and when Israel and Hamas reach a deal for a cease-fire, the United States will immediately turn to a different set of negotiations over a grand diplomatic bargain that it believes could rebuild Gaza and remake the Middle East.

Michael Crowley, who covers the State Department and U.S. foreign policy for The Times, explains why those involved in this plan believe they have so little time left to get it done.

On today’s episode

inheritance follows which approach to problem solving

Michael Crowley , a reporter covering the State Department and U.S. foreign policy for The New York Times.

A young man is looking out at destroyed buildings from above.

Background reading :

Talks on a cease-fire in the Gaza war are once again at an uncertain stage .

Here’s how the push for a deal between Israel and Saudi Arabia looked before Oct. 7 .

From early in the war, President Biden has said that a lasting resolution requires a “real” Palestinian state .

Here’s what Israeli officials are discussing about postwar Gaza.

There are a lot of ways to listen to The Daily. Here’s how.

We aim to make transcripts available the next workday after an episode’s publication. You can find them at the top of the page.

The Daily is made by Rachel Quester, Lynsea Garrison, Clare Toeniskoetter, Paige Cowett, Michael Simon Johnson, Brad Fisher, Chris Wood, Jessica Cheung, Stella Tan, Alexandra Leigh Young, Lisa Chow, Eric Krupke, Marc Georges, Luke Vander Ploeg, M.J. Davis Lin, Dan Powell, Sydney Harper, Mike Benoist, Liz O. Baylen, Asthaa Chaturvedi, Rachelle Bonja, Diana Nguyen, Marion Lozano, Corey Schreppel, Rob Szypko, Elisheba Ittoop, Mooj Zadie, Patricia Willens, Rowan Niemisto, Jody Becker, Rikki Novetsky, John Ketchum, Nina Feldman, Will Reid, Carlos Prieto, Ben Calhoun, Susan Lee, Lexie Diao, Mary Wilson, Alex Stern, Dan Farrell, Sophia Lanman, Shannon Lin, Diane Wong, Devon Taylor, Alyssa Moxley, Summer Thomad, Olivia Natt, Daniel Ramirez and Brendan Klinkenberg.

Our theme music is by Jim Brunberg and Ben Landsverk of Wonderly. Special thanks to Sam Dolnick, Paula Szuchman, Lisa Tobin, Larissa Anderson, Julia Simon, Sofia Milan, Mahima Chablani, Elizabeth Davis-Moorer, Jeffrey Miranda, Renan Borelli, Maddy Masiello, Isabella Anderson and Nina Lassam.

Michael Crowley covers the State Department and U.S. foreign policy for The Times. He has reported from nearly three dozen countries and often travels with the secretary of state. More about Michael Crowley

Advertisement

IMAGES

  1. Pedigree Analysis meaning, Inheritance Pattern and Problem Solving tips

    inheritance follows which approach to problem solving

  2. Problem-Solving Strategies: Definition and 5 Techniques to Try

    inheritance follows which approach to problem solving

  3. four steps of problem solving process

    inheritance follows which approach to problem solving

  4. Problem Solving Cycle

    inheritance follows which approach to problem solving

  5. Five-step systematic approach to information problem solving (based on

    inheritance follows which approach to problem solving

  6. what are different approaches to problem solving

    inheritance follows which approach to problem solving

VIDEO

  1. Paper 3 -INHERITANCE- HOW to answer set books based questions

  2. Inheritance Tracing (Practice Problem

  3. New leader seems to be saying inheritance follows maternal line Patriarchy wishes to stop/control it

  4. The Cost of Inheritance (U.S. History and Reparations)

  5. Principles of Inheritance and Variation

  6. MRNUFFSAID

COMMENTS

  1. Difference between Bottom-Up Model and Top-Down Model

    4. In this the communications is less among modules. In this module must have communication. 5. It is used in debugging, module documentation, etc. It is basically used in testing. 6. In top down approach, decomposition takes place. In bottom up approach composition takes place.

  2. How to solve problems using Inheritance and Polymorphism in Python

    That is the power of using inheritance and polymorphism to solve problems. If the type is FamilyCustomer, the method intro that will be executed is the one implemented in the class FamilyCustomer. The same applies to the other two types of objects. If you execute the same code from our first solution, using the new implementation, the result ...

  3. PDF Java, Java, Java

    This approach seems now to have gained in popularity as more and more instructors have begun to appreciate the advantages of the object-oriented perspective. Object Orientation (OO) is a fundamental problem solving and design concept, not just another language detail that should be relegated to the middle or the end of the book (or course).

  4. 1.13. Inheritance in C++

    Inheritance in C++ — Problem Solving with Algorithms and Data Structures using C++. 1.13. Inheritance in C++ ¶. In this section we introduce another important aspect of object-oriented programming. Inheritance is the ability for one class to be related to another class in much the same way that people can be related to one another.

  5. What is the exact problem with multiple inheritance?

    @IanGoldby: Virtual inheritance is a mechanism for solving part of the problem, if one does not need to allow identity-preserving upcasts and downcasts among all of the types from which an instance is derived or for which it is substitutable. Given X:B; Y:B; and Z:X,Y; assume someZ is an instance of Z.

  6. Inheritance Best Practices

    00:18 We'll start with inheritance. First off, it's a good idea to try to follow the Liskov substitution principle when you can. If you remember, this states that if some interface requires a specific type of object, you can substitute in a class that is a child of that type so long as it properly inherits the interface it needs.

  7. Apply Inheritance in Python Code

    One of the most useful things about object-oriented programming is the concept of inheritance. Inheritance allows you to create a subclass (or child) of a class that contains the parent's attributes and other attributes specific to the child. Here is an example of two classes: Person and Employee. Employee is a subclass/child of Person, and ...

  8. Object-Oriented Programming- concepts and problem solving

    1. The real world is made up of objects and each object has its own behaviour and characteristics. Using object-oriented programming we can represent real world problems and solve them in a much more efficient manner. This paper has represented several real-world problems and how it is solved using objects and classes.

  9. Creativity break: what are some new ways of thinking about problem solving?

    So it requires combining all those different ways of thinking, being communicative and problem solving and working with other people so that you can reach solutions that actually benefit the world, because some solutions are gonna be great on paper, but in practice, they aren't really practical. So that's why using new ways of thinking to solve ...

  10. Solving Problems in Genetics

    Heredity 88 , 414 ( 2002) Cite this article. Solving Problems in Genetics. Richard V Kowles Springer-Verlag, New York; 2001. 479 pp. $24.95, paperback. ISBN -387-98841-6. Few subjects have ...

  11. object oriented

    The classic inheritance example is to make a graphics program that deals with geometric objects. We have Circle s, Ellipse s and Triangle s. All these objects have a common base Drawable. In C++ this might look something like this: virtual ~Drawable(){} virtual void draw() const = 0;

  12. Problem Solving in Genetics: Content Hints Can Help

    Problem solving is an integral part of doing science, yet it is challenging for students in many disciplines to learn. We explored student success in solving genetics problems in several genetics content areas using sets of three consecutive questions for each content area. To promote improvement, we provided students the choice to take a content-focused prompt, termed a "content hint ...

  13. What exactly is a programming paradigm?

    The logic programming paradigm takes a declarative approach to problem-solving. It's based on formal logic. The logic programming paradigm isn't made up of instructions - rather it's made up of facts and clauses. It uses everything it knows and tries to come up with the world where all of those facts and clauses are true.

  14. Inheritance (genetic algorithm)

    Inheritance (genetic algorithm) In genetic algorithms, inheritance is the ability of modeled objects to mate, mutate (similar to biological mutation ), and propagate their problem solving genes to the next generation, in order to produce an evolved solution to a particular problem. The selection of objects that will be inherited from in each ...

  15. Python Inheritance Questions & Answers

    Check Answer. Question 2: What is overriding? Overriding can occur in the case of inheritance of classes. It is a process of redefining inherited method in child class. It is a magic method in Python. None of these. Check Answer. Question 3: What kind of relationship exists between inherited class and base class? IS A.

  16. Introduction to Genetic Algorithms

    Each individual is a solution to the problem you want to solve. An individual is characterized by a set of parameters (variables) known as Genes. Genes are joined into a string to form a Chromosome (solution). In a genetic algorithm, the set of genes of an individual is represented using a string, in terms of an alphabet.

  17. Inheritance Coding with Gagné-Based Learning Hierarchy Approach to

    This study developed an inheritance coding with Gagné-based learning hierarchy approach to building systems for assessing mathematics skills and diagnosing student learning problems. The proposed Gagné-based learning hierarchy approach combines Gagné learning hierarchy theory with an inheritance coding approach. First, Gagné learning hierarchy theory is used to generate test questions and ...

  18. Inheritance

    d) Protected and Private. View Answer. 10. If a base class is inherited in protected access mode then which among the following is true? a) Public and Protected members of base class becomes protected members of derived class. b) Only protected members become protected members of derived class. c) Private, Protected and Public all members of ...

  19. Inheritance

    Objective Today, we're delving into Inheritance. Check out the Tutorial tab for learning materials and an instructional video!. Task You are given two classes, Person and Student, where Person is the base class and Student is the derived class. Completed code for Person and a declaration for Student are provided for you in the editor. Observe that Student inherits all the properties of Person.

  20. Tips on Problem Solving ≠ From Introduction to Genetics 8th edition

    Tips on Problem Solving ≠ From Introduction to Genetics 8 th edition. Ratios: a 1:2:1 (or 3:1) ratio indicates that one gene is involved (see Problem 3). A 9:3:3:1 ratio, or some modification of it, indicates that two genes are involved (see Problem 4). ... A Systematic Approach to Problem Solving Now that you have struggled with a number of ...

  21. Problem-Solving Strategies: Definition and 5 Techniques to Try

    In insight problem-solving, the cognitive processes that help you solve a problem happen outside your conscious awareness. 4. Working backward. Working backward is a problem-solving approach often ...

  22. PDF Mendel's Laws: Their Application to Solving Genetics Problem

    Use critical thinking and scientific problem-solving to make informed decisions in the laboratory. Instructors will demonstrate how to apply Mendelian genetics laws and the Punnett square to solve genetics problems. Afterward, students will work in teams of 2 - 4 students and be assigned a genetics problem to solve.

  23. Python Inheritance MCQ

    Python Multiple Choice Questions - Inheritance. This set of Python Multiple Choice Questions & Answers (MCQs) focuses on "Inheritance". 1. Which of the following best describes inheritance? a) Ability of a class to derive members of another class as a part of its own definition. b) Means of bundling instance variables and methods in order ...

  24. A Plan to Remake the Middle East

    Produced by Nina Feldman , Clare Toeniskoetter and Rikki Novetsky. Edited by Liz O. Baylen. Original music by Marion Lozano , Elisheba Ittoop and Dan Powell. Engineered by Alyssa Moxley. If and ...