Data Structures
Primitive types, Arrays, Records Strings and String processing. Data representation in memory, Stack and Heap allocation, Queues, Trees. Implementation strategies for stack, queues, trees. Run time storage management; Pointers and References, linked structures. Lab work: Writing C+/C++ functions to…
Learning outcomes
At the end of this course, students should be able to: 1. discuss the appropriate use of built-in data structures; 2. apply object-oriented concepts (inheritance, polymorphism, design patterns, etc.) in software design; 3. implement various data structures and their algorithms, and apply them in implementing simple applications; New Computing 43 4. choose the appropriate data structure for modelling a given problem; 5. analyse simple algorithms and determine their efficiency using big-O notation; and 6. apply the knowledge of data structures to other application domains like data compression and memory management.
Course contents
Primitive types, Arrays, Records Strings and String processing. Data representation in memory, Stack and Heap allocation, Queues, Trees. Implementation strategies for stack, queues, trees. Run time storage management; Pointers and References, linked structures. Lab work: Writing C+/C++ functions to perform practical exercises and implement using the algorithms on arrays, records, string processing, queues, trees, pointers and linked structures. CSC 308 Operating System (3 Units C: LH 30; PH 45) Learning Outcomes At the end of this course, students should be able to: 1. recognise operating system types and structures; 2. describe OS support for processes and threads; 3. recognise CPU scheduling, synchronisation, and deadlock; 4. resolve OS issues related to synchronisation and failure for distributed systems; 5. explain OS support for virtual memory, disk scheduling, I/O, and file systems; 6. identify security and protection issues in computer systems; and 7. use C and Unix commands, examine behaviour and performance of Linux, and develop various system programmes under Linux to make use of OS concepts related to process synchronisation, shared memory, mailboxes, file systems, etc. Course Contents Fundamentals of operating systems design and implementation. History and evolution of operating systems. Types of operating systems. Operating system structures. Process management: processes, threads, CPU scheduling, process synchronisation. Memory management and virtual memory. File systems; I/O systems; Security and protection; Distributed systems; Case studies. Lab work: Practical hands-on engagement to facilitate understanding of the material taught in the course. All the process, memory, file and directory management issues will be demonstrated under the LINUX operating system. Also UNIX commands will be briefly discussed. Alternatively, hands-on exposure may be through the use of operating systems developed for teaching, like TempOS, Nachos, Xinu or MiniOS. Another…