Skip navigation

COMP2100 Software Construction

Later Year Course

Offered By Research School of Computer Science
Academic Career Undergraduate
Course Subject Computer Science
Offered in First Semester, 2011 and First Semester, 2012
Unit Value 6 units
Course Description

This course is about the implementation (construction) phase and test phase of the software development process. It develops students' skills in programming at the pragmatic level and at an increased level of abstraction. Students will create individual practical assignments on the small scale, and read, critique, and modify medium scale software systems, in part through two major assignments over the whole semester. The system is closely specified and designed around a strong architectural structure, exemplifying abstraction and design patterns, and a graphical user interface. During the semester students learn to improve their own software development practices by following the Personal Software Process to learn time management, planning, and quality control.

The following topics are covered: working with larger software systems; introduction to code review and inspections; test planning and unit testing (derived from specification and design documents); object-oriented (Java), and scripting (Bash) languages; recursive data structures; graphical user interfaces; the Personal Software Process; build tools (Make and Ant) and version control (Subversion); introductory software design patterns.

Learning Outcomes
On completing this course students are expected to be able to:


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. apply elementary notions of software quality criteria to critique and improve existing medium scale software
  3. 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, with goals of correctness (through testing) and quality of construction
  4. 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
  5. 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), related software design patterns
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)


5. Reading knowledge of UML class diagrams as a design notation.

Indicative Assessment

Assignments (35%); Mid Semester Exam (15%); Final Exam (50% practical 25%, theory 25%)

Workload

Thirty one-hour lectures and five two-hour tutorial/laboratory sessions 

Areas of Interest Information Technology
Assumed Knowledge and
Required Skills

Introductory programming, preferably in an object-oriented language, to design and implement programs with several classes, with simple inheritance.

Requisite Statement

COMP1110 or COMP1510 or COMP1140 and MATH1005 or MATH1014 or MATH1116

Incompatibility

COMP2500

Recommended Courses

A complete reference for Java programming and language, such as Schildt, Herbert: Java: the complete reference, 7th edition, Osborne-Mcgraw Hill, 2007.

Prescribed Texts

There is no required textbook for COMP2100, but a Java reference book is strongly recommended.

Science Group B

The information published on the Study at ANU 2011 website applies to the 2011 academic year only. All information provided on this website replaces the information contained in the Study at ANU 2010 website.

Updated:   13 Nov 2015 / Responsible Officer:   The Registrar / Page Contact:   Student Business Solutions