Computers and computer organization; programming languages; programming activities; problem solving, top down design and data abstraction; flowcharting and pseudocode; basic control structures; sequence, selection, repetition; algorithms, variables and constants; simple data types; assignments and arithmetic expressions; operator precedence; logical expressions; control structures - selection, repetition; functions; scope of variables; parameter passing mechanisms; arrays - single dimensions and multi dimensions; searching and sorting; pointers, linked lists, stacks, queues; file I/O concepts; classes, inheritance and data abstraction.