Authorised by Academic Registrar, April 1996
Objectives On completion of the subject students will have the ability to write larger programs using more sophisticated data structures and algorithms; 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.
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 (1) Data structures: tables, sets, sequences, stacks, queues, trees, heaps, abstract data types, modules; (2) Algorithms: insertion, deletion, iteration, merge, recursion, search, sorting, traversal of various data structures; (3) Analysis complexity: (4) 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; (5) Digital logic: more advanced boolean algebra, and sufficient digital logic to describe how the basic computer components memory (flip-flops), arithmetic (adder), and control (multiplexor) can be implemented from simple devices (gates).
Assessment Examination (3 hours): 70% + Compulsory assessed laboratory classes: 20% + Mid-semester test 10%