Software Engineering Group Project COMP3100
Course overview
Course description
This course provides the student with project experience to complement the studies of the software development process in courses COMP2100, COMP2130 and COMP3120.
Students work in small groups and participate in all the development phases (requirements analysis, design, construction, testing and documentation) of a nontrivial software system. As well, each group has to address the control of the development process by constructing and following a detailed software development management plan.
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 - subversion (svn), and
- write simple programs in a scripting language such as Perl.
Textbooks
Refer: http://cs.anu.edu.au/courses/se_projects/references.html
Workload
Annual course. Students must enroll in Semester 1 and Semester 2
Twenty five two-hour lectures and 300 hours of group project work


