
Sunday, 11 August, 2024
Programming is now a fully integrated component of Grade 10 Computer Science as outlined by the Kenya Institute of Curriculum Development (KICD). Given that this is introduced at the Grade 10 level, it is likely that more advanced coding concepts will be covered in the Grade 11 and 12 curricula. It's also noteworthy that visual programming is taught in Grades 7, 8, and 9 using tools like Scratch and Minecraft. Additionally, Pre-Technical Studies in Junior School includes visual programming as a key strand. This concept, once reserved for tertiary institutions and only superficially covered in secondary schools, was entirely absent from primary school curricula. Now, under a strand titled Software Development in the Grade 10 curriculum, the KICD includes the following sub-strands:
It is important to highlight that concept such as identifiers, operators, containers, and functions were not part of the previous education system’s syllabus. It is evident that the current system introduces more advanced topics at earlier stages. For context, Grade 10 under the current Competency-Based Curriculum (CBC) is equivalent to Form 2 in the former 8-4-4 system. Previously, Elementary Programming Principles were taught in Form 3, but the content was limited, focusing mainly on writing pseudocode and drawing flowcharts. Now, let's explore the contents of the Software Development strand in the current CBC Grade 10 Computer Science curriculum.
Computer Programming Concepts
This sub-strand primarily covers the key terminologies used in computer programming. These include terms such as programming, programming language, assembler, compiler, interpreter, source code, machine code, Integrated Development Environment (IDE), and the software development life cycle. It also introduces the different levels of programming languages and explores various programming paradigms, such as structured programming, procedural programming, object-oriented programming, functional programming, logic programming, and event-driven programming.
Program development
This involves exploring the stages of program development, which include program definition, design, coding, testing, implementation, documentation, and maintenance. It also covers the characteristics of an algorithm—such as input, output, finiteness, definiteness, and effectiveness—and discusses the keywords (start, variables, input, processing, output, end) used in writing pseudocode. The content demonstrates how these keywords represent the logical flow of an algorithm. Additionally, it covers the standard symbols used in flowcharts and illustrates how they represent algorithms. Students will learn to draw flowcharts and use pseudocode to solve real-life problems, while also appreciating the importance of algorithms in problem-solving.
Identifiers and operators
This sub-strand covers the structural elements of a programming language, focusing on structure, syntax, and error handling. Each programming language has a specific code structure that includes components like modules/files, functions/methods, and classes/objects. Logical grouping within the code is managed using packages or namespaces, and directories or folders. Additionally, each language follows specific code formatting and style guidelines, such as proper indentation, consistent naming conventions, and the use of comments. Flow control within a program is directed by control structures like selection statements, loops, and sequences, along with appropriate error handling mechanisms.
The learning objectives for this sub-strand are:
It's important to note that identifiers—such as variable names, function names, and class names—play a crucial role in making code easy to understand, particularly when they are descriptively named. Operators, on the other hand, are symbols that perform operations on variables and values. Declaring a variable involves specifying an identifier for the variable and defining the data type it will hold.
Control Structures
The specific learning objectives for this sub strand are: The learner should be able to:
Data structures
The specific objectives for this sub strand is that learner should be able to:
Functions
The specific objectives for this sub strand is that learner should be able to:
It is evident that this topic has been given the attention it deserves in the current KICD curriculum, which now includes a substantial 92 lessons. New areas that were not part of the previous syllabus have been introduced and thoroughly covered. Sub-strands such as functions, data structures, identifiers, and operators are all new additions. The curriculum now emphasizes coding in a programming language rather than relying on traditional flowcharts and pseudocode. Some key statements from the curriculum design include:
Other strands that were previously taught in Forms 3 and 4 are now introduced earlier in Grades 7, 9, and 10. These include topics like Computer Networking and elements of data representation, now covered under the strand "Foundations of Computer Science." To further emphasize the importance of ICT, the KICD has introduced ICT as a subject in Grade 10. This addition will complement Computer Science and ensure that all students acquire essential ICT skills.
In conclusion, this is a positive step forward, as coding has become an essential skill that is being taught at an early age in many countries. Some of us were concerned about the delay in revising our syllabus. Another area that has been overlooked in our curriculum is web development. Since the curriculum designs for Grades 11 and 12 are not yet available, it’s too early to comment on that. Additionally, KICD and KNEC might consider introducing an examination paper focused on problem-solving and programming to give these areas the attention they deserve.
This approach aligns with the spiral curriculum theory by American psychologist Jerome Bruner, where complex ideas are introduced in stages and revisited at various levels of education to deepen the learner's understanding. This is the method KICD has adopted in the Competency-Based Curriculum.