The
Foundation Module Courses
Data
Structure & Algorithms
Course
Objectives
Students learn, in a comprehensive approach,
the concepts of design and implementation of data types and
how to create new data structures. They acquire the knowledge
of the abstract data type (ADT) and the primitive data types
in the most common programming languages. They acquire too,
a good idea about the life cycle of computerized systems and
software quality.
The
second part that will be discussed in this course is the Algorithms.
Students acquire a good knowledge about the simple and famous
algorithms used in computerized systems, like Sorting and Searching.
I addition, they will be able to compute the complexity of any
algorithm.
PREREQUISITES
Introduction to Programming
Course
Description
Lec.
(1) Software Processes
1.
What is software?
2. Software process models
3. Process iteration
4. Software specification
5. Software design and implementation
6. Software validation
7. Quality Software
Lec.
(2) Algorithms and Programs
1.
Expressing Algorithms
2. Narrative Description
3. Flowchart
4. An algorithmic notation
5. Programming language
High-level
Low-level
Object-language
6. A Solution Methodology
7. Program quality metric
Lec.
(3) Data, Data Types
1. Primitive data types
2. Structured Data types
3. Arrays
4. Records
5. Pointers
Character string types
User-defined ordinal types
Enumerated types
Sub-range types
Constants, Variables and Expressions
Lec.
(4) Statement-level Control Structure
1.
Compound Statement
2. Selection from alternative actions
Looping
Lec.
(5) Sub-programs
1.
Fundamental of subprograms
2. Design Issues for subprograms
3. Parameter-Passing Methods
4. Functions & Procedures
Local & Global Variables
Variables life time
Lec.
(6) Files
1.
Definitions and concepts
2. Record Organisation
3. Sequential Files
4. Direct access Files
Lec.
(7) Arrays and Structures
1.
What is contiguous structure?
2. Advantages and disadvantages
3. Basic operations
4. One-dimensional array
5.
Two-dimensional array
6. Mapping formula
Polynomial ADT
Sparse Matrix ADT
Mapping formula
Lec.
(8) Linked Lists
1.
What is linked contiguous structure?
Advantages and disadvantages
2. Basic operations
3. List variants
? Circularly Linked Lists
? Doubly linked list
Lec.
(9) Stacks
1. Definition and Examples
2. Representing Stacks
Array representation
Linked list representation
3. Infix, Postfix, and Prefix
Lec.
(10) Queues
1. Definition and Examples
Representing Queues
Array representation
Linked list representation
Lec. (11) Recursion
1.
Recursive Definition and Processes
2. Writing Recursive Programs
3. Simulating recursions
Lec.
(12) Sorting Algorithms
1.
Selection sort
2. Merge sort
3. Quick sort
Lec. (13) Searching Algorithms
1.
Sequential
2. Search tree
3. Binary search
References
Sommerville, Lan. Software Engineering, Addison-Wesley Publishers,
6th edition, 2001.
Tremblay, J , DeDourek, J., and Bunt, R. Introduction to Computer
Science- an Algorithmic Approach. McGraw-Hill Computer Series.
1989
Sebesta R. W. Concepts of Programming Languages. Addison-Wesley
Publishers, 1996.
Tenenbaum, A. M., Langsam, Y., and Augenstein, M. Data Structures
Using C. Prentice-Hall International Editions, 1990.
Total
Hours
Theoretical 39 hrs.
Practical 48 hrs.