<?xml version="1.0" encoding="UTF-8"?>
<course>
  <academic-career-val type="integer">1</academic-career-val>
  <assumed-knowledge-and-required-skills>Introductory programming, preferably in an object-oriented language</assumed-knowledge-and-required-skills>
  <available-through-customised-graduate-programs type="integer" nil="true"></available-through-customised-graduate-programs>
  <co-teaching-course-id type="integer" nil="true"></co-teaching-course-id>
  <consent-description></consent-description>
  <consent-required type="boolean">false</consent-required>
  <corequisites></corequisites>
  <cost-considerations></cost-considerations>
  <course-code>COMP2500</course-code>
  <course-description>&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;</course-description>
  <course-group nil="true"></course-group>
  <eligibility></eligibility>
  <filled-flag type="integer">1</filled-flag>
  <first-year-course type="boolean">false</first-year-course>
  <id type="integer">10773</id>
  <incompatibility>&lt;p&gt;COMP2100&lt;/p&gt;</incompatibility>
  <indicative-assessment>&lt;p&gt;Assignments (20%); Mid Semester Exam (20%); Presentation (5%); Report (5%); Final Exam (50%: practical 25%, theory 25%)&amp;nbsp;&lt;/p&gt; </indicative-assessment>
  <indicative-reading-list></indicative-reading-list>
  <is-active type="integer">1</is-active>
  <is-public type="integer">1</is-public>
  <learning-outcomes>&lt;dl&gt;&lt;dt&gt;On completing this course students are expected to be able to:&lt;br /&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt; 1. construct and modify&lt;/dt&gt;&lt;dd&gt;to &lt;em&gt;construct&lt;/em&gt; and &lt;em&gt;modify&lt;/em&gt; small to medium scale computer     programs     &lt;ol&gt;&lt;li&gt; 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; &lt;/li&gt;&lt;li&gt; to make modifications (including source code design, implementation, and testing) within a moderate-sized Java program system (10&lt;sup&gt;3&lt;/sup&gt; (1000) to 10&lt;sup&gt;4&lt;/sup&gt; (10,000) lines of code), given a documented specification,       design and implementation of the system &lt;/li&gt;&lt;li&gt;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 &lt;/li&gt;&lt;li&gt; to use and analyse a personal software process in constructing small       computer programs &lt;/li&gt;&lt;/ol&gt; &lt;/dd&gt;&lt;dt&gt;2. abstraction&lt;/dt&gt;&lt;dd&gt;to &lt;em&gt;compare&lt;/em&gt; several forms of abstraction in     object-oriented software design and construction:&lt;br /&gt; inheritance, generic types, polymorphism, procedural abstraction, abstract recursive data structures (including abstract syntax trees);&lt;br /&gt; and to &lt;em&gt;apply&lt;/em&gt; them appropriately in constructing programs. &lt;/dd&gt;&lt;dt&gt;3. knowledge resources&lt;/dt&gt;&lt;dd&gt;to be familiar with common programming knowledge resources to &lt;em&gt;find&lt;/em&gt;, &lt;em&gt;understand&lt;/em&gt;, and &lt;em&gt;apply&lt;/em&gt; online     manuals and tutorials for software tools, programming language     components, and software libraries &lt;/dd&gt;&lt;dt&gt;4. principles and practice of software construction tools&lt;/dt&gt;&lt;dd&gt;to &lt;em&gt;describe&lt;/em&gt; the underlying principles of three major     aspects of software construction and to &lt;em&gt;apply&lt;/em&gt; the appropriate tools:      &lt;ol&gt;&lt;li&gt;version control       (&lt;em&gt;using the&lt;/em&gt; Subversion &lt;em&gt;tool&lt;/em&gt;) &lt;/li&gt;&lt;li&gt;unit testing (&lt;em&gt;using the&lt;/em&gt; JUnit &lt;em&gt;tool&lt;/em&gt;) &lt;/li&gt;&lt;li&gt;automatic build process (&lt;em&gt;using the&lt;/em&gt; Make &lt;em&gt;or&lt;/em&gt; Ant &lt;em&gt;tool&lt;/em&gt;) &lt;/li&gt;&lt;/ol&gt; &lt;/dd&gt;&lt;/dl&gt;  </learning-outcomes>
  <lock-version type="integer">0</lock-version>
  <long-title>Software Construction for Software Engineers</long-title>
  <max-units type="integer">6</max-units>
  <min-units type="integer">6</min-units>
  <other-information></other-information>
  <preliminary-reading></preliminary-reading>
  <prescribed-texts>&lt;p&gt;There is no required textbook for COMP2100.  Useful reference books are:&lt;/p&gt; &lt;p&gt;Tremblay, Jean-Paul &amp;amp; Cheston, Grant A. &lt;em&gt;Data Structures and Software Development in an Object-Oriented Domain&lt;/em&gt;, Java edition, Prentice-Hall, 2003.&lt;/p&gt; &lt;p&gt;Humphrey, Watts &lt;em&gt;Introduction to the Personal Software Process&lt;/em&gt;, Addison Wesley, 1997.&lt;/p&gt; &lt;p&gt;Hunt, Andrew &amp;amp; Thomas, david &lt;em&gt;The Pragmatic Programmer &lt;/em&gt;, Addison Wesley, 2000.&lt;/p&gt; &lt;p&gt;McConnell, Steve &lt;em&gt; Code Complete &lt;/em&gt;, Microsoft Press, 1993.&lt;/p&gt;</prescribed-texts>
  <progress-units type="integer">6</progress-units>
  <quota></quota>
  <recommended-courses></recommended-courses>
  <requisite-statement>&lt;p&gt;Enrolment in BSEng 4708 or 4711 or 4712 and COMP1510 or COMP1110 and MATH1005 or MATH1014 or MATH1116&lt;/p&gt;</requisite-statement>
  <restricted-program-entry type="integer" nil="true"></restricted-program-entry>
  <short-title>Soft Cons for Soft Engs</short-title>
  <student-contribution-band>Band 2</student-contribution-band>
  <subject>Computer Science</subject>
  <technology-requirements></technology-requirements>
  <updated-by nil="true"></updated-by>
  <version type="integer" nil="true"></version>
  <workload>&lt;p&gt;Thirty one-hour lectures, five two-hour tutorial/laboratory sessions and three one to two-hour seminars&lt;/p&gt;</workload>
  <year type="integer">2010</year>
</course>
