Overview

This unit introduces students to core problem-solving, analytical skills, and methodologies useful for developing flexible, robust, and maintainable software. It covers a range of conceptual levels, from high-level algorithms and data-structures, down to the machine models and simple assembly language programming. Topics include data types; data structures; algorithms; algorithmic complexity; … For more content click the Read More button below.

Offerings

S2-01-CLAYTON-ON-CAMPUS

Rules

Enrolment Rule

Contacts

Chief Examiner(s)

Dr Pierre Le Bodic

Notes

IMPORTANT NOTICE:
Scheduled teaching activities and/or workload information are subject to change in response to COVID-19, please check your Unit timetable and Unit Moodle site for more details.

Learning outcomes

On successful completion of this unit, you should be able to:
1.

Translate simple problem statements into algorithms, implement them in a high level programming language and test them.

2.

Summarise and compare the properties of basic abstract data types such as stacks, queues, lists, trees, priority queues, heaps and hash tables.

3.

Evaluate different algorithms and implementations of basic abstract data types.

4.

Analyse algorithms by determining their best case and worst case big O time complexity.

5.

Design efficient solutions combining basic abstract data types and applying the concepts of complexity while understanding its implications in practical situations.

6.

Describe the classic RISC pipeline and how machine architecture can affect processor performance.

7.

Deconstruct simple high-level code into assembly code such as MIPS R20

Teaching approach

Peer assisted learning

Assessment

1 - In-semester assessment
2 - Examination (3 hours and 10 minutes)

Scheduled and non-scheduled teaching activities

Laboratories
Tutorials
Workshops

Workload requirements

Workload

Learning resources

Recommended resources
Technology resources

Availability in areas of study

Advanced computer science