There is a more recent version of this academic item available.

Overview

This unit introduces you 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

Contacts

Chief Examiner(s)

Dr Alexey Ignatiev

Unit Coordinator(s)

Brendon Taylor

Learning outcomes

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

Translate problem statements into algorithms and implement them in a high level programming language;

2.

Determine appropriate basic abstract data types, including; stacks, queues, lists, binary trees, priority queues, heaps and hash tables; for specific contexts;

3.

Theoretically and experimentally evaluate different implementations of basic abstract data types;

4.

Analyse the efficiency of algorithms by determining their best-case and worst-case big-O time complexity;

5.

Deconstruct simple high-level code into assembly code, specifically MIPS R2000;

6.

Work in teams to analyse algorithms and write programs.

Teaching approach

Peer assisted learning

Assessment summary

This unit has threshold mark hurdles as noted in the assessment. You must achieve at least 45% of the available marks in each group assessment, and an overall unit mark of 50% or more to be able to pass the unit. If you do not achieve the threshold mark, you will receive a fail grade (NH) and a maximum mark of 45 for the unit.

Assessment

1 - Individual practical task

2 - Group practical task 1

3 - Group practical task 2

Scheduled and non-scheduled teaching activities

Applied sessions

Workshops

Workload requirements

Workload

Learning resources

Recommended resources

Technology resources

Availability in areas of study

Advanced computer science