units

FIT3140

Faculty of Information Technology

Monash University

Undergraduate - Unit

This unit entry is for students who completed this unit in 2012 only. For students planning to study the unit, please refer to the unit indexes in the the current edition of the Handbook. If you have any queries contact the managing faculty for your course or area of study.

print version

6 points, SCA Band 2, 0.125 EFTSL

Refer to the specific census and withdrawal dates for the semester(s) in which this unit is offered, or view unit timetables.

LevelUndergraduate
FacultyFaculty of Information Technology
OfferedClayton First semester 2012 (Day)
Sunway Second semester 2012 (Day)

Synopsis

This unit develops the students' ability to design, implement and maintain moderately complex, realistically-sized programs. It builds upon the basic programming techniques introduced in FIT1002, FIT1008 and offers the first introduction to the implementation of more complex real-world programs. Examples of such systems include compilers and interpreters, simulations, visualisation tools, drawing packages, database systems, and graphical games. The unit can offer students the opportunity to get acquainted with a second programming language within the procedural-object oriented paradigm, such as C++, Python or one of their cousins.

The unit bridges between core programming knowledge and the large-scale software engineering context. It will emphasise the implementation and use of intermediate to advanced data structures (such as search trees, hash structures, graphs and graph algorithms etc.) and the embedding into an actual computing system (i.e. interacting with the O/S, networking components etc).

Outcomes

Upon successful completion of the unit, students will have a solid working knowledge of advanced object oriented concepts, including multiple inheritance and polymorphism, and the ability to apply this knowledge to the construction of non-trivial programs.

They will have an understanding of:

  • how to design moderately complex programs where that design will typically incorporate a number of modules and a number of levels of refinement;
  • the role of software architecture in program design and a knowledge of a number of commonly-applied software architectures;
  • how to make use of design patterns, re-usable components and software libraries in designing modular software;
  • how to make design decisions that take into account desirable quality attributes such as flexibility, maintainability and re-usability;
  • how to implement programs in a systematic manner using an integrated testing procedure in such a way that modules are highly likely to function as specified;
  • how to isolate faults within a program in a systematic manner;
  • how to use software tools to aid in the program design and implementation process. These tools might include program design tools, integrated program development environments, configuration management systems, re-factoring tools, automatic testing environments and debuggers;
  • how to adequately document a software project.

They will have developed attitudes that enable them to:
  • recognise the importance of process in achieving quality in a repeatable manner;
appreciate the distinction between analysis of program requirements and design that seeks to meet specificatons;
  • adopt an approach to making design decisions that involves considering a range of options for design decisions and evaluating potential design decisions with reference to a system of values;
  • implement a personal software development process with the aim of continuously improving their software development methodology;
  • understand the importance of being able to communicate all aspects of the program development process.

They will have developed the skills to:
  • design moderately complex, real-world programs where that design involves multiple levels of refinement and the specification of a non-trivial number of modules;
  • learn a new programming language efficiently when that programming language is similar to a programming language the student already knows;
  • develop software in a modern software environment that may include software development tools such as those found in an integrated, programming environment, configuration management systems and automated testing systems;
  • design and implement programs that can interface with complex software systems such as graphical-user interfaces, database systems and mathematical libraries;
  • design and implement programs that may need to communicate via a computer network with software systems on other computer devices.

They will have demonstrated the communication skills to:
  • create design documents that can be used to present a view of the software to other stakeholders;
  • create documents or on-line help that enable people to understand how to use the program;
  • create documents that allow a programmer to understand the program in sufficient detail to allow the software to be maintained;
  • produce literate programs, i.e. program source statements that are well commented.

Assessment

Examination (3 hours): 50%; In-semester assessment: 50%

Chief examiner(s)

Dr Robert Merkel

Contact hours

2 hrs lectures/week, 3 hr laboratory/week

Prerequisites

FIT1008

Additional information on this unit is available from the faculty at:

http://www.infotech.monash.edu/units/fit3140/