Syllabus

Computer Engineering Department

Islamic University of Gaza

ECOM 3312
Data Structures and Algorithms

Undergraduate Course

Spr. 2015

Sylabus

Instructor:

Prof. Mohammad A. Mikki

Professor of Computer Engineering
Computer Engineering Department
The Islamic University of Gaza, Gaza, Palestine

Room      I215

Tel. +970- 08- 286 0700 Ext. 2876

Mail               mmikki@iugaza.edu.ps
Homepage   http://site.iugaza.edu.ps/mmikki/
Skype ID      mohammad.mikki

Course Description

  • The course covers the fundamentals of data structures and object-oriented programming.
  • They are two sides of the same coin:

    • As a programmer becomes more proficient, they realize that how well and efficiently a problem can be solved often depends on how the data are stored. Some of the ideas are quite sophisticated and clever, and we'll explore a spectrum of them in this class, ranging from fairly basic to moderately advanced structures.
    • The other side is that once one realizes the importance of data structures, it is natural to think of programs not as sequences of instructions that pass around some data, but as data packets that come with the code needed to process them. This is at the heart of the object-oriented design paradigm, and often leads to more modular and extensible (and readable) programs.
    • We will learn about the basics of object-oriented programming, along with many of the interesting things that can be naturally done within the paradigm.
  • The class will put significant emphasis on a theoretical understanding of data structures, their implementation, and the object-oriented viewpoint.
  • Assignments will contain significant programming projects along with programming-free questions to explore how data structures work

Course Learning Objectives

  • Ability to compare data structures and algorithms for efficiency using algorithm analysis and experiments.
  • Ability to apply algorithm analysis and knowledge of discrete mathematics to evaluate algorithms and data structures.
  • Ability to implement and use linear data structures, including stacks, queues, lists
  • Ability to implement and use search structures and algorithms including binary search, search trees, and hash tables.
  • Ability to choose appropriate and efficient data structures and algorithms to solve a problem.
  • Ability to use and implement search data structures, including search trees and hash tables.
  • Ability to use and implement priority queues.
  • Knowledge of and ability to implement sorting algorithms and compare their performance analytically and empirically
  • Understanding of graphs and their representations; ability to implement graph search using BFS, DFS, and Dijkstra's Algorithm.
  • Ability to solve problems using pointers and dynamically managed memory.
  • Ability to write recursive functions and understand when recursion is appropriate to a problem.
  • Ability to design, document, and implement classes and object hierarchies.
  • Ability to apply tools and techniques for program correctness, such as unit testing, use of a symbolic debugger, and assert statements.
  • Ability to write readable and maintainable code.
  • Ability to explain computational solutions in person and in writing.

Prerequisites

  •  “Introduction to Programming” course
  • “Introduction to Computing” course

Useful Links

  • CS104 – Spring 2015: Data Structures and Object Oriented Design, University of Southern California

 bits.usc.edu/cs104

  • CS 302 Data Structures, Department of Computer Science & Engineering, UNR, Spring 2015

    http://www.cse.unr.edu/~mgunes/cs302/

  • CS 32: Introduction to Computer Science II, Computer Science Department, University of California, Los Angeles, Winter 2015

http://cs.ucla.edu/classes/winter15/cs32/

Course Website

http://moodle.iugaza.edu.ps

Please check this webpage at least once a week for:

  • lecture notes
  •  homework assignments
  • solutions
  • useful links
  • supplementary material, and
  • announcements

Required Textbook and Material

 

Title:

Data Structures and Algorithms in Java,

Sixth Edition,

Authors:

Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser,

Publisher:

John Wiley & Sons, Inc., 2014

ISBN: 978-1-118-77133-4 (paperback)

The textbook is required. While the class will not always follow the order or presentation style of the textbook, the textbook is an excellent source for much of the material.

 

 

Class Schedule

Textbook Sections

Topic

Week

Ch. 3

Course Syllabus & Overview

Fundamental Data Structures

  • Using Arrays

1

Sun.

08.Feb.2015 

Ch. 3

Fundamental Data Structures

  • Using Arrays
  • Singly Linked Lists
  • Circularly Linked Lists .

2

Sun. 15.Feb.2015

Ch. 3

Fundamental Data Structures

  • Doubly Linked Lists
  • Equivalence Testing
  • Cloning Data Structures

3

Sun. 22.Feb.2015

Ch. 4

Algorithm Analysis

4

Sun. 01.Mar.2015

Ch. 5

Recursion

5

Ch. 6

Stacks

6

Ch. 6

Queues, and Deques

7

Ch.  7

List and Iterator ADTs

8

Ch. 8

Trees

  • General Trees
  • Binary Trees

9

Ch. 8

Trees

  • Implementing Trees
  • Tree Traversal Algorithms

10

Ch. 14

Graph Algorithms

  • Data Structures for Graphs
  • Graph Traversals
  • Transitive Closure

11

Sun.

19.Apr.

Ch. 14

Graph Algorithms

  • Shortest Paths
  • Minimum Spanning Trees

12

Sun.

26.Apr.

Ch. 10

Maps, Hash Tables, and Skip Lists

13

Sun.

3.May

Ch. 12

Sorting and Selection

  • Merge-Sort
  • Quick-Sort

14

Sun.

10.May

 

Review

15.

Sun. 17.May

 

First day of final exams

Sat. 23.May.

 

Grading Scheme

Lab

20%

Midterm

30%

Final Exam

40%

Class Participation

10%