Fall 2019 - CS-241 - Data Structures and Algorithms - Course Outline
Fall 2019 - CS-241 - Data Structures and Algorithms - Course Outline
Page 1 of 5
COURSE OBJECTIVES
The Main course objectives as follows:
To introduce the basic theory of complexity and data structures as basic building blocks.
To develop the skills to analyse time requirements for a data structure and associated
algorithms.
To prepare the students to pick the right data structure for a given problem.
LEARNING OUTCOMES
By the end of this course, we aim to impart the following skillset to the students:
A thorough understanding of the role of data structures and algorithms in problem solving.
Ability to analyse, design, and select the correct data structure as per the given problem.
A knowhow about the usage of collections and iterators.
Reference Text:
John Lewis, Joseph Chase, Java Software Structures: Designing and Using Data Structures,
4th Edition, Pearson 2014.
Please note that retake of any missed assessment will not be permitted.
Page 2 of 5
TENTATIVE LECTURE CONTENTS
Lecture Chapter Contents Assessments
Course Introduction
Revision:
o Designing classes
1-2
T: Prelude o Methods
(Designing Classes) o Interfaces
o Generics
Generics (Generic Functions and Generic
Handouts / Web Classes) Quiz-1
3-4
References Exceptions
The Comparator Interface
Analysis of Algorithms
5 Algorithm Efficiency
Growth Functions
Big-Oh Notation
6 R: Chp-2
Comparing Growth Functions
Determining Time Complexity
7 Analyzing loop execution, nested loops,
and method calls
A simple List
Specifying a List (An Interface)
8 T: Chp-12 Abstract Data Types (ADTs) Quiz-2
The ADT List
Using the ADT List
Using an array to implement the ADT List
9 T: Chp-12, 13 Time efficiency of the array-based ADT
List implementation
References as Links
Managing Linked Lists
o Accessing Elements Project
10-11 R: Chp-4
o Inserting Nodes Assessment – 1
o Deleting Nodes
Doubly Linked Lists
Operations on a chain of linked nodes
o Adding a Node at various positions
o Removing a Node from various
positions Quiz-3
12-13 T: Chp-14
Implementation of ADT List using a
Linked List
Time efficiency of the linked-based ADT
List implementation
Stacks
The ADT Stack
T: Chp-5, 6 A Linked Implementation
14
An array-based implementation
Efficiency Analysis
Page 3 of 5
Using Stacks to Solve Problems:
o Checking for Balanced Delimiters
in an Infix Expression
Project
15-16 o Infix to Postfix Expression
Assessment – 2
Conversion
o Evaluation Postfix Expressions
The Program Stack
17-18 MIDTERM EXAMINATION
The ADT Queue
Problem Solved: Waiting Line
19 T: Chp-10, 11
A Linked Implementation of ADT Queue
An Array-based Implementation
Recursion
Tracing a Recursive Method
Stacks and Recursion
20 T: Chp-7
Iteration vs. Recursion
Factorial Method using Iteration and
Recursion
Iterators Quiz-4
T: Chp-15, Java The Interface Iterator
21 ADT List Iterators
Interlude-5 Project
Assessment – 3
Note on Linear Search and Efficiency
Note on Binary Search and Efficiency
R: Chp-9 Note on Selection Sort and Efficiency
22 T: Chp-18, 9 Quicksort
Median-of-Three Pivot Selection
Efficiency of Quicksort
Trees
23 R: Chp-10 Binary Trees Quiz-5
Tree Traversals
Binary Search Tree (BST)
24 The ADT BST
R: Chp-11 ADT BST Operations
Project
25-26 Balanced BSTs: AVL Trees
Assessment – 4
Graphs
Applications
Paths, Loops, Spanning Trees
27-28 R: Chp-15 Directed vs. Undirected Graphs Quiz-6
Graph Representations: using Arrays and
Lists
Graph Traversals: BFS and DFS
Hashing
Applications
29-30 T: Chp-22
Hash Functions
Collisions and Resolutions
FINAL EXAMINATION
Page 4 of 5
LEGEND: Q = Quiz, A = Assignment, T = Textbook, R = Reference Book
Please note: This is a proposed schedule only and may be varied at the discretion of the instructor to
give a greater or lesser degree of emphasis to particular topics.
CLASS DISCIPLINE
Participation in, and contribution to, class discussions will positively help you in understanding and
applying the concepts learned during the lectures. Raise your hand if you have any question. Making
any kind of disruption (e.g. side talks, continually come to class late, continually leaving class early,
etc.) in the class is strongly discouraged and may result in the removal of students from the lectures.
COURSE COMMUNICATION
All communication in this course will be done via emails on your official student email
accounts only, and you are expected to regularly monitor your email for any important
announcements during the course.
Usage of mobile phone is strictly prohibited in the class room. In case of mobile phone usage, it will
be dealt according to university policies. Also, placing the mobile phones at desks during lectures
and lab sessions is strongly discouraged.
Page 5 of 5