ITGS301 : Design and Analysis algorithms

Department

Department of Software Engineering

Academic Program

Bachelor in Software Engineering

Type

General

Credits

03

Prerequisite

ITGS220

Overview

The module introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, and algorithmic strategies.

Intended learning outcomes

Knowledge &understand

  • Learn how to analyze algorithms and compute running time.
  • Learn about asymptotic analysis of algorithms.
  • To understand the concepts of algorithm design
  • To recognize the classification of recursive and non-recursive algorithms
  • Explain the basic model of divide-and-conquer approach, some examples.
  • Recognize the methods of analyzing the execution time of recursive algorithms
  • To become familiar with the better use of the concept of dynamic programming
  • Learn about graph algorithms

mental skills

  • To distinguish between (Big O, Big Omega, & Big Theta) Asymptotic notations
  • To choose the best algorithm to solve a problem.
  • To distinguish between recursive algorithms & Non recursive algorithms
  • To compare the execution time of the different algorithms.

Practical & professional skills

  • Analysis of the running time of different algorithms
  • Analyzing the complexity of an algorithm using asymptotic notations.
  • Determine the efficiency of an algorithm, and compared it to others to solve a problem.
  • Use different concepts in designing algorithms

General and transferable skills

  • To be able to use modern technological tools.
  • Able to using internet and scientific references for independent study
  • Able to using internet and scientific references for independent study
  • To be able to do presentations

Teaching and learning methods

  • Lectures
  • Tutorials
  • Problem-based learning

Methods of assessments

  • Midterm exam = 40
  • Assignment = 10
  • Final exam = 50

Course contents

  • Introduction of algorithms
  • Performance analysis
  • Asymptotic notations
  • Complexity and Orders of Growth
  • Analysis of time Complexity
  • Sorting problem : Insertion sort
  • RECURRENCE RELATIONS:
  • SOLVING RECURRENCES Iteration method
  • The master method for solving recurrences
  • The recursion-tree method for solving recurrences
  • Designing Algorithms / Divide-and-Conquer
  • Merge sort and Quick sort-Complexity
  • Dynamic Programming
  • Elementary Graph Algorithms
  • Greedy Algorithms
  • Single-Source Shortest Paths

Networks Programming (ITSE405)
Mobile Applications Development (ITSE304)
Cryptographic Algorithms and Protocols (ITSE306)
Information Retrieval Systems (ITSE307)
Mobile Operating System (ITSE308)
Programming Paradigms (ITSE309)
Principles of Games Developments (ITSE401)
Multimedia Systems (ITSE404)
Cloud Computing (ITSE406)
Web Services (ITSE407)
Web Applications Development (ITSE408)
Modelling of Complex Systems (ITSE303)
Data Mining/Business Intelligence (ITSE302)
Social Networking (ITSE409)
Logic Programming (ITSE301)
Mathematics I (ITMM111)
Physics (ITPH111)
Problem solving Technic (ITGS113)
Intro to Information Technology (ITGS111)
General English1 (ITEL111)
Arabic language 1 (ITAR111)
Mathematics II (ITMM122)
Arabic language 2 (ITAR122)
General English2 (ITEL122)
Introduction to Programming (ITGS122)
System Analysis and Design (ITGS124)
logic Circuit Design (ITGS126)
Introduction to Networking (ITGS215)
Introduction to Statistics (ITST211)
Object Oriented Programmin (ITGS211)
Introduction to Software Engineering (ITGS213)
Discrete Structures (ITGS217)
Numerical analysis (ITGS219)
Introduction to Databases (ITGS228)
Data Structure (ITGS220)
Foundation of Information Systems (ITGS222)
Introduction to Internet Programming (ITGS226)
Computer Architucture & Organization (ITGS223)
Information Security (ITGS224)
Design and Analysis algorithms (ITGS301)
IT Project Management (ITGS303)
Software Requirements Analysis (ITSE311)
Advanced Databases (ITSE312)
Scientific Writing (ITGS304)
Modern Programming Language (ITSE322)
Software Construction (ITSE321)
Operating System (ITGS302)
Software Design and Architecture (ITSE411)
Advanced Internet Programming (ITSE412)
Human Computer Interaction (ITSE413)
Software Engineering Ethics (ITSE414)
Software Quality Assurance and Testing (ITSE421)
Software Reuse and Component-Based Software Engineering (CBSE) (ITSE422)
Visual Programing (ITSE423)
software design models (ITSE424)