The University of Western Australia
School of Computer Science and Software Engineering
 
 

School of Computer Science and Software Engineering

CITS2200 Data Structures and Algorithms Home

Algorithm Quotes

"The Feynman Problem Solving Algorithm: (1) write down the problem; (2) think very hard; (3) write down the answer." Richard Feynman

"Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better." Edsger Dijkstra

"Beware of bugs in the above code. I have only proved it correct, not tried it." Donald Knuth

"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.", Tony Hoare

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.", Donald Knuth

Overview

At the core of most computer applications is the storage and retrieval of information. The way that the stored data is structured has a strong impact on what can be retrieved, how quickly it can be retrieved and how much space it occupies. The use of generic structures, or abstract data types (ADTs), to encapsulate the data also allows software engineering principles of independent modification, extension and re-use.

The unit studies the specification, implementations and time and space performance of a range of commonly used ADTs and corresponding algorithms in an object-oriented setting. The aim is to provide students with the background needed both to implement their own ADTs where necessary, and to select and use appropriate ADTs from object-oriented libraries where suitable.

Outcomes: Students develop an understanding of the fundamentals of data structure selection, analysis, design, implementation and application, and in-depth technical knowledge of key abstract data types; the ability to undertake problem identification, formulation and solution using ADT components for storing and retrieving data; and the ability to select and use appropriate ADTs for object-oriented libraries where suitable. Also, students gain in-depth technical competence in algorithm design, implementation and analysis and learn techniques for problem identification, formulation and solution.

Unit coordinator: Prof. Amitava Datta
Tutor: Max Ward and Andrew Gozzard
Consultation: Friday 2-3pm in CSSE Rm 1.07.
Recommended Texts:
  • Data Structures and Problem Solving Using Java, by Weiss.
  • Introduction to Algorithms, by Cormen, Lieserson, Rivest and Stein (any edition will do).

Timetable

Students should attend both lectures each week as well as the workshop and one laboratory session each week.
Type Time Day Location
Lecture 2-3pmTuesday ARTS:Austin
Lecture 8-9amThursday ARTS:Austin
Workshop 9-10amThursday ARTS:Austin (starting week 2)
Laboratory 4pm-6pm Tuesday CSSE Lab 2.03
Laboratory 8am-10am Wednesday CSSE Lab 2.03
Laboratory 10-12pm Wednesday CSSE Lab 2.03
Laboratory 12-2pm Wednesday CSSE Lab 2.03

Assessment

The assessment for CITS2200 consists of a midsemester test, 8 assessed laboratories, a project and a 2hr examination.
Assessment % of final mark Assessment Dates
Laboratories 8 x 2.5% various
Mid-semester test 10% 9am, Thursday, March 23
Project 20% Available: April 25
Due: 11:59pm Sunday, June 3
Final exam 50% End of Semester Examination Period

This Page