Skip navigation

COMP2500 Software Construction for Software Engineers

Later Year Course

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

This course is about the implementation and test phases of the software construction process. It is based around creating individual practical assignments on the small scale, and modifying a medium scale project in two major assignments over the whole semester. In this project, students work on a substantial application, relevant to their experience as computer users. The project is closely specified and designed around a strong architectural structure as an exemplar, and may involve a graphical user interface. During the semester students learn to improve their own software development practices by following the Personal Software Process, learning time-management, planning, and quality control. The course also studies aspects of the principles and practices of software engineering.

The following topics are covered: working with software larger systems; 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); use of external code libraries.

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. 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)
Indicative Assessment

Assignments (20%); Mid Semester Exam (20%); Presentation (5%); Report (5%); Final Exam (50%: practical 25%, theory 25%) 

Workload

Thirty one-hour lectures, five two-hour tutorial/laboratory sessions and three one to two-hour seminars

Areas of Interest Software Engineering
Assumed Knowledge and
Required Skills

Introductory programming, preferably in an object-oriented language

Requisite Statement

Enrolment in BSEng 4708 or 4711 or 4712 and COMP1510 or COMP1110 and MATH1005 or MATH1014 or MATH1116

Incompatibility

COMP2100

Prescribed Texts

There is no required textbook for COMP2100. Useful reference books are:

Tremblay, Jean-Paul & Cheston, Grant A. Data Structures and Software Development in an Object-Oriented Domain, Java edition, Prentice-Hall, 2003.

Humphrey, Watts Introduction to the Personal Software Process, Addison Wesley, 1997.

Hunt, Andrew & Thomas, david The Pragmatic Programmer , Addison Wesley, 2000.

McConnell, Steve Code Complete , Microsoft Press, 1993.

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

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