Course Title: Programming Principles 2B

Part A: Course Overview

Course ID: 004094

Course Title: Programming Principles 2B

Credit Points: 12

Course Code




Learning Mode

Teaching Period(s)


Bundoora Campus


140H Comp Sci & Info Technology


Sem 2 2006


City Campus


140H Comp Sci & Info Technology


Sem 1 2006,
Sem 2 2006

Course Coordinator: Santha Sumanasekara

Course Coordinator Phone: +61 3 9925 9673

Course Coordinator Email:

Pre-requisite Courses and Assumed Knowledge and Capabilities

- COSC1076 Programming Principles 1B
- COSC1098 Programming Principles 2A
OR equivalent

Course Description

This course builds on skills gained in preliminary programming courses in both Java and C programming languages and gives students an in-depth understanding of a wide range of fundamental algorithms and data structures used in developing structured, efficient, reusable, and practical software.

The objective of this course is to study a broad variety of important and useful algorithms and data structures. We shall deal with many different areas of applications, always concentrate on fundamental algorithms that are important to know and interesting to study. Students will spend a significant time on each algorithm to understand its essential characteristics and to respect its subtleties.

We also pay careful attention to performance characteristics of the algorithms, to help students develop improved versions, compare different algorithms for the same task, and predict or guarantee performance for large problems. Understanding how the algorithms perform require experimentation or mathematical analysis or both. In this course, we consider detailed analysis of many algorithms, developing analytic results directly when feasible, or calling on results from the research literature when necessary.

Most of the algorithms discussed in this course involve methods of organising the data involved in the computation. Therefore, the study and the analysis of the data structures is also an objective of this course. We consider basic methods of organisation and methods of manipulating data, work through a number of specific data structures, and discuss related issues such as storage management. Furthermore, we discuss abstract data types, where we separate the definitions of data types from implementations.

Objectives/Learning Outcomes/Capability Development

Capability Development
This course contributes to the development of the following capabilities: Enabling Knowledge, Problem Solving, and Critical Analysis.

Learning Outcomes
Students who complete this course will:
• be able to critically analyse data structures and algorithms and apply the analysis results to make better choices of data representation and algorithms.-
• Have skills to understand fundamental data structures and algorithms and their advantages and disadvantages.
• Develop advanced programming skills by implementing such data structures and algorithms.

Overview of Learning Activities

Syllabus material will be presented, explained and illustrated with demonstrations and examples in lectures, classes, or online. Completion of tutorial questions and laboratory programming exercises and projects, are designed to give further practice in the application of theory and procedures, and to give feedback on your progress and understanding. Private study will consolidate your understanding of the theory and practice.

Overview of Learning Resources

Students will make extensive use of computer laboratories and relevant software provided by the School.
Lists of relevant textbooks, reference texts, resources in the Library and relevant internet sites will be provided.

Overview of Assessment

The assessment for this course comprises practical work involving the development of computer programs, class tests, and a final exam.