CECS Home | ANU Home | Search ANU
The Australian National University
ANU College of Engineering and Computer Science
Department of Computer Science
Printer Friendly Version of this Document

UniSAFE

Introduction to Software Systems

Introduction

This course introduces students to the tools and techniques for developing software systems of a size and quality of an industrially relevant nature. The course teaches the fundamental strategies of abstraction, decomposition and reuse as methods for constructing such systems. Verification and validation techniques, with an emphasis on testing, are taught as a means to ensure that students are able to deliver software products of the quality required.

In particular, the course will cover: recursive data structures and algorithms; structured data types, abstract data types and their applications; object-oriented programming; and software life-cycle. The course will also introduce some of the theoretical fundamentals that underpins software engineering, including: reasoning about software and its application to specifications, and verification and validation.

Lecturers

Dr Eric McCreath - email : ericm@cs.anu.edu.au - room : N227 (Chair of Examiners)

Unit Prerequisites

COMP1100 (also Enrolment in BSEng for COMP1510 students)

Text Book

The set text is Data Abstraction & Problem Solving with Java - walls & mirrors, Frank M. Carrano and Janet J.Prichard, 2nd Edition (covers Java 5.0), Addis on Wesley, 2005. We recommend students obtain a copy of the text book.

Assessment

The final mark is composed of two components, the class mark (C) worth 30% and the final exam mark (E) worth 70%. The class mark will be given as a mark out of 30. The final exam mark will be given as a mark out of 70. Note that consistent scaling across all students may occur with these marks. The final mark will be given as a mark out of 100 and will be calculated using the following formula:
Final Mark = C + E
Students must get a minimum final overall mark of at least 50% to pass the subject. Final marks are moderated by a Department of Computer Science examiners meeting.

Please check the Undergraduate Handbook and the web for policy statements concerning special consideration and special, further and supplementary examinations.

Quality and integrity are expected from all students. Students should also expect this from the lecturing/tutorial staff. Please read over the ANU's policy on this matter.

http://info.anu.edu.au/Policies/_DVC/Policies/Code_Practice_Student_Academic_Honesty.asp

The class mark consists of the following components:

Assignment 15%
Lab mark 10%
Reflective Diary/Tutorial Preparation 5%

Introduction to Software Engineering COMP1510 is very similar to COMP1110. The differences are as follows:

  • Students will, in addition to the standard lectures, be expected to attend three one hour lectures that relate to Software Engineering principles and practices. The content in these lectures is examinable (just for COMP1510 students). Topics are still to be organised.
  • Given the extra lectures COMP1510 students will sit a slightly different exam. However, other than this the assessment scheme is identical to that of COMP1110.

Assignment Due Dates

The main assignment's submission is due on Friday of Week 11 (17/10/2008). Note also that 50% of the marks for this assignment will be due in the Labs over the semester. See the schedule and assignment spec for the details.

Learning Objectives

Upon completion of this course, the student will be able to:
  • complete the implementation of an Java program, given as specification of the required behaviour of the program.
  • analyze alternatives among simple data-structures - stacks, queues, and arrays, for example - and select the most appropriate structure for a simple task.
  • analyze alternatives among simple algorithms - sorting and searching, for example - and select the most appropriate for a simple task.
  • rigorously analyze the correctness of a simple program fragment given a logical description of its required behaviour.
  • apply their knowledge of testing principles to select appropriate test data for an individual software routine.
  • identify economic implications of the software life cycle to the process of software construction.
  • identify the invariant of a simple loop.
  • apply the technique of recursion to implement simple requirements.
  • independently use selected writings in computing to analyse and explain technical computing problems.
  • work as a team in a small group to complete an assigned task.