This is a central course, presenting the basic principles and concepts of software engineering and giving firm foundation for many other courses in the field. It gives broad coverage of the most important terminology and concepts in the software engineering; basic understanding of software life cycle, software processes, requirements engineering processes; introduction to agile and extreme programming, basic modeling and design; basic of project management, software cost estimation, configuration management, and testing; introduction to ethics and professional practice in software engineering. Students participate in a group project various aspects of software lifecycle as well software engineering case tools.
The course covers requirements engineering in depth including the followings: requirements Engineering Process - Elicitation of requirements - Functional and non-functional requirements - System services and constraints – Quality of Requirements - Requirements traceability matrix - Metrics for non-functional requirements - Use case description - Use case and context diagrams - Software Requirements Specification -IEEE Standard - Requirements for agile developments - Requirements for various systems: embedded systems, web-based systems, business systems, etc. – Requirements management. Ethical behavior of software analysts with respect to stakeholders when gathering the requirements will be also discussed. This course gives also a brief introduction to formal specifications using specification languages such as Z or B. Students participate in a group project on software requirements analysis and specification and requirements management case tools.
This course aims to provide a comprehensive presentation of the key concepts, modeling techniques, and development methodologies used in object-oriented approaches in software engineering. This includes a review of Object-Oriented concepts and modeling with UML: Structural Modeling, Behavioral Modeling – System architecture design, – User Interface Design – Object Persistence Design - Class and Method Design - Object-Oriented Testing – Unified Process development cycle – Use case analysis – Sequence diagrams – Encapsulation – Inheritance – Polymorphism – Design principles of coupling and cohesion – Design patterns. Students will be also exposed OO case tools, UML Generating tools, standard templates, Quality control and other SWE related standards. Students will participate in a group project on object-oriented software methodologies and modeling using OO case tools.
This course covers the fundamental design principles and strategies for software architecture and design. Architectural styles, quality attributes notations and documents, reference architecture, domain-specific architecture in architecture process and pattern-oriented design, component-oriented design, aspect-oriented design, and interface design in detail design process are discussed. Software evolution, flexibility, Middleware architectures such as COM and .NET are also discussed. An introduction to SOA is also presented. An overview of design issues in user interfaces and the concepts of reusability, portability and robustness in design are also given in the course. Students participate in a group project on software design and architecture and design tools.
This course introduces fundamental concepts related to Quality Assurance and Measurements and Metrics in the software industry: Measurements of product, process and resource attributes – Planning a measurements program - Goal/Question/Metric - Collection and analysis of software empirical measurements - Building software metrics - Quality concepts – Software quality assurance - Software quality management - Quality planning and control – Quality manual – Product and process standards - Internal and external software quality attributes - Software reviews, walkthrough and inspection – Statistical software quality assurance – Software configuration management - Software reliability – International Software quality models, e.g. ISO 9000 Quality standards and ISO 9000-3, etc.. – Software process improvement – The Capability Maturity Model (CMM), Balanced scorecards. Ethical responsibility to produce high-quality software is also discussed. Students participate in a group project on Software quality assurance.
The course covers software testing and validation in details and include the following topics: Introduction to testing - Software validation and verification – Test cases – Managing the testing process: developing test plans, test scripts and test cases, reports - Unit, functional, and acceptance testing - Black-box and white-box testing - Equivalence partitioning - Path testing – Cyclomatic complexity - Integration testing – System Testing: Regression testing; Interface testing; Stress testing; Incremental testing; Interaction and Usability testing ... etc. - Object-oriented testing - Software testing tools - Alpha, beta, and user acceptance testing – Testing in agile development environment - Automated testing. Students participate in a group project on software testing. Students participate in a group project on software testing.
This is a course offered as a laboratory where students practice the material learned in previous courses through directed study and supervision. The focus will be mainly on analysis, design and implementation. Some concepts related to project planning and to quality assurance will also be considered. The class is an ongoing project in which students register to participate as engineers in a specific role in accordance to individual levels of expertise and profile. More emphases should be given in producing a small software application using various tools including case tools, database systems, and programming environments.
This course will introduce the four types of maintenance: corrective, adaptive, perfective, and preventive maintenance; economic implications of maintenance; managerial issues related to system maintenance such as maintenance organizational structure; quality measurement, processes related to change requests and configuration management. Topics including: Website maintenance; role of CASE tools; reverse engineering, reengineering; code restructuring and amenability measures. Release and configuration management will be also discussed. Students will also learn different maintenance process models such as: Boehm, Osborne, Iterative enhancement and reuse-oriented modes. Students participate in group project in Software Maintenance and Evolution.
This course covers the main knowledge areas of project management (time, cost, quality, scope, risk, human resources, communications, etc.) by focusing on software projects. Project planning, cost estimation (using COCO and FPs), earned-value analysis techniques and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics, Analysis of options, risk management and dynamic adjusting of project plans. Planning for change. Management of expectations. Software contracts and intellectual property. Approaches to maintenance and long-term software development. Standards in project management, such as ISO10006 (project management quality) and ISO12207 (software development process) along with CMM model will be also discussed. Case studies of real industrial projects. Ethical behavior of project managers with respect to clients, employers, products, etc. will be also discussed. Students participate in a group project on software project planning and management.
This course is an introduction information ethics in general and to the professional and ethical aspects of the profession of software engineers in order to be able to fulfill their duties and succeed in their mission. Ethics of Software Engineers and ethical behavior is covered in depth through the IEEE-CS/ACM software engineering code of ethics (with the respect to PUBLIC INTEREST, CLIENT and EMPLOYER, PRODUCT, JUDGMENT, MANAGEMENT, PROFESSION, COLLEAGUES, and SELF). The course covers also other important topics: Software Engineering as an engineering and computing discipline; Professional aspects of the Software Engineer profession: certification, licensing, professional engineering societies, employment contracts, etc.; Group Dynamics, interaction with peers, stakeholders, and managers; Communication and presentation skills; Economic impact of Software systems; legal, social, etc. issues in Software Engineering; The profession of Software Engineer in Saudi Arabia and the Gulf region.
The graduation project I is the first part of a senior design and development software project that will give the chance to students to apply the knowledge they acquired in the curriculum on a real project. The outcome of this project must be a significant software system, employing knowledge gained from courses throughout the curriculum. The project should cover most phases of the software lifecycle. In this part of the project, the focus will be on software process and development methodologies, requirements analysis & specification, high-level design, quality assurance, as well as on management of the project. Students must use software case tools to realize their work. They also need to implement a “hello world” version of their software.
This is a continuation of the graduation project started in SWE496 . The focus will be in this part on low-level design, implementation, testing and quality assurance as well as management of the project. The outcome of this project must be a significant software system, employing knowledge gained from courses throughout the curriculum. Students must use software case tools as well as programming environments to do their work. Students must deliver the code, a final report, and must do a presentation of their work as well as a demo of the software realized.
Training is an important aspect of the educational process in the College of Computer and Information Sciences. Students are required to join an IT center in a government or private sector as a full time for at least 8 weeks during summer prior to their graduation. The aim of the student training is to allow students acquiring the experience and knowledge of real-world work environment (as far as this is possible) as well as applying knowledge and skills they learned in classes in real life and in team working. The student training is evaluated through both his training advisor in the work place as well as the training committee through the report students write about their training.
This course covers technical aspects as well as business aspects, market drivers, and site design reflecting interdisciplinary influences on web applications development. The course explains how Web Engineering differs from software engineering, detailing the rapid prototyping and agile development methods mandated by short lead times, emphasis on interactivity and multimedia, and the increased importance of user interfaces and human-computer interaction. It covers: the systematic development of Web applications; requirement engineering for Web applications; modeling; Architectures of Web Applications; technology driven design; testing, operation and maintenance of Web applications. Special emphases should be given to: Web project management, development processes, usability, performance and security of Web applications. The course covers also Web services. Students participate in group projects on advanced web design and development.
This course helps to build competence, knowledge, and skills in the field of Human-Computer Interaction Design. The goal is to shape new media and tools that will support human use, augment human learning, enhance communication, and lead to more acceptable technological developments at the individual and the social levels. The course covers the following: Introduction to Human-Computer Interaction (HCI) and Human Cognitive Systems. Understanding Users. Interaction Frameworks, Paradigm and Styles. Evaluation of User Interfaces: Heuristic Evaluation and Usability Testing. Underlying Design Principles and Designing Interaction: Interaction Design Process, User-Centered Design and Prototyping, Conceptual and Physical Design, Interface Design Standards, Task Analysis and Discovery, Design Principles. Different Features of Interaction and User Interfaces: Color, Interface Components (e.g. Windows, Icons, Menus, Pointers etc., Icons, Text, Speech, Touch, Augmented Reality, and Haptics. Students participate in group projects on the design, development and evaluation of user interfaces.
This course is designed to enable students to study different special topics of interest, which are carefully selected from software engineering topics. The contents of such a course are to be determined by the department council each time the course is offered. Topics of interest could be one or several from the followings: Formal specifications using formal languages (Z, B, etc.), design patterns, component-based development, Agile and eXtreme programming, Aspect-oriented architecture, Service-oriented computing and architecture, etc. Other topics can be added as needed. Students participate in group projects related to the special topic(s) selected.
This course represents an introduction to complex systems and the methods and tools currently under consideration and use towards better understanding of such systems and the development of a complex engineered systems theory. Topics include concepts such as emergence, self-organization, learning and adaptation, and various quantitative and computational intelligence techniques and algorithms that are considered for modeling, analysis and evaluation of such complex systems. System-of-systems concept will be also presented. Students will be able to work on a small project in which they have to design and implement a small part of a complex system.
Software construction using a modern object- oriented language with support for graphical user interfaces and complex data structures. Specifications, design patterns, and abstraction techniques, including polymorphic. Information hiding. classes, objects, and inheritance procedural, data, iteration, type, and polymorphic. Information hiding, classes, objects, and inheritance
Concepts and methods for the architectural design of large-scale software systems. Fundamental design concepts and design notations. Design strategies and methods. Object-oriented analysis and design modeling using the Unified Modeling Language (UML) notation. Project on object-oriented software design.
Basics of Requirement Engineering, Requirement Engineering process. Methods, tools, notations, and validation techniques for the analysis, specification, prototyping, and maintenance of software requirements. In-depth study of object- oriented requirements modeling, including use case modeling, static modeling and dynamic modeling using the Unified Modeling Language (UML) notation. Project on software requirements and specification using a modern method.
Techniques and programming interfaces for distributed software engineering. Networking protocols at several layers. Construction of distributed and concurrent software using network protocol services. Applications of Internet and Web-based layer
Quality Assurance. Software quality factors. Development standards, models and methodologies. Process and product quality assurance. Software reviews and inspections Verification and validation. Software configuration management. Software quality metrics. Concepts and techniques for testing software and assuring its quality. Equivalence partitioning. Test tools and automated testing. Verification and validation methods. Different Testing Framework: The JUnit, DBunit, Web unit testing framework (will cover one or two). Black-box (functional) test design methods white-box (structural) verification methods: code-directed methods; static testing techniques; program proving; code inspection; symbolic execution; data flow anomaly analysis. Dynamic white-box test design techniques control flow/data flow; Instrumentation/Code Coverage ; a-priori testing; adaptive testing; mutation testing; Grey-box (object- directed) test design methods: design & verification; fsm-based methods; checking platform dependencies; object-oriented test planning. testing distributed s/w and protocols. test description languages (ttcn3). Theoretical foundations of testing: computability. Summary - comprehensive software quality engineering.
Project Management of software engineering projects. Software system engineering and organization methods; work breakdown structure and task determination; effort, duration and cost estimation; scheduling and planning. Monitoring and control; analysis of options; management of risks, change, and expectations. Process and product metrics, post-performance analysis, process improvement and maturity. Management of Agile Programming methodologies such as Extreme Programming; Case studies.
Formal mechanisms for specifying, validating, and verifying software systems. Program verification through Hoare's method and Dijkstra's weakest preconditions. Formal specification via algebraic specifications and abstract model specifications, including initial specification and refinement towards implementation. Integration of formal methods with existing programming languages, and the application of formal methods to requirements analysis, testing, safety analysis, and object-oriented approaches. Formal methods using the Object Constraint Language (OCL).
Principles of object-oriented design through design patterns. A study of the selection of appropriate object-oriented structure after the system requirements or requirements specification of the software system have been developed. Design patterns are created in the logic view of the software system. A study of generalized design solutions for generalized software design problems. A study of the reuse of design patterns.
Introduction and background of Software Usability engineering concepts. This includes measuring usability, Heuristic evaluation, Video recorded evaluation, Task analysis, Cognitive walkthroughs and ethics, Experimentation, Internationalization, Accessibility - Usability for the Disabled, use of the different state-of- the-art tools for usability evaluation, and finally, integration of usability engineering into the software engineering lifecycle. This course will also focus on the different aspects of Human Computer Interaction from the perspective of user interface design and analysis. Group or individual project needs to be completed highlighting both practical as well as research aspects.
Topics not occurring in existing courses. Topics normally assume knowledge in one or more existing MS SWE courses.
An in-depth study of software concepts that promote reuse of software architectures. The influence of object technology on software design and reuse is studied. Domain Modeling methods, which model the application domain as a software product family from which target systems can be configured, are investigated. The course also covers reusable software patterns including architecture patterns and design patterns, software components, and object-oriented frameworks.
The topics covered are: Real-time systems and principles supporting design and implementation. Emphasizes fundamental results from real-time scheduling theory and relevance to computer system design - System design issues for real-time applications involving communication networks, operating systems, databases, and multimedia.
An in-depth study of the basic concepts and methodologies for the discipline known as Enterprise IT architecting within a framework, structure, and methodology - Enterprise IT Architecting as a step for designing and developing a system of information systems - Definition of the business, work, functional, information and technical perspectives - Development of complex information systems.
Basics of Software construction, Formal methods for software construction, managing construction, Tools for model-driven construction. Software process definition, assessment and measurement. Practical consideration or group project: design of real - time systems and language analyzers using CASE tools, Design and verification of programs with concurrency, in the context of languages like UML State Machines (SDL) and Java.
Basics of Software maintenance and configuration. Key issues, Maintenance process, processes related to change requests and configuration management, Configuration control SWE release management, Maintenance techniques: reverse engineering, reengineering; code restructuring. Group or individual Project on the state of art research.
Topics to be covered in this course: Architectural frameworks for Ecommerce, Banking etc. WEB 2.0, Web 3.0 and above – tags, RSS, authoring, web services, XML, Web APIs. Software usability – web accessibility initiative, multimodal interfaces for ease of use. Web application reliability–modeling, testing. Security–Standards and technologies. Scalability–issues and approaches to scalable web application. Maintainability– Metrics for maintainability estimates, maintainability models, etc. Client server architecture. Multi-tier architecture. Event-driven architecture. Database-centric architecture. Middleware–web servers, application servers
Introduction to the concepts and foundations of software component and component-based software. Detailed study of the engineering principles of modeling, designing, implementing, testing, and deploying component-based software. State-of-the-art component technologies will also be explored
Introduction to multimedia enabling technologies, services and applications; basic Internet concepts and protocols, compression and networking technology in multimedia system, Multimedia and the Internet, Quality of Service (QoS) and Resource Management, Scheduling and synchronization, conferencing and collaboration tools, and security.
Web Engineering course topics include but not limited to: Design methodologies to support customizable systems. Development and maintenance models for Web Systems. Documents oriented system development. Server Side Programming: JSP, Java Beans, JDBC etc. System security signed applets and encrypted communications. Introduction to programming distributed web architectures. End-User application development and cultural aspects. Techniques for supporting mobile Web device.
Complex systems engineering course topics include but are not limited to: Universality and unification: Complexity paradigms in nonlinear dynamics, networks and computation. Complexity concepts – universality, emergence, self-organisation, nonlinearity, order, criticality, evolution, modularity, competition and cooperation, feedback and adaptation - Interactions and Patterns. - Complex Systems Theories and Models: Mean-field theory and approximation. - Tools of complex systems modelling – simulation techniques; Monte Carlo, cellular automata, agent-based, power-law and heavy-tailed distributions, Networks: genetic networks, neural networks, scientific computing in Practice. - Applications in Biology, Business and Finance, Social and Environmental
This course will cover recent papers and research results for Web Services, including: Web Services, Service Oriented Architecture (SOA), Service Selection, Service Composition, Service Management, QoS Issues, traditional, and nature inspired techniques for service computing, Security and Dependability for Web Services, P2P Services and Service Cloud.
This course provides a perspective on the analysis of systems that are stochastic in nature. Topics to be covered are: Probability Theory - Decision Making Under Uncertainty - Deterministic Inventory Models - Probabilistic Inventory Models - Markov Chains - Queueing Theory – Forecasting – Simulation.
This course provides a broad introduction to fundamental principles of Command, Control, Communication, Computing, and Intelligence (C4I). The main topics to be covered are: Target Detection, Tracking, and Identification - Data Fusion, Situation Assessment - Communication & Networking - Combat Modeling - Decision Making – C4ISR Architectures – Queuing Theory and Applications. Case studies, assignments and group project.
This course will focus on the use and characteristics of combat simulations as aids to decision-making. The main topics to be covered are: Combat models - Principles of good analysis using combat models - Attrition algorithms for High-Resolution models: Physical models of attrition - Attrition algorithms for aggregated models - Target detection algorithms: glimpse, continuous- observation, DYNTACS, and ACQUIRE models - Battlefield environment representations - Command-and-control - Modeling Other Battlefield Functions: Force representation, Fire Support, Air Defense, Air Combat models, Logistics - The future of combat models: Object-oriented design, parallelism, and distributed combat simulations - High-Level Architecture overview - High-Level Architecture case studies
Investigate common fusion architecture, levels of fusion, well-known data fusion algorithms and look into the recent developments in the area. Study estimation algorithms and hypothesis-testing criteria for multisensory fusion. Analyze the adoption of sensor fusion approaches into different application areas. Topics to be covered in the course: Introduction to sensor data fusion - Basics of different sensors and data formats - Design issues of data fusion systems - JDL data fusion levels - Revised data fusion levels - Algorithms for sensor data fusion: Estimation algorithms for entity parameters or attributes, Identity estimation algorithms for recognition, and Several hypothesis-testing criteria such as data-entity association, situation analysis, etc. - Analyze the adoption of sensor fusion in the following application areas: Military, monitoring and tracking, Pervasive environment, Environment monitoring, Surveillance, Critical infrastructure protection, Intelligent transportation system.
Topics to be covered: Principles and estimation techniques for static and dynamic systems, linear and nonlinear, discrete and continuous time. Estimation for kinematic models, track initiation, bearing-only tracking, tracking maneuvering targets with adaptive filtering, MM (Multiple Model) and interactive MM algorithms. Tracking single target in clutter, nearest neighbor algorithm, tracking and data association, Multiple hypothesis tracking. Tracking performance evaluation.
The tentative topics may cover: Introduction and overview of basic concepts of Medical Informatics, Online Medical Resources and Search Engines, Patient Informatics, Electronic Health Records, Interoperability, Ubiquitous Technology, Clinical Practice Guidelines, Disease Management, Patient Safety and Information Technology and E-prescribing: Telemedicine and Medical Image Archiving and Communication Systems: Bioinformatics and Public Health Informatics (Public Health Information Network), Emerging Trends in Medical Informatics and Information Technology (Emerging technologies such as voice recognition, artificial intelligence, Service Computing, SOA, Re-HAVE, VoWiFi and biometrics).
Systems development methodologies; the systems development life cycle, and the concepts, tools and techniques. The fundamentals of database modeling, technologies and design such as entity-relationship, semantic data modeling, database technologies, and normalization. Basic knowledge of SQL. Case study on medical information systems (hospital, outpatient, nursing, laboratory, pharmacy, etc.), decision-support systems, clinical research and health-assessment systems, technology assessment and healthcare accounting. Course project on the design and development of a DBMS related to one or more of the following: Medical health record and/or medical information system, disease management and drug utilization.
Project management (PM) methods and skills for healthcare. The latest project management techniques for medical informatics projects. Project initiation, planning, implementation and project termination. Issues related to project leadership, human resources, budgeting, and scheduling, risk identification and risk mitigation tactics. Case discussions highlight the state-or-the-art for project management practices as applied to health informatics in contemporary environments. Case study and hands on practice with some Project management software related to medical informatics. Group project on SPM in medical informatics.
The basic concepts such as privacy and security, language and terminologies, standards and interoperability, decision support systems, health informatics specialties. The concepts of organizing health information in a logical way to interface with an electronic information system. The design and role of various health classification systems such as the International Classification of Diseases (ICD), the International Classification of Primary Care (ICPC) and casemix systems (AR-DRGs, AN-SNAP, MH-CASC). Review of technology applications such as Telemedicine and health in the home, web-based applications, cyber-consultations and wireless technology
Software Reliability topics include but not limited to: cleanroom software development, fault avoidance, fault tolerance, exception handling, N-version programming, reliability metrics, recovery blocks, formal methods, functional specifications, and Z Notation.
Students in the non-thesis option will normally complete their project in the last two terms of the program. Students should apply to the non-thesis option in their initial application rather than attempting to transfer to this option once registered in the program. The project supervisor must be a member of SWE dept. The project must represent a significant contribution to the state-of-the-art BUT does not involve the writing up of a dissertation. However, a project report summarizing the work is to be submitted to the project supervisor for grading. This part is dedicated to the literature review, analysis and design of the project.
Students in the non-thesis option will normally complete their project in the last two terms of the program. Students should apply to the non-thesis option in their initial application rather than attempting to transfer to this option once registered in the program. The project supervisor must be a member of SWE dept. The project must represent a significant contribution to the state-of-the-art BUT does not involve the writing up of a dissertation. However, a project report summarizing the work is to be submitted to the project supervisor for grading. This second part is more dedicated to detailed design, implementation, and validation issues.
A dissertation thesis that is accomplished via the formal, academic, and scientific approach under the supervision of an academic advisor