units

FIT1029

Faculty of Information Technology

# Undergraduate - UnitFIT1029 - Algorithmic problem solving

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.

## 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.

 Level Undergraduate Faculty Faculty of Information Technology Offered Clayton First semester 2012 (Day)Sunway First semester 2012 (Day)Clayton Second semester 2012 (Day)

### Synopsis

Algorithms are recipes for solving a problem. They are fundamental to computer science and software engineering. Algorithms are the formal foundation of computer programming but also exist independently of computers as systematic problem-solving procedures. This unit introduces algorithmics, the study of algorithms. It is not about programming and coding but rather about understanding and analysing algorithms and about algorithmic problem-solving, i.e. the design of systematic problem-solving procedures. The unit will not require any knowledge of a programming language and is very hands-on. Students will develop algorithms to solve a wide variety of different problems, working individually as well as together in groups and as a class.

Topics include: what is a computational problem and what is an algorithm; basic control structures; basic data structures; modular algorithm structure; recursion; problem-solving strategies for algorithm development; arguing correctness of an algorithm; arguing termination of an algorithm; understanding the efficiency of an algorithm; and limitations of algorithms.

### Outcomes

At the completion of this unit students will have -
A knowledge and understanding of:

• the difference between algorithms and processes;
• basic ways to structure algorithms: basic data structures (simple variables, collections structure, specifically vectors, lists, sets, and tables); basic control structures (sequence, choice, iteration);
• recursion;
• modular algorithm structures;
• the equivalence of recursion and iteration;
• problem solving strategies suitable for algorithm development including top-down design and bottom-up design;
• simple standard patterns for algorithms (eg traversal, search);
• what makes a good algorithm
• limitations of algorithms (high level).
Developed the skills to:
• develop simple iterative and recursive algorithms
• argue the correctness of simple algorithms
• judge the efficiency of simple algorithms, and
Developed attitudes that enable them to:
• value clear specification of problems;
• understand the relation between algorithms and programs;
• appreciate the value of designing abstract algorithms before starting to code a program;
• have confidence that they can develop algorithms to solve computational problems;
• appreciate that seemingly difficult problems can have very simple elegant algorithmic solutions (and vice versa);
• value correctness arguments for algorithms; and
• value the importance of simplicity and efficiency.
Demonstrated the communication skills necessary to:
• solve a problem by discussing possible approaches and solutions as a team; and
• clearly communicate (the specification of) a computational problem, its algorithmic solution and arguments for correctness and efficiency.

### Assessment

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

### Contact hours

2 hrs lectures/wk, 2 hrs tutorials/wk