|
|
Course Details |
Fees and Dates
Later Year Course
| Offered By: |
Department of Computer Science |
| Academic Career: |
Undergraduate |
| Course Subject: |
Computer Science |
| Offered in: |
First Semester, 2010 |
| 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 following topics are covered: working with larger software 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
- 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;
- 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
- 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
- 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:
- version control (using the Subversion tool)
- unit testing (using the JUnit tool)
- automatic build process (using the Make or Ant tool)
|
| Indicative Assessment: |
Assignments (30%); Mid Semester Exam (20%); 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 |
| Requisite Statement: |
COMP1110 or COMP1510 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 |
|