COMP9024: Data Structures and Algorithms

Course Outline

(Updated in Feb 22, 2017)


Course Summary

Data structures are about how data are stored inside a computer. An algorithm is a step-by-step process for solving a problem within a finite amount of time.  Data structures and algorithms are not important in software design, but also in hardware design. Being proficient in data structures and algorithms are essential for good software developers, hardware developers, and system architects.     


Aims

The aims of this course are

·        to introduce the basic data structures and algorithms, and

·        to develop skills in the design and analysis of algorithms and data structures.


Learning Outcomes

If successfully completing this course, students will


Assumed Knowledge

You need to have basic programming skills and knowledge in calculus and basic probability theory.


Units of Credit: 6

Prerequisite: COMP9021.


Lecturer in Charge:    Hui Wu  

                                      Office: K17-501D  

                                      Phone: 938-56572

                                      Email: huiw@cse.unsw.edu.au

 

Assignment Marker:  Umair Tariq  

                                     Office: K17-501-36  

                                     Phone: 938-57382

                                     Email: u.tariq@student.unsw.edu.au

 

 


Lectures

Lecture time: Tuesday 18:00-21:00 at CLB 8.

Each week there is a three-hour lecture. The following topics will be covered in the lectures:

 

The aim of the lectures is to facilitate learning and understanding of the important concepts within course syllabus. They will provide the main source of course material delivered. In the lectures, I will

 

You are welcome to ask questions during each lecture.

Web Stream

For the students who are enrolled in the web stream, you need to watch lecture video for each lecture. The lecture video is available after the completion of each lecture, that is, you can watch it on Wednesday. If you have any questions, post them to the Message Board of the course home page. I will answer all the questions promptly.   


Assignments

There will be four individual assignments using Java programming language.   The primary objective of assignments is to develop your skills in solving problems by using the data structures and algorithms you have learned. According to IEEE Spectrum, Java is most popular programming language. However, I have only one week for teaching Java. Therefore, you need to learn Java mostly on your own to improve your self-learning capability which is very important in your future career.        

Assignment schedule

Assignment One:     Week 3 – Week 5

Assignment Two:    Week 6 – Week 8

Assignment Three:  Week 9 – Week 10

Assignment Four:    Week 11–Week 13


Homework

There will be homework every week. However, you do not need to submit homework. Although solutions to all homework will be released, you are highly recommended to work out your own solutions.  


Examination

There will be a formal three-hour, closed book exam at the end of this course.


Assessment 

Your final result is calculated as follows:

·       If your exam result is greater than or equal to 40, your final result is total assignment marks + 0.7*exam marks. Otherwise, your final result is equal to your exam result.

 


Supplementary Exam

 You will be given a supplementary exam ONLY IF

 

Note that all requests for special consideration must be put in writing within one week of the event at Student Center.


 

Textbook

 

 


 

Plagiarism

 

All work submitted for assessment must be your own work. Assignments must be completed individually. We regard copying of assignments, in whole or part, as a very serious offence. We use plagiarism detection software to search for multiply-submitted work, or work derived from other students or from other sources. Be warned that:

 

Collaborative learning in the form of "think tanking" is encouraged, but students are not allowed to compose programming solutions together as a group during such discussions. Students are also warned not to send code fragments of the assignments to each other in any form (e.g. as email or listings). In addition, copying/purchasing of code that is available on the web is also not permitted. Students who are caught for plagiarism will be dealt with according to UNSW Plagiarism Policy https://student.unsw.edu.au/plagiarism.

 

The pages below describe the policies and procedures in more detail:


 

Getting Help

 

From time to time, various problems may arise in your study of this course. Below is a list of typical problems, with suggestions for where you might seek help with them:

 

Problem

Solution

Can't understand lecture material

Ask the lecturer after a lecture, or ask the lecturer for a consultation

Stuck with assignments/programming

Go to a consultation

Problems with your account

CSE Help Desk

 

If you have a problem, do not wait until late in the session before you seek help. Problems that are dealt with early are usually quicker and easier to resolve than ones that are left to the last minute.

You may find the following links useful:


Continual Course Improvement

Student feedback on this course, and on the lecturing in this course, will be obtained via electronic survey at the end of session. Student feedback is taken seriously, and continual improvements are made to the course based in part on this feedback. Students are very strongly encouraged to let the lecturer in charge know of any problems, as soon as they arise. Suggestions (or even complaints!) will be listened to very openly, positively, constructively and thankfully, and every action will be taken to fix any issue or improve the students’ learning experience.

In the previous semester, some students had difficult in Java programming. In order to help students learn Java, I will provide more code examples in this semester.

 

CRICOS Provider Number: 00098G