ITSE424 : software design models

Department

Department of Software Engineering

Academic Program

Bachelor in Software Engineering

Type

Compulsory

Credits

03

Prerequisite

ITGS211

Overview

The subject is to make the students able to design, and implement distributed software systems in Java using sockets, remote procedure call mechanisms, and JAVA RMI. It will cover: Process & thread management, Basic Process Model, Scheduling, Critical Sections and Synchronization, Mutual exclusion, Semaphores, Conditional variables, Monitors; Concurrency, Modeling concurrent activity starting with JAVA threads, Forms of communication, architectures, Means of communication (Shared memory, Direct communication between processes); Distributed Systems, Client-server model, Naming and binding, RPC General principles, Protection and Security; Java RMI.

Intended learning outcomes

Knowledge &understand

  • Realizing the importance of software design patterns and strategies
  • To understand how design patterns can be implemented in object-oriented programming.
  • To understand the open-close principle and how to design solutions from context.
  • Learn how to rebuild poorly designed solutions.

mental skills

  • Analyze the problem in the code to know its type
  • Deduces the appropriate pattern of code analysis that will improve the code in terms of faster and better performance
  • Distinguish between different types of programming patterns, the role of each, and when to use them
  • The ability to use more than one pattern in large or group projects to improve program performance

Practical & professional skills

  • At the design level, students will learn how to use patterns to design better programs and how to use the Unified Modeling Language (UML) to represent patterns.
  • On implementation, students will learn how to implement patterns using the Java programming language
  • Students will put what they have learned into practice by carrying out a group project
  • They will design and implement a complex object-oriented software system.

General and transferable skills

  • Analytical skills
  • Team work
  • solving problems
  • Project management

Teaching and learning methods

  • Lectures
  • Lab
  • Problem-based learning
  • Mini-projects
  • Virtual platform for further discussions or inquiries (Class hub)

Methods of assessments

  • Midterm exam = 30
  • Final exam = 50
  • Assignments = 7
  • quizzes = 3
  • Mini project = 10

Course contents

  • Java Overview
  • Introduction of software design patterns
  • Creational Patterns: Factory, Abstruct Factory
  • Creational Patterns: Builder, Singleton, Prototype
  • Structural design patterns: Adapter, Bridge, composition
  • Structural design patterns: Decorator,
  • Structural design: Facade
  • Structural design patterns: Flyweight
  • Structural design patterns: proxy Pattern
  • Behavioral Design Patterns: Observer
  • Behavioral Design Patterns: Strategy.
  • Behavioral Design: Command
  • Final Project

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)