Software Engineering Practice COMP4500
Course overview
Course description
This course exposes students to profession software engineering practice through the development of a software system for an industry, government or university based customer. Students will work in small teams with their customer to plan (define, estimate, schedule) and manage an appropriate set of activities to ultimately deliver a software product according to the customer requirements. The implementation part of the project will include monitoring, measuring, tracking, managing change and ultimately close out of the project.
Course content
Refer: http://cs.anu.edu.au/student/se_projects/
Rationale
Software engineering addresses software systems of a scale that is beyond the capabilities of an individual programmer. Indeed, it is concerned with software systems that can only be constructed and maintained by coordinated team effort. There is a consensus that engendering the appropriate software engineering knowledge and skills in a student can only be achieved in the context of group-based projects.
This course focuses on the specification, design, construction and documentation of a moderate-sized software system using a standard software engineering process model. The task is deliberately selected to be larger than can be reasonably handled by an individual student.
This course should be seen as providing only an introduction to these issues. The development of a fully professional software engineer involves the steady accumulation of skills, experience and even wisdom in a professional work environment. However, the course does provide the opportunity for a student to apply software engineering lessons in a realistic team setting; it a substantial experience that gives the student ample chance for reflection on all phases of the software development life cycle. Furthermore, the course contributes to the development of the communication and collaboration skills that are important for a computing professional.
Ideas
This course will be the primary carrier of the following:
- the description of the processes by which a software system is produced in a planned fashion,
- the description of the main documents and reviews that are part of the standard process,
- the management of software development including the role of planning, collaboration, communication and standards.
It will share, with other 3000-level courses, the responsibility for:
- the description of the principles of software engineering,
- design methodologies for software systems,
- experience in communicating those designs, and
- programming-in-the-large, including software reuse.
Topics
The following topics will be addressed.
- System life cycle; Software as a component of a total system.
- The software life cycle; Requirements, design and implementation phases; Verification and validation; Documentation.
- Project management; Conduct of meetings; Decision making; Planning; Metrics.
- Tools and methodologies; Configuration management.
The course covers these topics, through the nominated textbook, assigned readings and workshops. The concerns are strongly focussed by the various projects being undertaken by the students.
Technical skills
On completion of the course the student will be able to:
- produce documents, using LATEX, with a table of contents, with figures, with an index and which are translated to HTML for browsing,
- use a source control system - either RCS or CVS, and
- write simple programs in a scripting language such as Perl.
Textbooks
Refer: http://cs.anu.edu.au/student/se_projects/references.html
Workload
Annual course. Student enrolls in Semester 1 and Semster 2.
Twenty five two-hour lectures and 300 hours of group project work


