# ICSE Board Computer Science Syllabus for Class 10

## ICSE Board Syllabus for Class 10 Computer Science

COURSE STRUCTURE
CLASS X

SUBJECT-COMPUTER SCIENCE

PART I -THEORY
1. Computer Structure
(i) Logic gates (NOT, AND, OR, XOR) and their use in computers.

(ii) Review of number systems (binary, decimal, octal, hexadecimal), representation for different types - integers, float, characters.

(iii) Simple binary arithmetic, including addition, subtraction, multiplication and division.

(iv) Computer logic, Boolean operations, logical operators (NOT, AND, OR, XOR) and their truth tables.

The following points should be discussed:
a. Some interesting real life examples can be taken to introduce propositional logic and fundamental Boolean operations.
b. These can be connected to problem solving and programming.
c. Verification of fundamental laws of Boolean algebra using truth tables.
d. Writing inputs and outputs for a circuit like half adder and writing the SOP expression.
e. Using Boolean algebra to reduce expressions.
f. Drawing logic gate diagrams for the given expression.
g. The finiteness of representations should be emphasized to show that real numbers and fractions (that is rational numbers) are only approximated and cannot be represented exactly in some cases. For example, consider not terminating decimal representations of fractions and representations of irrational numbers like π.

2. Review of Programming
Review of programming in BASIC or in C++ from Class IX.

(i) Primitive data types supported by the language (integers, floating point numbers, characters, booleans etc. - will depend on the language), variables (and their declaration - based on language), assignment, difference between the left-hand side and right-hand side of an assignment.

(ii) Expressions - arithmetic and logical, evaluation of expressions, type of an expression (depends on language). Operators, associativity and precedence of operators.

(iii) Statements, blocks (where relevant), scope and visibility of variables.

(iv) Conditional statements (if and if-then-else), switch, break, default.

(v) Loops (for, while-do, do-while).

(vi) Simple input/output using standard input/output.

The programming element in the syllabus is aimed at problem solving and not on merely rote learning of the commands and syntax of particular programming languages. Students have the option to use either BASIC or C++ in order to implement algorithms and to use them for solving problems. While choosing BASIC, care must be taken to choose a standard version that has “block if  structures”, “functions through which parameters may be passed and values returned”. Very old versions using “goto statements” must not be used. Care must be taken that ‘standard and recent’ versions of the languages are used on the computer - it is recommended that students mention the version of the language being used while writing answers in order to avoid ambiguity.
For example, software such as Microsoft Quick BASIC, Borland Turbo C++, Visual C++ or GNU C++ on Linux can be used.

(i) Functions / subroutines as procedural abstractions. Using functions/subroutines in programs.

(ii) Arguments and argument passing in functions/subroutines.

(iii) Scope of variables.
The concepts to be emphasized are:
• How functions/subroutines help in solving larger and complex problems.
• How the same code can be reused from various points in a program.
• Parameter passing (pass by value/pass by reference).
• Return values.
• Scope and visibility of variables.
• The examples done in Class IX can be used to motivate the need for abstracting out and capturing functionality used repeatedly in multiple places. In each example, the complexity of actually executing the function should be analyzed - what happens in the worst case and what happens on average. Students should run the algorithms on multiple instances of random data to convince themselves that the analytical approach matches what they observe.
Examples:
a) Use minimum and maximum functions of n numbers to arrange n numbers in ascending/descending order.
b) Use a search function for a given search element from a given point to solve problems like finding number of vowels in a sentence, number of words in a sentence etc.
Those using object oriented program can introduce classes and member functions at this point.

(iv) Structured types, arrays as an example of a structured type. Use of arrays in sorting and searching. Two-dimensional arrays. Use of two-dimensional arrays to represent matrices.
Matrix arithmetic using arrays. Use of arrays to solve linear equations (Gauss elimination method).
The concepts involved are:
• How a large amount of data of the same type can be stored and accessed by using one variable name and a subscript.
• How complex problems can be solved easily with the help of arrays. e.g.
Frequency counts
Selection sort
Linear search
Binary search
• School timetable and matrices can be used to introduce two-dimensional arrays. To begin with, some simple examples can be used:
• Finding sum/difference of two matrices.
• Finding the sum of the elements of rows and columns of a matrix.

(v) Review of input/output using standard input and standard output from Class IX.
Input/output using sequential files. Opening, closing files. Creating and deleting files.
Formatting output. Concept of a token and separator. Extracting tokens from the input.
Only sequential file programs need to be done in QBASIC. In C++ formatted data may be written on to the streams. Programs for creating files, reading them, updating them and manipulating them should be done.

(vi) Characters, ASCII representation, strings as a composite data type; functions on strings (ex. length, substring, concatenate, equality, accessing individual characters in a string, inserting a string in another string at a given location).

(vii)Simple type casting for primitive types; inter-conversion between character/string types and numeric types.

The students should understand why the ASCII code is needed.
In QBASIC there are library functions for inter conversion but in C++ simple assignment from char to int and vice-versa
will do the job. Simple string and text processing problems like: substring problems, search problems in a text, frequency problems in text can be used for motivation.

(viii)Distinction between compile time and run time errors. Run time errors due to finite representations - overflow, underflow. Other run time errors.
Self-explanatory.

Self-explanatory.

4. Documentation of programs
Need for good documentation; good documentation practices; standards and naming conventions.
The teachers can show an undocumented program and then the same program properly documented, with good naming conventions. Experiments can be done on how much time it takes for making changes to the program (so that it does something extra) and trying to understand the program.

5. Practical Work
Regular programming in labs. should supplement every topic that is taught in the classroom. The students will be expected to invent algorithmic solutions expressed in C++ or Basic to solve problems and then actually implement and run the program to get answers.
The student will also be required to do a project that involves significant programming effort.
Self-explanatory.

PART II - INTERNAL ASSESSMENT
(PRACTICAL WORK)

Internal Assessment will comprise of assignments and Project work.
Minimum number of Assignments Assignments as prescribed by the teacher to cover all the concepts in the programming syllabus.

Project Work - One project in BASIC or C++.
Suggested Assignments
The generation of all three-digit prime numbers, mensuration, calculating income tax, commissions, etc.
Various number problems, twin primes, perfect numbers, Syracuse numbers, etc.
A programming assignment on a problem resulting in formatted screen or printer output,
Example: forming a diamond shape with the* character in the middle of the screen, calculating and outputting electricity bills, printing tabular data.
A small menu driven program, marks processing and ranking algorithms.
Sorting and searching algorithms.
Permutation generation algorithms.
Finding mode, mean, median of a set of numbers.
File handling assignment. A sequential file may be prepared by the teacher to be manipulated by the students in one or more of the following ways:
Programming Project
Proposed Guidelines for Marking
The teacher should use the criteria below to judge the internal work done. Basically, four criteria are being suggested: Analysis, Algorithm Design, Coding and Documentation and Execution. The important questions to be asked when evaluating each criterion are shown. 25% of the total credit is assigned to each criterion - so each is equally important. The actual grading will be done by the teacher based on his/her judgment. However, one recommended criteria is:
divide the outcome for each criterion into one of 4 groups: excellent, good, fair/acceptable, poor/ unacceptable, then use numeric values for each grade and add to get the total which can be multiplied by a suitable factor to get the final marks.
Analysis:
Has the problem been analyzed carefully?
Are all attributes with the right kinds of types present?
Has the problem been broken up into proper segments?
Algorithm design:
Is the choice of data structures proper?
Is the algorithm suitable for the problem?
How efficient is it?
Coding and Documentation:
Is the coding done properly? (Choice of names, no unconditional jumps, proper organization of conditions, proper choice of loops, error handling, code layout)
Is the documentation complete and readable?