Nature of the subject
What is computer science?
Computer science is no more about computers than astronomy is about telescopes. (Dijkstra,
1967)
Computer science is the study of computers and computational systems. It covers a range of
topics related to the theoretical aspects of computing, including algorithms and software
design, and the application of computer science to solve practical problems. Computer
science is distinct from the natural sciences in that it does not rely on hypothesis and
experimentation. Computer science can be considered to be crossdisciplinary, as it draws
from a range of disciplines, especially mathematics.
What is computational thinking?
Computational thinking is the thought processes involved in formulating a problem and
expressing its solution(s) in such a way that a computer—human or machine—can effectively
carry out.
(Wing, 2014)
In the DP computer science course, students develop computational thinking, a problem-
solving technique that can be applied to everyday challenges. Computational thinking is a
crucial skill set in the modern digital age, allowing us to tackle problems by leveraging the
power of computer processes. As highlighted in the quote by Jeannette Wing, computational
thinking does not necessarily involve programming. Rather, it focuses on understanding and
solving problems in a manner that a computer could execute.
The key components of computational thinking begin with a problem and then comprise the
following.
Problem specification: Clearly defining and understanding the nature of a problem,
the limitations and its scope for establishing solution goals.
Decomposition: Breaking down a complex problem or system into smaller, more
manageable parts.
Pattern recognition: Identifying similarities to other problems, or identifying
recurring elements in the system, to make predictions and develop algorithms.
Abstraction: Focusing on essential features and high-level ideas, whilst removing
unnecessary detail, to develop a system overview.
Algorithmic thinking: Developing a step-by-step series of instructions for solving a
particular problem.
Testing and evaluation: Assessing a potential solution against the initial expected
goals to determine the effectiveness of the solution, or the adjustments needed to
solve the problem completely.
Skills in the study of computer science
The goal of computer science is to solve meaningful problems—problems for which an
obvious algorithm is not available. To solve problems, the practical skills of computer
science need to be developed as part of the computational thinking process.
The skills of computer science can be classified as both technical skills and personal skills.
Technical skills are centred on algorithmic thinking and computer programming. Personal
skills are focused on the ability to collaborate, think critically, think imaginatively and
engage in the process of computational thinking.
Computational thinking and course content
The focus of the DP computer science course is computational thinking. Wherever possible,
learning and teaching should take place with computational thinking in mind. This will
develop students' understanding of this concept and develop their ability to apply it. The
focus on computational thinking also allows students to develop the skills needed for the IA
task—the computational solution.
Practical skills in computer science
Integral to the student experience of computer science is the learning that takes place through
the practical application of computational thinking within the classroom or in an external
context. Introducing a topic by raising problem scenarios that can be addressed using
computational thinking develops in students a practical methodology with a focus on
problem-solving. Progressive increasing complexity in these scenarios then promotes the
development, improvement and consolidation of the practical skills of algorithmic thinking
and computer programming.
Students are encouraged to improve their practical skills of algorithmic thinking and
programming through the conceptual and methodological perspectives of computational
thinking.
Algorithmic thinking
An algorithm is a precise sequence of well-defined instructions designed to solve specific
problems or perform tasks. Algorithms are vital in computer science and are a cornerstone of
software development, underpinning data manipulation, search, sorting and optimizing. They
allow computers to execute tasks accurately and efficiently.
Algorithmic thinking—the process of developing algorithms—is a critical component of
computational thinking. The algorithmic thinking process fosters the capacity to abstract
problems and formulate algorithms, whether as code or in other forms of representation.
The process of algorithmic thinking has four key steps.
1. **Problem exploration and parameter variation:** Analyse the problem by working
through examples with different parameters to uncover patterns and inform algorithm design.
2. **Detailed step-by-step documentation:** Record the steps taken for the different
parameters to create a first draft of the algorithm.
3. **Pattern recognition and generalization:** Identify recurring patterns across different
parameters to develop a set of steps applicable to a general parameter, converting the specific
process in the first draft into a general algorithm.
4. **Testing and validation:** Finalize the algorithm by subjecting it to rigorous testing with
a range of input parameters to ensure consistent and correct results. This is an iterative
process, much like the scientific method, that never guarantees universal applicability.
However, a good testing strategy will allow the algorithm to be refined and validated. This
refinement will take into account the algorithm's performance in terms of time (run time) and
space (memory requirements). Different algorithms can solve the same problem, but there
may be differences in terms of efficiency.
The set of steps described above assumes that algorithmic thinking always involves
identifying a pattern, generalizing it to form an algorithm, and then testing the algorithm.
This is quite similar to the scientific method of observation, hypothesis and experimentation.
However, it is important to note that the validity of algorithms can also be judged by the
logical sequence of their instructions and the validity of their mathematical calculations.
In the process of developing these skills, students should be able to write technical
documentation, including constructing different types of diagrams that illustrate the
functional requirements and internal structures of the software solution.
Computer programming languages
The key application of algorithmic thinking to solve problems in computer science is
computer programming. Students should be able to apply their skills of algorithmic thinking
by developing a relevant computer program or software application. The skills of computer
programming are a fundamental part of the computer science course and students will need to
develop these skills in the relevant programming language: Java or Python. Course material
is not specific to either programming language.
Examination questions that include code will have two versions of the question, one in Java
and one in Python. These questions will be comparable, assessing the same topics from the
syllabus with the same contexts, and assessing the same assessment objectives (AO).
The Python programming language has a number of built-in functions that can help with
finding solutions to common computational challenges. The use of functions such as sort,
pop, len, max and min can be very useful when programming algorithms and their use is
encouraged in tasks such as the IA computational solution. However, in order to assess the
full range of students' abilities, certain questions in the examination will prohibit specific
built-in functions. These instances will be clearly indicated in the examination papers.
What is the impact of computer science?
Computational thinking is a process that can be transferred to, and applied in, many different
disciplines. These include mathematics and the natural sciences, but also disciplines outside
the sciences where computation plays a role in deriving results. In computer science, the
computational thinking process is used to solve problems by applying the skills of
algorithmic thinking and computer programming.
The problems that computer scientists solve often respond to challenges in the real world, so
their solutions can have a profound impact on society, transforming many aspects of our daily
lives, businesses, industries and government. These societal changes come with challenges,
such as issues of privacy, digital addiction and the digital divide.
As society continues to evolve with technology, it is crucial to address these concerns to
ensure that the benefits of computer science are shared equitably and its potential pitfalls are
mitigated. Computer scientists should be aware that when they abstract a problem to find a
computational solution, this solution may well have far-reaching applications and
consequences in the real world, significantly affecting the everyday lives of millions.
As with all disciplines, there are ethical issues associated with computer science, particularly
when it is applied to practical uses. Computer scientists need to consider that solutions and
developments that may not initially seem to raise ethical questions could yet be applied in
contexts that are ethically problematic.
Ethics is addressed directly in the topic on machine learning (A4.4.1); meanwhile other topics
address ethical issues through linking questions and TOK questions.
The syllabus and conceptual understanding
The structure of this computer science syllabus aims to promote concept-based learning and
teaching through the organizing concept of computational thinking. The syllabus is intended
to examine key concepts in computer science—computer fundamentals, networks, databases
and machine learning—and then apply practical skills to support the computation thinking
process to solve problems. The key practical skills are algorithmic thinking and
programming.
There are two organizing structures for the syllabus reflected as two separate themes.
Theme A: Concepts of computer science
Theme B: Computational thinking and problem-solving
The themes of the course have been chosen to represent the connection between abstract
ideas of how computing systems operate (theme A), and their application using the practical
skills of computer science to solve problems through the process of computational thinking
(theme B).
Each of these themes is subdivided into topics with guiding questions, recommended
teaching hours for each level, and linking questions. The topics are divided into subtopics,
each with learning statements that state the understandings that students should develop and
further guidance.
The purpose of the guiding questions for each topic is to promote inquiry. They are therefore
not straightforward and are best answered once the associated understandings have been
acquired. Teachers and students are encouraged to create their own guiding questions based
on the content of units of study.
The linking questions at the end of each topic are designed to facilitate connections. These
links promote conceptual understanding of computer science as a network of complementary
ideas that relate to each other and beyond—to understandings outside the field of computer
science.
For example, when considering the processes and structures within a computer's central
processing unit (CPU), students can start with the structure of the instruction set architecture,
connect this to the execution of machine code instructions, and in turn connect this to the
running of software applications. By looking at this process through the concept of
computational efficiency, principles of algorithm optimization and resource management are
also highlighted, which further connects to other areas of computer science.
Note that the linking questions found in the guide are not exhaustive. Students and teachers
may well encounter other connections between understandings and concepts in the syllabus,
leading to additional linking questions.
Prior learning
Past experience demonstrates that students are able to study computer science at SL
successfully with no background in the subject. Their approach to study, characterized by
specific IB learner profile attributes, will be significant.
For students considering computer science at HL, some previous exposure to programming is
recommended, although there is no intention to restrict access. HL demands a higher level of
problemsolving skills and a greater ability to understand and manipulate abstract concepts.
Students who enjoy mathematical problem-solving are well suited to studying HL computer
science.
Links to the Middle Years Programme
The Middle Years Programme (MYP) offers a coherent pedagogical framework for learning
and teaching, alongside flexibility and choice regarding specific curriculum content.
MYP mathematics and design courses can expose students to the practical skills of computer
programming and algorithmic thinking, and can therefore be a good basis for students to
study DP computer science. It is also true that MYP mathematics and design courses can
differ greatly between different MYP schools. Therefore, some students may not have been
exposed to programming. But the principles underpinning the MYP curriculum—inquiry,
problem-solving and critical thinking—will be of benefit to any student choosing to study DP
computer science. The DP course requires students to become actively involved in and
focused on problem-solving through the computational thinking process, building on the
skills acquired during the MYP, especially in mathematics.
To successfully complete the DP computer science IA task (the computational solution),
students are expected to create a solution to a specific problem of their own choosing using
computational thinking. This extends the range of skills and attributes developed in MYP,
including the ability to work independently and in collaboration with other students.
Links to the Career-related Programme
In the Career-related Programme (CP), students study at least two DP subjects, a core
consisting of four components and a career-related study, which is determined by the local
context and aligned with student needs. The CP has been designed to add value to the
student's career-related studies. This provides the context for the choice of DP courses.
Courses can be chosen from any group of the DP. It is also possible to study more than one
course from the same group (for example, visual arts and film).
Computer science may be a beneficial choice for CP students considering careers in, for
example, the technology, financial, manufacturing and telecommunications industries, and
international business. The use of computers in work and everyday life is ubiquitous. This is
commonly known as information technology. However, computer science is not the same as
information technology, and is concerned with both how computers work and how computing
can be used to solve real-world problems. In addition to skills in information technology,
understanding the role of computer science in a career-related activity can be beneficial. The
ability to use computational thinking and developing programming skills are important in
many future-facing careers.
Computer science encourages the development of strong problem-solving skills, critical
thinking and computational thinking, and a deep understanding of how digital systems work,
all of which will help students prepare for the future global workplace. This in turn fosters the
IB learner profile attributes that are transferable to the entire CP, providing relevance and
support for the student's learning.
For CP students, DP courses can be studied at SL or HL. Schools can explore opportunities to
integrate CP students with DP students.
Collaborative sciences project
The collaborative sciences project is an interdisciplinary sciences project, providing a
worthwhile challenge to DP and CP students, addressing real-world problems that can be
explored through the sciences. The nature of the challenge should allow students to integrate
factual, procedural and conceptual knowledge developed through the study of their
disciplines.
Aims and objectives
Computer science aims
The course enables students to:
1. develop conceptual understanding that allows connections to be made between different
areas of the subject, and to other DP subjects 2. acquire and apply a body of knowledge,
methods, tools and techniques that characterize computer science 3. analyse and evaluate
solutions developed through computational thinking in a range of contexts 4. approach
unfamiliar situations with creativity and resilience 5. use computational thinking to design
and implement solutions to local and global problems 6. develop an appreciation of the
possibilities and limitations of computer science 7. evaluate the impact of emerging
technologies in computer science 8. communicate and collaborate effectively 9. develop
awareness of the environmental, economic, cultural and social impact of computer science,
its applications and ethical implications.
Assessment objectives
The objectives for computer science are as follows.
AO1 Demonstrate knowledge and understanding of:
facts, concepts, principles and terminology in computer science
appropriate methods, techniques and skills to solve problems using computational
thinking.
AO2 Apply and use:
facts, concepts, principles and terminology in computer science
appropriate methods, techniques and skills to solve problems using computational
thinking
appropriate methods to present information in computer science.
AO3 Construct, synthesize, analyse and evaluate:
problem specifications, system requirements, success criteria, testing strategies and
programs
appropriate techniques to solve a problem
relevant data, information and technological explanations for solutions.
AO4 Demonstrate the application of computational thinking skills to solve real-world
problems using computer science solutions.
Assessment objectives in practice
The assessment components align with the course aims, objectives and conceptual approach.
This allows students to demonstrate their learning effectively, through varied tasks that are
reliably and accurately marked or moderated by subject-specific educators and experts.
Assessment objective
Which component addresses this assessment objective?
How is the assessment objective addressed?
AO1 Demonstrate knowledge and understanding
Paper 1 Paper 2 IA: The computational solution
Students respond to a range of short and extended-response questions. Students develop a
solution to an appropriate problem of their choice.
AO2 Apply and use knowledge
Paper 1 Paper 2 IA: The computational solution
Students respond to a range of short and extended-response questions. Students develop a
solution to an appropriate problem of their choice.
AO3 Construct, synthesize, analyse and evaluate
Paper 1 Paper 2 IA: The computational solution
Students respond to a range of short and extended-response questions. Students develop a
solution to an appropriate problem of their choice.
AO4 Demonstrate the application of computational thinking skills to solve real world
problems using computer science solutions
IA: The computational solution
Students develop a solution to an appropriate problem of their choice.
Component
Approximate weighting of assessment objectives (%)
AO1 + AO2
AO3
Paper 1
50
50
Paper 2
50
50
IA
Covers AO1, AO2, AO3 and AO4
Syllabus outline
Syllabus component
Teaching hours
SL
HL
Syllabus content
105
195
Theme A: Concepts of computer science
A1 Computer fundamentals
11
18
A2 Networks
11
18
A3 Databases
11
18
A4 Machine learning
18
Theme B: Computational thinking and problem-solving
B1 Computational thinking
B2 Programming
40
42
B3 Object-oriented programming
23
B4 Abstract data types—HL only
23
Case study
15
30
Internal assessment
35
35
The computational solution
35
35
Collaborative sciences project
10
10
Total teaching hours
150
240
The recommended teaching time is 240 hours to complete HL courses and 150 hours to
complete SL courses, as stated in section "B1 General regulations: Diploma Programme" of
the publication Diploma Programme Assessment procedures (updated annually).
Assessment in the Diploma Programme
General
Assessment is an integral part of learning and teaching. The most important aims of
assessment in the DP are that it should support curricular goals and encourage appropriate
student learning. Both external and internal assessments are used in the DP. IB examiners
mark work produced for external assessment, while work produced for internal assessment is
marked by teachers and externally moderated by the IB.
There are two types of assessment identified by the IB.
Formative assessment informs both learning and teaching. It is concerned with
providing accurate and helpful feedback to students and teachers on the kind of
learning taking place and the nature of students' strengths and weaknesses in order to
help develop students' understanding and capabilities. Formative assessment can also
help to improve teaching quality, as it can provide information to monitor progress
towards meeting the course aims and objectives.
Summative assessment gives an overview of previous learning and is concerned with
measuring student achievement at, or towards the end of, the course of study.
Methods of assessment
The IB uses several methods to assess work produced by students.
Assessment outline—SL
First assessment 2027
Assessment component
Weighting
External assessment (2 hours 30 minutes)
70%
Paper 1 (1 hour 15 minutes)
35%
Section A—extended response questions linked to theme A: Concepts of computer science
Section B—short-response questions linked to the pre-seen case study
(50 marks)
Paper 2 (1 hour 15 minutes)
35%
Extended response questions linked to theme B: Computational thinking and problem solving
(50 marks)
Internal assessment (35 hours)
30%
This component is internally assessed by the teacher and externally moderated by the IB at
the end of the course.
IA consists of one task: the computational solution
(30 marks)
External assessment
Detailed markschemes specific to each examination paper are used for all examinations.
External assessment details—SL
Paper 1
Duration: 1 hour 15 minutes
Weighting: 35%
Marks: 50
Paper 1 consists of two sections. All questions on paper 1 are compulsory.
Section A (38 marks)
Section A consists of extended-response questions linked to the SL topics in theme A:
Concepts of computer science.
Section B (12 marks)
Section B consists of short-response questions examining concepts of computer science,
based on the preseen case study and the two challenge questions given in the case study.
Section A and section B are completed together without any interruptions.
Case study
The computer science case study provides the stimulus to investigate a scenario involving
current developments, emerging technologies and/or ethical issues in computer science. The
case study for SL is a scenario that includes two challenge questions that stimulate the
required research. The information obtained will prepare students to answer the questions in
this section of the examination.
The case study will be published on the Programme Resource Centre 12 months before the
May examination session (18 months before the November session). This will allow students
to carry out detailed research prior to the examination and teachers to integrate the case study
into their curriculum.
Through investigating the case study students can:
show an understanding of how the system(s) in the case study work (AO1)
show an understanding of the computational thinking fundamental to the system(s) in
the case study (AO1)
apply concepts from the course syllabus in the context of the case study (AO2)
explain how scenarios in the case study may be related to other scenarios (AO2)
discuss the impacts and ethical issues relevant to the case study (AO3)
evaluate, formulate and justify strategies based on the information from the case
study itself, their own research and new stimulus material provided in the examination
paper (AO3).
A student's own research for the case study can include primary and secondary sources,
interviews, guest speakers and field trips.
Paper 2
Duration: 1 hour 15 minutes Weighting: 35%
Marks: 50
Paper 2 consists of extended-response questions linked to SL topics in theme B:
Computational thinking and problem-solving.
All questions on paper 2 are compulsory.
One of the questions will focus on algorithmic thinking without the need to interpret or write
code.
There are two versions of paper 2—one for students who have studied Python, one for
students who have studied Java.
The Python programming language has a number of built-in functions that can help with
finding solutions to common computational challenges. The use of functions such as sort,
pop, len, max and min can be very useful when programming algorithms and their use is
encouraged in tasks such as the IA (the computational solution). However, in order to assess
the full range of students' abilities, certain questions in the examination will prohibit specific
built-in functions. These instances will be clearly indicated in the examination papers.
External assessment details—HL
Paper 1
Duration: 2 hours
Weighting: 40%
Marks: 80
Paper 1 consists of two sections. All questions on paper 1 are compulsory.
Section A (56 marks)
Section A consists of extended-response questions linked to the SL and HL topics on theme
A: Concepts of computer science.
Questions will be common to SL with additional question parts that assess HL-only topics.
Section B (24 marks)
Section B consists of short- and extended-response questions examining concepts of
computer science based on the pre-seen case study and the four challenge questions given in
the case study.
Section A and section B are completed together without any interruptions.
Case study
The computer science case study provides the stimulus to investigate a scenario involving
current developments, emerging technologies and/or ethical issues in computer science. The
case study for HL is a scenario that includes four challenges that stimulate the required
research. The information obtained will prepare students to answer the questions in this
section of the examination.
The case study will be published on the Programme Resource Centre 12 months before the
May examination session (18 months before the November session). This will allow students
to carry out detailed research prior to the examination and teachers to integrate the case study
into their curriculum.
Through investigating the case study students can:
show an understanding of how the system(s) in the case study work (AO1)
show an understanding of the computational thinking fundamental to the system(s) in
the case study (AO1)
apply concepts from the course syllabus in the context of the case study (AO2)
explain how scenarios in the case study may be related to other scenarios (AO2)
discuss the impacts and ethical issues relevant to the case study (AO3) • evaluate,
formulate and justify strategies based on the information from the case study itself,
their own research and new stimulus material provided in the examination paper
(AO3).
A student's own research for the case study can include primary and secondary sources,
interviews, guest speakers and field trips.
Paper 2
Duration: 2 hours
Weighting: 40%
Marks: 80
Paper 2 consists of extended-response questions linked to the SL and HL topics in theme B:
Computational thinking and problem-solving.
All questions on paper 2 are compulsory.
Two questions from the SL paper will be repeated in the HL paper, including a question with
a focus on algorithmic thinking without the need to interpret or write code.
Additional questions will focus on HL-only topics.
There are two versions of paper 2—one for students who have studied Python, one for
students who have studied Java.
The Python programming language has a number of built-in functions that can help with
finding solutions to common computational challenges. The use of functions such as sort,
pop, len, max and min can be very useful when programming algorithms and their use is
encouraged in tasks such as the IA (the computational solution). However, in order to assess
the full range of students' abilities, certain questions in the examination will prohibit specific
built-in functions. These instances will be clearly indicated in the examination papers.
Internal Assessment
explain clearly to students that the IA work must be entirely their own. Where collaboration
between students is permitted, it must be clear to all students what the difference is between
collaboration and collusion.
All work submitted to the IB for moderation or assessment must be authenticated by a
teacher, and must not include any known instances of suspected or confirmed malpractice.
Each student must confirm that the work is their authentic work and constitutes the final
version of that work. Once a student has officially submitted the final version of the work, it
cannot be retracted. The requirement to confirm the authenticity of work applies to the work
of all students, not just the sample work that will be submitted to the IB for the purpose of
moderation.
Authenticity may be checked by discussion with the student on the content of the work, and
scrutiny of the following.
The student's initial proposal
The first draft of the written work
The references cited
The style of writing compared with work known to be that of the student
The analysis of the work by a web-based plagiarism detection service such as
turnitin.com
The same piece of work cannot be submitted to meet the requirements of both the IA and the
EE.
Ethical guidelines
Given the nature of the IA task, students must take into account ethical problems and
implications concerning undertaking research and developing the solution. For example, they
should ensure the confidentiality and security of data. Wherever possible, original data should
be used or collected by the student.
The following guidelines must be applied.
Consent must be obtained from people who will be involved in the development of
the computational solution before any investigation begins.
Written consent must be obtained from the owner of any existing system that will be
used as part of the IA—for example, when implementing a security analysis protocol
on an existing system.
All data collected must be stored securely to maintain confidentiality.
It is recommended that the assessment criteria be made available to students.
Internal assessment details—SL and HL
Duration: 35 hours
Weighting: SL 30%, HL 20%