Boolean Algebra
(i) Propositional logic, well formed formulae, truth values and interpretation of well formed formulae, truth tables, basic ideas and results about consistency and completeness of prepositional logic (no proofs).
(ii) Binary valued quantities; basic postulates of Boolean algebra; operations of AND, OR and NOT; truth tables.
(iii) Basic theorems of Boolean algebra; principle of duality; idempotent law; commutative law; associative law; distributive law; operations with 0, 1 and complements; absorption law;involution; De Morgan's theorem and its applications; reducing Boolean expressions to sum of products and product of sums forms; Karnaugh maps (up to four variables).
Computer Hardware
(i) Elementary logic gates (NOT, AND, OR, NAND, NOR, XOR, XNOR) and their uses in circuits.
(ii) Applications of Boolean algebra and logic gates to half adders, full adders, encoders, decoders, multiplexers, use of NAND, NOR as universal gates.
Programming in C++/Java
(i) Review of programming and algorithms from Class XI
a) 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 lefthand side and right-hand side of an assignment.
b) Expressions - arithmetic and logical, evaluation of expressions, type of an expression (depends on language). Operators, associativity and precedence of operators.
c) Statements, blocks (where relevant), scope and visibility of variables.
d) Conditional statements (if and if-thenelse), switch, break, default.
e) Loops (for, while-do, do-while).
f) Simple input/output using standard input/output.
g) Functions/subroutines as procedural abstractions. Using functions/subroutines in programs.
h) Arguments and argument passing in functions/subroutines.
i) Scope of variables.
j) 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).
k) 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.
l) Characters, ASCII representation, strings as a composite data type; functions on strings (e.g. length, substring, concatenate, equality, accessing individual characters in a string, inserting a string in another string at a given location)
m) Simple type casting for primitive types; inter-conversion between character/string types and numeric types.
n) Distinction between compile time and run time errors. Run time errors due to finite representations - overflow, underflow. Other run time errors.
o) Basic ideas about linking, loading, execution.
p) Objects and classes.
q) Analysis of some real world applications in terms of objects and operations on objects.
r) Interface or public contract of a class.
s) Classes as types.
t) Examples of problem solving using objects.
u) Encapsulation and visibility (private and public).
v) Static variables and functions.
w) Errors - compile time and run time. Exceptions and exception handling.
x) Simple data structures - stack, queue, deque (should be defined as classes); use of these data structures in problem solving.
(ii) Recursion and recursive functions.
(iii) Recursive data structures - lists, binary trees, tree traversals, binary search tree.
(iv) Problem solving using recursive data structures.
(v) Basic concept of inheritance (only single inheritance should be used), base and derived classes.
(vi) Member access in derived classes.
(vii) Redefinition of member variables and member functions.
(viii) Object construction in the presence of inheritance.
(ix) Libraries and use of library classes (details will vary with the language used - container
class library can be used as an example).
Implementation of algorithms to solve problems

|