0216200, Object-Oriented Programming
3 hours per week, 3 credit hours, prerequisite: 0750113
This course covers the following major topics: Introduction to Object-Oriented approach, Understanding Class Definition, Object Interaction, Grouping Objects, Using Library Classes, Information Hiding, Inheritance, Polymorphism, Overriding, Abstract Classes, Abstract Methods, Interfaces, Exception Handling, and Designing Applications.
This module will provide the student with a framework for object-oriented thinking. The main focus of this course is general object-oriented and programming concepts from a software engineering perspective.
0216201, Computing Ethics and Technical Writing
3 hours per week, 3 credit hours, prerequisite: 0750114
This course will develop the ethical foundations of good professional practice in computing and will give students an informed awareness of the principal issues of ethics and professional responsibility in the development and use of computers and information systems. It will provide a basic survey of ethical theories and discuss the role of professional organizations in maintaining good practice, both in general and then specifically in the computing industry. It will also consider legislation that applies in the computing industry, including three major areas of ethical concern in computing: computer cracking, data privacy and intellectual property of software.
0216112, Introduction to Information Systems and Information Technology
3 hours per week, 3 credit hours, prerequisite: none
This course introduces information systems and information technology, information systems concepts, and application software. It identifies the basic hardware input and output devices, the main concepts of networks and communication. This course introduces databases and information systems. In addition to that it describes the world wide web and takes into consideration browsing the web and searching the web. Finally, the challenges of digital age.
0750113, Programming Fundamentals (1)
3 hours per week, 3 credit hours, prerequisite: none
This module focuses on problem solving strategies and the use of algorithmic language to describe such problem solving. It introduces the principles of procedural programming, data types, control structures, data structures and functions, data representation on the machine level. Various problems are considered to be solved using C-like procedural programming language.
0750114, Programming Fundamentals (2)
3 hours per week, 3 credit hours, prerequisite: 0750113
This course presents the fundamental concepts of programming using Python. It covers the basic structures of the programming tools such as variable names; data types; control structures; arrays; functions; Sequences (Strings, Tuples, Lists); Iteration; Dictionaries; Set; Modules; Exceptions; introduction to file processing; and Introduction to Object oriented programming.
0216202, Visual Programming
3 hours per week, 3 credit hours, prerequisite: 0216202
The course provides the features that are most important to windows programmer, such as object-oriented programming, graphics, graphical-user-interface (GUI) components, prepackaged data structures, database processing, Event-Driven programming, decision statements, repetitions, and strings in visual programming. Also, the students should learn topics about functions procedures, and connecting the visual basic with databases. The language is appropriate for implementing Internet and World-Wide-Web-based applications.
0712111, Software Engineering Fundamentals
3 hours per week, 3 credit hours, prerequisite: 0216112
This module introduces the foundational principles and practices of software engineering. It provides a structured overview of the core activities involved in developing high-quality software systems, including software processes, requirements engineering, software architecture, software design, and software testing. Students will engage with both theoretical concepts and practical techniques used throughout the software development lifecycle. By the end of the module, students will understand how software systems are planned, specified, designed, and validated.
0721224, Data Structure
3 hours per week, 3 credit hours, prerequisite: 0216200
In this course, students are exposed to fundamental programming constructs and data types such as lists, stacks, queues, tree, graphs…
An Outside-In approach will be adopted for this course. It consists in first teaching standard data type's interfaces and their use to solve real life problems, and other specific domains like Games, Multimedia problems (Outside view). The implementation aspect of these standard data types will then be covered (Inside view). Moreover, the theoretical lectures will be reinforced by a set of tutorials and laboratory sessions where simple and more complex problems are first solved then programmed.
0721222, Software Modeling
3 hours per week, 3 credit hours, prerequisite: 0721111
Models are an integral part of every engineering discipline, as they become in software engineering. Modeling can be done in many ways and with different levels of formality. Modeling concerns software products, software processes, enterprise and business processes. Teaching modeling is as important as the modeling itself since it educates the future software engineers in good modeling practices.
0721230, Software Requirements
3 hours per week, 3 credit hours, prerequisite: 0721111
This course will teach students how to derive and develop software requirements that are measurable, testable and lead to a compliant software design and implementation. Using industry best practices and tools, students will learn how to elicit, analyze, specify, and validate functional and non-functional software requirements. Students will develop software requirements models and specifications that capture the customer / user's needs.
0721213, Introduction to Web Programming
3 hours per week, 3 credit hours, prerequisite: 0750113
This course is intended to give the student basic issues in website design and implementation. provides students with an insight and the basics of web application development and programming. It focuses on the main web technologies on HTML5 and the related technologies in its ecosystem, diving into the exciting new features of HTML5, CSS3 style sheets, JavaScript, in addition, give students a brief overview of XML, web servers, database and PHP/ASP programming.
0721320, Software Architecture
3 hours per week, 3 credit hours, prerequisite: 0721222
This module introduces the architectural design of complex software systems and the role of architecture in determining system quality. Students will explore common architectural patterns, along with models and notations used to describe and reason about architecture. The course emphasizes quality attributes such as performance, availability, and modifiability, and teaches architectural tactics used to achieve them. Through case studies and practical design activities, students will evaluate existing architectures and design new systems that achieve targeted quality attributes using principled architectural approaches.
0721345, Mobile Computing Technology
3 hours per week, 3 credit hours, prerequisite: 0750260
This course introduces students to the fundamental concepts, principles, and technologies that underpin mobile computing. It explores the architecture, components, and operation of mobile systems, emphasizing how mobile computing supports communication, data access, and application delivery in modern life. Students will gain an understanding of mobile networks, wireless communication protocols, and mobile operating systems, as well as the constraints and opportunities unique to mobile environments.
0721322, System Analysis and Design
3 hours per week, 3 credit hours, prerequisite: 0721230
This course completes the students' knowledge of Software Design. This course introduces the major design goals (correctness, reusability, robustness, flexibility). Then the course focuses on design principles and design patterns.
0721351, Database Management Systems
3 hours per week, 3 credit hours, prerequisite: 0750260
This course provides students with a comprehensive understanding of relational database concepts and Oracle development tools. It begins with a review of the fundamental principles of relational databases, including data modeling, normalization, and relational integrity. Students will explore the structure and functionality of SQL, distinguishing between Data Definition Language (DDL) and Data Manipulation Language (DML) statements for database creation and data management.
0721350, Computer Organization and Architecture
3 hours per week, 3 credit hours, prerequisite: 0750230
The module emphasizes on the following knowledge areas: Digital components used in the organization and design of digital computer, serial and parallel transfer, Flow of information and timing signals, design an elementary basic computer, organization and architecture of the central processing unit.
0721425, Software Development and Documentation
3 hours per week, 3 credit hours, prerequisite: 0721322
This course covers a set of major topics related to the Software Construction discipline. It introduces the fundamental aspects of the software construction activities, presents various recommended practical approaches and techniques, and details a set of widely used software construction technologies. An overview on the software construction tools is also presented.
0721331, Software Project Management
3 hours per week, 3 credit hours, prerequisite: 0721322
Software management is concerned with knowledge about the planning, organization, and monitoring of all software life-cycle phases. Management is critical to ensure that software development projects are appropriate to an organization, work in different organizational units is coordinated, software versions and configurations are maintained, resources are available when necessary, project work is divided appropriately, communication is facilitated, and progress is accurately charted.
0721422, Web Software Engineering
3 hours per week, 3 credit hours, prerequisite: 0721213
The World Wide Web has evolved into a central platform for the delivery of information resources and services. However, many web applications are still developed in an ad-hoc manner, leading to challenges in usability, maintainability, quality, and reliability. This course provides a systematic and disciplined approach to the development of high-quality, reliable, and user-centered web applications.
0721410, Secure Software Construction
3 hours per week, 3 credit hours, prerequisite: 0721425
This course explores the foundations of software security. We'll consider important software vulnerabilities and attacks that exploit them – such as buffer overflows, SQL injection, and session hijacking – and defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques. Importantly, we'll take a "build security in" mentality, considering techniques at each phase of the development cycle that can be used to strengthen the security of software systems.
0721433, Software Testing
3 hours per week, 3 credit hours, prerequisite: 0721322
This course provides an in-depth exploration of software testing across various levels, including unit, integration, subsystem, and system testing. It covers manual and automated techniques for generating test data and emphasizes designing and implementing tests to ensure software maintainability and quality. Students will learn key concepts such as test planning, test case design, and tools for verification and validation (V&V). The course also examines formal methods for testing, the economics of software testing, and how testing integrates with other quality assurance activities in the software development lifecycle. Topics include black-box and white-box testing, performance and load testing, and automated testing tools to improve software reliability.
0721434, Practical Training
3 hours per week, 3 credit hours, prerequisite: Exceeding 90 credit hours + Department Agreement
This course covers practical training in professional and industrial environments, allowing the student to apply the skills and knowledge acquired during previous years at the university to real projects. The course includes direct supervision from a training supervisor to ensure the quality of learning, enhance problem-solving skills, work within multidisciplinary teams, and gain practical experience that helps the student transition smoothly into the job market.
0721448, Research Project (1)
3 hours per week, 3 credit hours, prerequisite: Exceeding 90 credit hours + Department Agreement
This course covers the methodology of scientific research and planning for software projects, where the student identifies the topic of their project, gathers and analyzes the necessary data, and designs preliminary software solutions. The course focuses on developing the ability to conduct systematic research, formulate software problems, and use research and analysis tools and techniques to ensure project quality.
0721449, Research Project (2)
3 hours per week, 3 credit hours, prerequisite: 0721448
This course continues the practical research project that the student started in Research Project (1), focusing on fully implementing software solutions and developing the resulting software. The course includes design review, development, testing, evaluation, and submission of the final project with detailed documentation, in addition to presenting the results and defending the project before a specialized academic committee to ensure the application of quality standards and academic accreditation.
0750120, Discrete Mathematics
3 hours per week, 3 credit hours, prerequisite: none
This course studies the mathematical elements of computer science. Topics include propositional logic; predicate logic; mathematical reasoning; techniques of proof; mathematical induction; set theory; number theory; matrices; sequences and summations; functions, relations and their properties, elementary graph theory, and tree.
0216121, Introduction to Probability and Statistics
3 hours per week, 3 credit hours, prerequisite: none
In this course, students will explore graphical and numerical methods to describe data distributions and relationships and learn how to design surveys and experiments that yield representative data. The course also introduces probability concepts, enabling students to draw conclusions about populations based on random samples, while understanding the reliability of these conclusions. Emphasis is placed on real-world applications of statistics rather than theoretical details.
0750230, Digital Logic Design
3 hours per week, 3 credit hours, prerequisite: 0216112
This module introduces the concepts of the design and implementation of digital circuits. Laboratory experiments will be used to reinforce the theoretical concepts discussed in lectures. The lab experiments will involve the design and implementation of digital circuits. Emphasis is on the use computer aided tools in the design, simulation, and testing of digital circuits.
0750323, Algorithms
3 hours per week, 3 credit hours, prerequisite: 0721224
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.
0750335, Operating Systems
3 hours per week, 3 credit hours, prerequisite: 0721350
This course will provide an introduction to operating system design and implementation. The operating system provides a well-known, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. In addition, the operating system is responsible for allowing resources (e.g., disks, networks, and processors) to be shared, providing standard services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from one another.
The course will start with a brief historical perspective of the evolution of operating systems over the last fifty years and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), file systems, and operating system support distributed systems.
0750260, Database Systems
3 hours per week, 3 credit hours, prerequisite: 216200
This module aims to give the students the main concepts of databases, database models, database design, Relational database model, design constraints query languages, object-oriented database, normalization techniques, query optimization and database on the web.
0750340, Fundamentals of Computer Networks
3 hours per week, 3 credit hours, prerequisite: 0721224
This course covers technical and managerial aspects related to data communication, computer and telecommunication networks.
0250241, Linear Algebra (1)
3 hours per week, 3 credit hours, prerequisite: 0216111
This module is an introduction to Linear Algebra for lower-level undergraduate students. Topics include systems of linear equations, matrices, matrix operations and inverses, determinants, Cramer's Rule, Euclidean vector spaces, and Eigenvalues and Eigenvectors.
0216111, Calculus (1)
3 hours per week, 3 credit hours, prerequisite: none
A foundational course introducing the core principles of calculus, including functions and their properties, limits and continuity, differentiation and its applications, and the fundamentals of integration for computing areas and solving applied problems.
0721439, Special Topics in Software Engineering
3 hours per week, 3 credit hours, prerequisite: 0721322
This course provides a comprehensive introduction to User Experience (UX) and User Interface (UI) Design, focusing on creating intuitive, engaging, and efficient digital experiences. Students will learn the principles of designing user-centered interfaces, the process of conducting user research, and the methods for testing and evaluating user interfaces. The course covers essential topics such as interaction design, visual design, prototyping, and usability testing, with an emphasis on creating responsive designs for various platforms, including web and mobile.
0721423, Graphical User Interface
3 hours per week, 3 credit hours, prerequisite: 0721322
This course provides a comprehensive introduction to User Experience (UX) and User Interface (UI) Design, focusing on creating intuitive, engaging, and efficient digital experiences. Students will learn the principles of designing user-centered interfaces, the process of conducting user research, and the methods for testing and evaluating user interfaces. The course covers essential topics such as interaction design, visual design, prototyping, and usability testing, with an emphasis on creating responsive designs for various platforms, including web and mobile.
