units

FIT1008

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)
Clayton Second semester 2012 (Day)
Sunway Second semester 2012 (Day)

Synopsis

This unit introduces students to core problem-solving, analytical skills, and methodologies useful for developing flexible, robust, and maintainable software. In doing this it covers a range of conceptual levels, from high level algorithms and data-structures, down to abstract machine models and simple assembly language programming. Topics include data structures; algorithms; object-oriented design and programming; and abstract machines.

Outcomes

At the completion of this unit, students will have

Developed the ability to:

  • understand abstract data types and, in particular, data structures for stacks, queues, lists, and trees, as well as their associated algorithms for creating and manipulating them. Evaluate the appropriateness of different data structures for a given problem;
  • understand basic searching and sorting algorithms and implement them. Understand the concept of algorithmic complexity. Analyse the complexity of these searching and sorting algorithms as well as other basic algorithms. Compare the complexity of different algorithms for solving a given problem;
  • analyse different implementations of abstract data types and determine their implications regarding complexity, functionality, and memory usage;
  • understand the uses of recursive algorithms and data structures, their advantages and disadvantages. Analyse the complexity of simple recursive algorithms, and their relationship with iteration. Understand basic recursive algorithms for lists and trees, and develop new ones;
  • understand the basic concepts in the object-oriented (OO) programming paradigm;
  • understand the basic concepts in testing;
  • understand the requirements for "good programming practice";
  • understand the different compilation targets, including abstract machine code, assembly language, object code, and machine code. Understand the relationship between simple code in a high level imperative language and its low level translation into assembly code;
  • learn the structure and design of a particular processor simulator. Analyse the execution in this simulator of simple iterative algorithms learned before, thus gaining a deeper understanding of the connection between software and hardware, between an algorithm and its execution;
  • understand how the simulator implements function calling, and use it to reinforce the connection between recursion and iteration.

Developed attitudes that enable them to:
  • conform to programming standards when writing software;
  • use good design principles when constructing systems;
  • take a patient and thorough approach to testing;
  • acknowledge any assistance they have received in writing a program;
  • search for information in appropriate places when necessary.

Developed the skills to:
  • implement their own data-structures. Design and implement Java programs using a variety of data structures and algorithms;
  • implement an object-oriented program consisting of several interacting classes requiring not only basic but also advance object-oriented concepts;
  • construct a test harness for testing an object-oriented program;
  • debug and modify an existing program (written by somebody else);
  • use the Java API classes as part of their programs.

Demonstrated the communication skills necessary to:
  • document a program correctly;
  • explain how parts of a program work.

Assessment

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

Chief examiner(s)

Associate Professor Graham Farr

Contact hours

3 hrs lectures/wk, 3 hrs laboratories/wk, 1 hr tutorial/wk

Prerequisites

FIT1002 or equivalent and FIT1029 or equivalent

Prohibitions

CSE1303, CSC1030, FIT1007, FIT1015

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

http://www.infotech.monash.edu.au/units/fit1008