Authorised by Academic Registrar, April 1996
Objectives On completion of the subject, students should know about abstract data types; understand how computers work in terms of their underlying machine model and how such a model can be implemented from simple components; be able to write a simple program in machine language; and be able to write larger programs using more sophisticated data structures and algorithms than those covered in CSC1011.
Synopsis This subject develops core problem-solving and analytical skills for computer programming, and provides an introduction to computer systems. Concepts include problem abstraction and solution, abstract data types, design and analysis of computer algorithms and data structures. Topics include data structures - tables, sets, sequences, stacks, queues, trees, heaps, abstract data types, modules; algorithms - insertion, deletion, iteration, merge, recursion, search, sorting, traversal of various data structures; analysis complexity; computer systems - processors, stored programs, fetch-execute cycle, machine language, interpreters and compilers, expression evaluation, simple stack, one-address and register architectures, procedure invocation, data representation, addressing techniques; digital logic - more advanced Boolean algebra, and sufficient digital logic to describe how the memory (flip-flops), arithmetic (adder), and control (multiplexer) of basic computer components can be implemented from simple devices (gates).
Assessment Examination (3 hours): 70% + Compulsory assessed laboratory classes: 20% + Mid-semester test: 10%