King Fahd University of Petroleum & Minerals

College of Computer Sciences and Engineering

ICS 202: Data Structures (3-3-4)

Spring Semester 2008-2009 (082)

 << Syllabus >>

N.B. All course material and related resources are made available

through WebCT and will be added here soon.

 

Office: 22-108 

Phone: 03-860-1930, 

E-mail: alfy@kfupm.edu.sa

URL: http://faculty.kfupm.edu.sa/ics/alfy/

Office Hours: SMW @ 09:00am-10:00am or by appointment

 

 

(Sec 03)

El-Sayed El-Alfy

Office: 22:108                         Telephone: 1930

E-mail: alfy@kfupm.edu.sa

Office Hours:  SMW 9:00-10:00am or by appointment

(Labs)

Said Abdallah Muhammad

Office: 22:148-2                      Telephone: 2081

E-mail: said@kfupm.edu.sa

Office Hours:  UMT 1:00-2:00pm or by appointment

(Sec 01)

Hamdi Yahyaoui

Office: 22:101                          Telephone: 7699

E-mail: hamdi@kfupm.edu.sa

Office Hours:  SMW 10:00-11:00AM or by appointment

(Sec 02)

Wasfi Al-Khatib

Office: 22:313                         Telephone: 1715

E-mail: wasfi@kfupm.edu.sa

Office Hours:  SMW 11:00AM-1:00PM or by appointment

 

Introduction to Design Patterns. Introduction to Algorithm Analysis. Review and Analysis of Linear Data Structures. Recursion, Trees and Graphs. Implementations of Tree and Graph Traversals. BST, AVL, Heaps and B-Trees. Hashing Techniques. Data Compression. Memory Management. Practice in Developing Medium Scale Programs.

 

  1. Introduce students to fundamental data structures; their algorithms, implementations and applications.

  2. Teach students how to analyze the efficiency of the fundamental data structures in terms of both time and space so that they are able to decide what data structure is suitable for a given problem.
     

 Upon completion of the course, you should be able to:

  1. Apply object oriented concepts (inheritance, polymorphism, design patterns, etc.) in software design.
  2. Implement various data structures and their algorithms, and apply them in implementing simple applications.
  3. Analyze simple algorithms and determine their efficiency using big-O notation.
  4. Apply the knowledge of data structures to other application domains like data compression and memory management.
     

 

Activity

Weight

Laboratory

20% (see Lab Guidelines)

Homework (4 to 5) [common]

10%

Quizzes (4 to 5)

10%

EXAM 1:  Wednesday April 8, 2009, 7:00-9:00pm [common]

15%

EXAM 2:  Wednesday May 27, 2009, 7:00-9:00pm [common]

20%

Final  Exam: Sunday June 21, 2009, 7:30am  [common]

25%

 

Note: Material will be updated as necessary.

Wk

Date

Day

LECTURES

 

LABS

No

Topic

Appointment

 

No

Lab Topic

Appointment

1

28-Feb

Sat

1

Review of OO Concepts

 

 

0

Jcreator and Packages

 

2-Mar

Mon

2

Design Patterns

 

 

4-Mar

Wed

3

Design Patterns (cont.)

HW1 Assign

 

 

5-Mar

Thurs

4

Complexity Analysis

 

 

 

 

 

2

7- Mar

Sat

5

Complexity Analysis (cont.)

 

 

1

Design Patterns (intro)

[Word] [HTM] [ZIP]

 

 

9- Mar

Mon

6

Complexity Analysis (cont.) <exercise set>

 

 

11- Mar

Wed

7

Singly Linked Lists

 

 

3

14- Mar

Sat

8

Singly Linked Lists (cont.)

 

 

2

Design Patterns (more)

[Word] [HTM] [ZIP]

 

16- Mar

Mon

9

Doubly Linked Lists (cont.)

 

 

18- Mar

Wed

10

Stacks

 

 

4

21-Mar

Sat

11

Queues

HW1 Due

 

3

Linked Lists

[Word] [HTM] [ZIP]

Lab Quiz 1: Design Patterns

23- Mar

Mon

12

Recursion

 

 

25- Mar

Wed

13

Recursion (cont.)

 

 

5

28- Mar

Sat

14

Recursion (cont.)

HW2 Assign

 

4

Stacks and Queues

[Word] [HTM] [ZIP]

 

30- Mar

Mon

15

Recursion and Analysis of Recursive Algorithms

 

 

1-Apr

Wed

16

Analysis of Recursive Algorithms (cont.)

 

 

6

4-Apr

Sat

17

Trees

 

 

5

Recursion

[Word] [HTM] [ZIP]

Lab Quiz 2: Linked Lists, Stacs, Queues

6- Apr

Mon

18

Binary Trees (cont.)

 HW2 Due

 

8- Apr

Wed

19

Tree Traversal Algorithms

 

 

8- Apr

Wed

 

Major Exam #1

7:00-9:00pm

7

11- Apr

Sat

20

Heaps

 

 

6

Binary Trees & BST

[Word] [HTM] [ZIP]

 

13- Apr

Mon

21

AVL Trees

 

 

15- Apr

Wed

22

AVL Trees

 HW3 Assign

 

8

18- Apr

Sat

23

AVL Trees

 

 

7

Binary Heaps

[Word] [HTM] [ZIP]

 

20- Apr

Mon

24

Huffman Coding

 

 

 

22- Apr

Wed

25

B & B+ Trees

 

 

 

 

 

 

 

 

Midterm Vacation

 

 

 

 

 

9

2-May

Sat

26

B-Trees

 

 

8

AVL Trees

[Word] [HTM] [ZIP]

 

4- May

Mon

27

B+-Trees

 

 

6- May

Wed

28

Graphs (Intro)

 

 

10

9- May

Sat

29

Graphs (Implementation)

HW3 Due

 

9

Huffman Coding

[Word] [HTM] [ZIP]

 

11- May

Mon

30

Graphs (Implementation)

 

 

13- May

Wed

31

Graphs (Traversals) & Edge classification

 

 

11

16- May

Sat

32

Graphs (Topological Sort)

 

 

10

Revision

 

Lab Quiz 3: Trees

18- May

Mon

33

Shortest Path Algorithm

 

 

20- May

Wed

34

Minimum Spanning Trees

Hw3 Solution

HW4 Assign

 

12

23- May

Sat

35

Minimum Spanning Trees

 

 

11

Graphs

[Word] [HTM] [ZIP]

 

 

25- May

Mon

36

Graphs (Cycles, Connectedness)

 

 

27- May

Wed

37

Hashing

 

 

27- May

Wed

 

Major Exam #2

7:00-9:00pm

13

30- May

Sat

38

Hashing

 

 

12

Graphs Algorithms

[Word] [HTM] [ZIP]

 

 

1- Jun

Mon

39

Hashing (cont.)

 

 

3- Jun

Wed

40

Garbage Collection

HW4 Due

 

14

6- Jun

Sat

41

Garbage Collection

 

 

13

Hashing

[Word] [HTM] [ZIP]

 

8- Jun

Mon

42

LZ78 Compression

 

 

10- Jun

Wed

43

LZW Compression

 

 

15

13- Jun

Sat

44

 Review

 

 

14

Revision

Lab Quiz 4: Graphs

15- Jun

Mon

45

 Review

 

 

Final Exam As Posted by the  Registrar

 

 

  1. J2SE6 Documentation

  2. JCreator

  3. JGrasp

  4. JEdit

  5. SmartDraw

 

Section 1 Section 2 Section 3
Quiz 1 (Solution) Quiz 1 (Solution) Quiz 1 (Solution)
Quiz 2 (Solution) Quiz 2 (Solution) Quiz 2 (Solution)
Quiz 3 (Solution) Quiz 3 (Solution) Quiz 3 (Solution)
Quiz 4 (Solution) Quiz 4 (Solution) Quiz 4 (Solution)
  Quiz 5 (Solution)  

 

Exam

Semester

Major Exam 1 081 - 072 - 071 - 062
Major Exam 2 081 - 072 - 071 - 062 - 061
Final Exam 081 - 072 - 071 - 062 - 061

 


 

Lab Guidelines:

For the Labs, you must store all your work in a package ics202 on your z-drive. We shall be adding files to this package in each lab. Your lab exercises should be stored in sub-packages lab01, lab02, etc.  You are required to observe this package structure throughout the semester.

 

1.      Grade Distribution:

·         6 %    Participation (0.5% * 12)

·         14 %  Four Laboratory Quizzes (3% + 3% + 4% + 4%)

(a)    There will be no make-up for missed laboratory quizzes.

(b)   A student will not be allowed to take a laboratory quiz in a different section; unless permitted by the laboratory instructor to do so.

(c)    Being able to configure the Software used in the lab, being able to fix the common ICS 202 laboratory errors (as explained in Laboratory session 0), and making sure a student’s Z drive is properly configured (before coming for a quiz) is considered part of a quiz.

(d)   Each laboratory quiz will be an open-book programming quiz.

(e)    A student will be given zero in a quiz if he misses a lab quiz in his section without an official excuse or if he copies even a small portion of his quiz from another student. All students involved in a cheating offence will get a zero grade. It is a student’s responsibility to protect his work.

(f)    A student will be given a grade of zero (out of 0.5) for the participation part of the laboratory if he does any of the following:

(1) He is absent without an official excuse (2) He is late by more than 15 minutes (3) He does not come back promptly to the lab after a prayer break (4)  He leaves the laboratory session without the instructors permission (5) He does not attempt to do the current laboratory tasks (6) He does anything not related to the current laboratory session, like connecting to a Web site other than the ICS 202 WebCT site without the instructor’s permission, or reading other material. A STUDENT MUST BE DOING THE LABORATORY TASKS EVEN IF THE LABORATORY INSTRUCTOR IS LATE OR HE IS NOT PRESENT IN THE LAB (7) He does not pay attention when the instructor is explaining something (8) He disrupts the laboratory session. Discussions are allowed (except during a quiz); but they must be done in a manner that does not disturb other students. A STUDENT IS REQUIRED TO PUT HIS MOBILE PHONE IN SILENT MODE DURING THE LABORATORY SESSIONS.

2.      Announcement of Laboratory quizzes: The dates and the topics that will be covered in each quiz are in the course syllabus. You are required to know these dates. Students may or may not be reminded about the quizzes.

3.      Preparation for each laboratory session: A student is required to prepare himself for a laboratory session by reading the laboratory document for that session, by studying the code, and by reading all lecture material related to the session. THIS PREPARATION IS ESSENTIAL FOR A STUDENT TO BE ABLE TO DO THE LABORATORY TASKS. The lab instructor will not conduct lectures; he may just elaborate on specific issues related to the current lab session.

4.      Laboratory Quiz solutions will be discussed in the appropriate laboratory sessions. Solutions will not be posted. This is to encourage student participation.

5.      Complaints regarding Laboratory quiz grades must be submitted to the laboratory instructor within one week of the posting of the grades for that particular quiz.

6.      Laboratory Instructor’s Office Hours: Students are encouraged to use the office hours to clarify any part of the laboratory tasks that is not clear; however the instructor will only provide hints and not solve a task.

7.      Some aspects of the laboratory tasks may be asked in the ICS 202 major exams and the final exam. Students are thus required to take the laboratory part of this course seriously.

 

 

888  Best of luck!!  888



 

 

Data Structures and Algorithms in Java, 4th edition,

Michael T. Goodrich and Roberto Tamassia, 

John Wiley & Sons, 2006.

 

Data Structures, Algorithms, and Applications in Java, 2nd edition,

Sartaj Sahni,

Silicon Press, 2004.

 

Data Structures with Java,

William H. Ford and William R. Topp,

Prentice Hall, 2005.

 

Data Structures and the Java Collections Framework, 2nd edition,

William Collins,

McGraw-Hill, 2005.

 

Object-oriented Data Structures Using Java, 2nd edition,

N. Dale, D. Joyce, C. Weems,

Jones and Bartlett, 2006.

 

Data Structures and Algorithms in Java

Peter Drake,

Prentice-Hall, 2006.

 

 Data Structures & Other Objects Using Java:  Michael MainData Structures & Other Objects Using Java, 3rd edition,

Michael Main,

Addison-Wesley, 2006.

 

 

Data Structures and Problem Solving Using Java, 2nd edition

Mark Allen Weiss,

Addison-Wesley, 2001.
 

 

Introduction to Algorithms and Java CD-ROMIntroduction to Algorithms and Java CD-ROM,

Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, Clifford Stein

Mc-Graw Hill, 2003

 

DSAA in Java 2/e Book Cover

Data Structures and Algorithm Analysis in Java, 2nd edition,

Mark Allen Weiss

Addison-Wesley, 2007

 

Robert Sedgewick,"Algorithms in Java, Part 5 Graph Algorithms"

Algorithms in Java, Parts 1-4 (Fundamental Algorithms, Data Structures, Sorting, Searching), 2002

Algorithms in Java, Part 5 (Graph Algorithms), 2003

Robert Sedgewick

 

          Others

 

Algorithms: Design Techniques and Analysis

M. H. Alsuwaiyel

World Scientific Publishing Company, 1998

 

 

The Algorithm Design Manual, 2nd edition,

 Steven S. Skiena

Springer, 2008

 

 Data Structures and Algorithms:  Alfred V. AhoData Structures and Algorithms

Alfred V. Aho, John E. Hopcroft, Jeffrey Ullman

Addison-Wesley, 1982
 

 

 

Fundamentals of Computer Algorithms

Ellis Horowitz

 

Data Structure Techniques

Thomas A. Standish

 

The Java Language Specification, Third Edition, Sun Microsystems, Inc. 2005

James Gosling
Bill Joy
Guy Steele
Gilad Bracha

 

 

The Design Patterns Java Companion, 1998 [online]  [pdf]

James W. Cooper