CS2302 Data Structures and Algorithms

Course Duration: One Semester

Credit Units: 3

Level: B2

Medium of Instruction: English

Prerequisites:
CS2301 Problem Solving and Programming /or
CS2331 Problem Solving and Programming /or
CS2362 Computer Programming for Engineers and Scientists /or
CS2363 Computer Programming

Precursors: Nil

Equivalent Courses: Nil

Exclusive Courses: Nil

Course Aims:
This course aims to provide extensive study and practice on data structures and algorithms.  The concept of building abstract data types and analysis of complexity carries through the process of algorithm design.  It is assumed that students already have practical skills of problem solving with C++ programming.


Course Intended Learning Outcomes (CILOs):

(state what the student is expected to be able to do at the end of the course according to a given standard of performance)

Upon successful completion of this course, students should be able to:

No.

CIL0s

Weighting
(if applicable)

1.

carry out basic algorithm analysis;

10%

2.

solve problems algorithmically with good programming style;

20%

3.

design and use of abstract data types in algorithm design;

20%

4.

implement efficient data structures and operations for problem solving;

25%

5.

implement and compare common sorting algorithms;

15%

6.

implement recursive functions for recursively defined problems.

10%


Teaching and learning Activities (TLAs):
(designed to facilitate students' achievement of the CILOs)

Teaching pattern:
Suggested lecture/tutorial/laboratory mix:
2 hrs. lecture; 1 hr. tutorial.

ILOs

TLAs

CILO 1
to
CILO 6

Teaching will be in the form of lectures with complementary tutorial exercises.  Tutorials will be informal, and may include a number of different support methods.  For example:

-  guided lab exercises;

-  extended lab exercises for individual practices;

-  general discussions;

-  student presentations;

-  resolving students' difficulties.

The above activities will complement the lecture and reinforce students' understanding of the materials and practical skills.

Based on the Course ILOs, the teaching/learning activities of this course may include:

·      Tutorial Sessions - The tutorial exercises are mainly programming problems that relate to the taught topics.  Students are guided to analyze and solve them by writing programs with appropriate data structures and/or algorithms.  In the meantime they will observe, analyze, and compare the performances of various algorithms.  In addition, they will gain experiences on testing and debugging, that will in turn help them to visualize the execution of programs, and improve their skills.  This course activity supports ILO#1 - 3.

·
      Assignments - The assignments will include more challenging problems compared with laboratory exercises.  Students need to analyse the problems and solve them by designing appropriate data structures and/or algorithms individually. The teacher will provide appropriate guidance and suggestions to their solutions.  Through doing the assignments, students will become more familiar with the concepts and skills.  This course activity supports ILO#1 - 6.

Assessment Tasks/Activities:
(designed to assess how well the students achieve the CILOs)

ILO No

Type of assessment tasks/activities

Weighting
(if applicable)

Remarks

CILO 1

carry out basic algorithm analysis

Coursework: In programming assignments, whether the submitted programs achieve good performance will be used to access this ILO.  Related questions may also be included in the tests.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

10%

 

CILO 2

solve problems algorithmically with good programming style

Coursework: In programming assignments, each student needs to create a workable computer program to solve the problem.  The quality of the program design will be used to access this ILO.  Related questions may also be included in the tests.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

20%

 

CILO 3

design and use of abstract data types in algorithm design

Coursework:  In programming assignments, whether the submitted programs include appropriately designed data types (that are applied effectively in problem solving) will be used to access this ILO.  Related questions may also be included in the tests.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

20%

 

CILO 4

implement efficient data structures and operations for problem solving

Coursework:  In programming assignments, whether the submitted programs include implementation of efficient data structures and operations will be used to access this ILO.  Related questions may also be included in the tests.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

25%

 

CILO 5

implement and compare common sorting algorithms

Coursework:  In the tests, specific questions  on sorting algorithms will be involved to access this ILO.  Related activities may also be involved in assignments.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

15%

 

CILO 6

implement recursive functions for recursively defined problems

Coursework:  In programming assignments, whether the submitted programs include implementation of properly designed recursive functions will be used to access this ILO.  Related questions may also be included in the tests.

Exam:  Final exam will include questions to assess students’ abilities according to this ILO.

10%

 


Grading of Student Achievement:
Refer to Grading of Courses in the Academic Regulations (Attachment) and to the Explanatory Notes.

Examination duration: 2 hours
Percentage of coursework, examination, etc.: 30% CW; 70% Exam
Grading pattern: Standard (A+AA-…F)
For a student to pass the course, at least 30% of the maximum mark for the examination must be obtained.

Keyword Syllabus: 

Dynamic data structures;  abstract data types : stacks, queues, trees;  binary search trees;  hash tables;  priority queues;  sorting;  asymptotic analysis;  algorithm design techniques; divide-and-conquer, greedy algorithm and backtracking.

Related Links
Department of Computer Science