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

UniSAFE

Software Construction

COMP2100/2500
Description

(This is just the current handbook entry, edited slightly to bring it up to date.)

COMP2100 Software Construction and COMP2500 Software Construction for Software Engineers

(6 units)
First Semester
Thirty one-hour lectures and six seven two-hour laboratory sessions.

Prerequisites:(COMP1110 or COMP1120 or COMP1510) and (MATH1005 or MATH1014 or MATH1116).

Syllabus:This course is about the implementation and test phases of the software construction process. It is based around an individual project lasting the whole semester. In this project, students work on the construction of a substantial application, relevant to their experience as computer users. The project is closely specified, and involves a graphical user interface. During the semester, students follow the Personal Software Process, learning time-management, planning, and quality control.

The following topics are covered:

  • working with larger software systems;
  • code review and inspections;
  • test planning and procedures (derived from specification and design documents);
  • object-oriented (Eiffel Java) and scripting (Bash) languages and procedural (C programming language ) [C will not be covered here from 2008: see COMP2300 Introduction to Computer Systems] ;
  • recursive data structures;
  • graphical user interfaces;
  • the Personal Software Process;
  • build tools (Ant, Make),
  • version control (Subversion, RCS)
  • unit testing (JUnit);
  • use of external libraries in programming (JNI)
In addition, COMP2500 for Software Engineers covers Professional practice for software engineers.

Proposed assessment for COMP2100: assignments (30%); mid-semester (written) exam (20%); final (lab) exam (50%)

Proposed assessment for COMP2500: assignments (20%); oral presentation (5%), written report (5%), mid-semester (written) exam (20%), final (lab) exam (50%).

Learning outcomes

revised in 2009

The planned learning outcomes for the course are that students should be able

1. construct and modify
to construct and modify small to medium scale computer programs
  1. apply all aspects of software construction for a representative variety of small to medium scale object-oriented programs up to around 300 lines of code containing up to 7 classes;
  2. to make modifications (including source code design, implementation, and testing) within a moderate-sized Java program system (103 (1000) to 104 (10,000) lines of code), given a documented specification, design and implementation of the system
  3. to have elementary or better competence with standard software development tools and methods: text editor, compiler, integrated software development environment, command line scripting, automated build tools, version control, unit test design, code review
  4. to use and analyse a personal software process in constructing small computer programs
2. abstraction
to compare several forms of abstraction in object-oriented software design and construction:
inheritance, generic types, polymorphism, procedural abstraction, abstract recursive data structures (including abstract syntax trees);
and to apply them appropriately in constructing programs.
3. knowledge resources
to be familiar with common programming knowledge resources to find, understand, and apply online manuals and tutorials for software tools, programming language components, and software libraries
4. principles and practice of software construction tools
to describe the underlying principles of three major aspects of software construction and to apply the appropriate tools:
  1. version control (using the Subversion tool)
  2. unit testing (using the JUnit tool)
  3. automatic build process (using the Make or Ant tool)

$Revision: 2.0 $ $Date: 2009/02/25 01:28:46 $ $Author: cwj $