IBM Quantum Developer Certification v2.X Sample Test Explanation Part 2
In 2025, a new certification aligned with the latest Qiskit version, “IBM Certified Quantum Computation using Qiskit v2.X Developer - Associate”, has been released.
By obtaining this certification, you can demonstrate your knowledge of Qiskit and quantum programming!
To earn this certification, you need to pass the exam titled “Exam C1000-179: Fundamentals of Quantum Computing Using Qiskit v2.X Developer” as mentioned in the URL above. IBM also provides a Sample Test related to this exam, which is available in the “Sample Test” section on the website linked above.
However, the explanations are not provided in the Sample Test page, so I will include clear explanations as much as possible. This page contains explanations for questions 11 to 21. For the explanations of questions 1 to 10, please refer to this page.
Amazon Braket Learning Course
I have also created a learning course on Amazon Braket, AWS’s quantum computing service.
This course is designed for those with no prior knowledge of quantum computing or AWS, and by the end, you’ll even be able to learn about quantum machine learning. Take advantage of this opportunity to build your skills in quantum technologies!
問題11:
Which code fragment is the correct way to open a session?
選択肢:
- A.
from qiskit_ibm_runtime import Session
session = Session(system='ibm_foo')
- B.
from qiskit_ibm_runtime import execute, QiskitRuntimeService
service = QiskitRuntimeService()
session = execute(service=service)
- C.
from qiskit_ibm_runtime import Session, QiskitRuntimeService
service = QiskitRuntimeService()
session = Session(service.least_busy())
- D.
from qiskit import QuantumCircuit
session = QuantumCircuit(2).open_session()
回答: C
解説: As explained in Sample Test 10 on this page, sessions are a useful feature when running quantum-classical algorithms such as VQC. Instructions for using sessions are available here. As you can see from this site, the correct code is C. Codes A, B, and D will result in an error when executed.
問題12:
Which one of the following patterns, expressed in terms of array broadcasting primitives, is represented by the given image?
選択肢:
-
A. Standard multidimensional array generalization
-
B. All-to-all
-
C. Extended dimensional variation
-
D. Best effort broadcasting
回答: A
解説: In quantum machine learning algorithms such as VQC, you may want to calculate the expected value for multiple parameter sets and multiple observables (operators) as shown in the diagram. “Primitive inputs and outputs” explains the format in which the expected value can be obtained when performing calculations with multiple parameter sets and observables. As this page also states, this calculation falls under standard multidimensional array generalization, so A is the correct answer.
問題13:
Given the following code fragment, which one of the following describes the SamplerOptions parameter options.default_shots?
...
from qiskit_ibm_runtime import Sampler
sampler = Sampler(mode=backend)
sampler.options.default_shots = ...
選択肢:
-
A. The sum of the number of measurements in each qubit
-
B. The number of randomizations we apply to the circuit
-
C. The number of times that we run the circuit
-
D. The number of sequences in dynamical decoupling
回答: C
解説:
Because quantum computers are prone to errors, quantum circuits are run and measured multiple times. The “shots” parameter in Sampler indicates how many times the circuit is run,so C is the correct answer. For example, if you configure the code shown below and run sampler, it will run 300 times by default.
sampler.options.default_shots = 300
問題14:
Given the code snippet, which one of the following is a valid way to invoke the run method on an instance of SamplerV2?
from qiskit_ibm_runtime import SamplerV2
...
sampler = SamplerV2(...)
選択肢:
-
A.
sampler.run([isa_circuit]) -
B.
sampler.run(distribution, isa_circuit) -
C.
sampler.run(isa_circuit, distribution='gauss') -
D.
sampler.run([isa_circuit1, isa_circuit2], runs=1024)
回答: A
解説:
The usage of the run() method is described here, and in this Sample Test, A will run the circuit correctly. B and C are incorrect because an argument named distribution does not exist in run(). D can be run by changing runs to shots. In this case, isa_circuit1 and isa_circuit2 will be run and the results will be stored.
問題15:
Which one of the following describes the expected behavior of the number of shots if the value for the parameter precision were changed from 0.015625 to 0.03125?
選択肢:
-
A. It increases the number of shots quadratically
-
B. It increases the number of shots exponentially
-
C. It has no effect on the number of shots
-
D. It decreases the number of shots
回答: D
解説: A brief explanation of default_precision and default_shots can be found here. You can also check the source code of backend_estimator_v2. As can be seen from these, increasing the precision value (i.e., making the precision coarser) reduces the number of shots. Therefore, option D is correct.
問題16:
Which error mitigation technique can be applied using resilience options?
選択肢:
-
A. Pauli twirling
-
B. Dynamical decoupling
-
C. Zero Noise Extrapolation
-
D. Full quantum error correction
回答: C
解説: Resilience options are settings used to obtain computation results that are robust against noise. Details are provided here, and the Zero-Noise Extrapolation (ZNE) error mitigation method is available. This technique estimates the result as if there were no noise by intentionally increasing the noise and analyzing the outcomes. Therefore, the correct answer is C. Options A, B, and D are not available under resilience options.
問題17:
Which format should a primitive unified bloc (PUB) tuple follow for the Estimator primitive?
選択肢:
-
A.
pub = (circuit, observable, parameter_values, backend) -
B.
pub = (circuit, observable, parameter_values, precision) -
C.
pub = (circuit, observable, shots, optimization_level) -
D.
pub = (circuit, observable, resilience_level, noise_model)
回答: B
解説:
The Estimator primitive can calculate the expectation value for a given quantum circuit, observable, and parameter values. Additionally, since the Estimator primitive allows specifying precision, which was introduced in Sample Test 15, the correct answer is B.
When using the Estimator primitive for quantum machine learning tasks such as VQC, the circuit incorporates both the data and the machine learning model, the parameter_values represent the model parameters, and the observable defines the operator used to extract results from the quantum circuit tailored for machine learning.
If you’re interested in learning more about quantum machine learning, you may find this course helpful.
問題18:
Which statement describes the purpose of a Qiskit Runtime session?
選択肢:
-
A. Automatically generate quantum algorithms based on user input
-
B. Visualise the results of quantum experiments in real time
-
C. Group a collection of calls to the quantum computer
-
D. Compile and optimise quantum circuits for different backends
回答: C
解説: As explained in Sample Test 10, session mode provides a dedicated time slot during which the quantum system is exclusively reserved for the user. In variational algorithms such as VQC and VQE, classical and quantum computations are performed alternately. If the system had to wait for other users’ jobs between each quantum computation, the overall process would take a significant amount of time. By using session mode, quantum executions can be grouped together, allowing variational algorithms to run much faster. Therefore, the correct answer is C.
問題19:
Which two of the following pieces of information are part of the dictionary returned by session.details(), assuming that session is an instance of qiskit_ibm_runtime.Session?
選択肢:
-
A. Quantum circuit depth
-
B. Timestamp of the last job in the session that completed
-
C. Session state
-
D. Primitive options
-
E. Primitive unified blocs (PUBs) in each job
回答: B, C
解説:
Information about session.details() can be found here
. As stated on this page, the correct answers are B and C. Other information cannot be obtained from session.details().
問題20:
Which one of the following is a classical data type supported by OpenQASM 3?
選択肢:
-
A. complex
-
B. class
-
C. char
-
D. enum
回答: A
解説: OpenQASM (Open Quantum Assembly Language) 3 is a quantum programming language developed primarily by IBM. The supported types for classical scalar types are listed here, and based on that, the correct answer is A. The types listed in B, C, and D are not supported.
問題21:
Which method should be used to export a Qiskit circuit named qc to OpenQASM 3 and store it into a file stream named qasmprogram?
選択肢:
-
A.
qc.to_openqasm3(qasmprogram) -
B.
qiskit.qasm3.dump(qc, qasmprogram) -
C.
qasmprogram.export_to_qasm3(qc) -
D.
qiskit.qasm3.export(qc, qasmprogram)
回答: B
解説: Since option B allows saving in OpenQASM 3 format, option B is the correct answer. An example of such code is shown below:
from qiskit import QuantumCircuit
from qiskit import qasm3
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
with open("bell.qasm", "w") as qasmprogram:
qasm3.dump(qc, qasmprogram)
When you run this, a bell.qasm file will be created in the same location as the python file.
OPENQASM 3.0;
include "stdgates.inc";
qubit[2] q;
h q[0];
cx q[0], q[1];
The other options A, C, and D will result in an error if executed.
For the explanations of questions 1 to 10, please refer to this page.
Amazon Braket Learning Course
I have also created a learning course on Amazon Braket, AWS’s quantum computing service.
This course is designed for those with no prior knowledge of quantum computing or AWS, and by the end, you’ll even be able to learn about quantum machine learning. Take advantage of this opportunity to build your skills in quantum technologies!