Basic Computer hardware and software
1. Review of Number systems (decimal, binary, hexadecimal) and arithmetic.
(a) Number systems, base of a number system - decimal, binary, octal, hexadecimal representation, conversion between various representations, character representations (ASCII, ISCII, Unicode).
(b) Representations for integers, real numbers, limitations of finite representations.
(c) Internal structure of a computer, a simple decimal load and store computer and its machine language, instruction format, registers, program counter, instruction register; register addressing modes, instruction cycle, assembly language for the same computer, simple algorithms in assembly language.
2. Review of basic computer hardware and software; basic concepts about operating systems, file systems. CPU, the clock, cache memory, primary memory, secondary memory, input and output devices, communication devices (the aim is not to describe/discuss an exhaustive list of devices but to understand what parts are present in a typical computer and what is the function of each part). The boot process, operating system (resource management and command processor), file system.
i) Boot process, operating systems – resource management, command processing.
ii) Directories, files and hierarchical file system.
iii) Programming languages (machine language, assembly language, high level language).
iv) Compilers and interpreters.
v) Application software.
3. Propositional logic, well formed formulae, truth values and interpretation of well formed formulae, truth tables, basic ideas and results about consistency and completeness of propositional logic (no proofs).
4. Logic and hardware, basic gates (AND, NOT, OR) and their universality, other gates (NAND, NOR, XOR); inverter, half adder, full adder.
5. Control unit, system clock.
6. Memory - construction of a memory bit using a flip-flop, D-flip-flop and its use in constructing registers.
7. Memory organization and access; parity; memory hierarchy - cache, primary memory, secondary memory.
8. Instruction set and its representation; address, addressing and addressing modes; instruction cycle; machine language; stored program computer (program as data).
9. Assembly language syntax and semantics (the assembly language should be for the computer above); assembler and the assembly process; simple assembly language programs.
Introduction to High Level Language Concepts
a) Review of programming in Classes IX and X
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 lefthand 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-thenelse), switch, break, default.
v) Loops (for, while-do, do-while).
vi) Simple input/output using standard input/output.
vii) Functions/subroutines as procedural abstractions. Using functions/subroutines in programs.
viii) Arguments and argument passing in functions/subroutines.
ix) Scope of variables.
x) 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).
xi) Review of input/output using standard input and standard output. 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.
xii) 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).
xiii) Simple type casting for primitive types; inter-conversion between character/string types and numeric types.
xiv) Distinction between compile time and run time errors. Run time errors due to finite representations - overflow, underflow. Other run time errors.
xv) Basic ideas about linking, loading, execution.
b) Objects and classes.
c) Analysis of some real world applications in terms of objects and operations on objects.
d) Interface or public contract of a class.
e) Classes as types.
f) Examples of problem solving using objects.
g) Encapsulation and visibility (private and public).
h) Static variables and functions.
i) Errors - compile time and run time. Exceptions and exception handling.
j) Simple data structures - stack, queue, deque (should be defined as classes); use of these data structures in problem solving.
Implementation of algorithms to solve problems
Social context of computing and ethical issues
a) Intellectual property and corresponding laws and rights, software as intellectual property.
b) Software patents, copyrights, and trademarks, software licensing and piracy.
c) Free software foundation and its position on software, open source software.
d) Privacy, email etiquette

|