This course provides in depth details regarding interdisciplinary techniques such as statistics, linear algebra, optimization, and computer science used to create automated systems that can sift through large volumes of data at high speed to make predictions or decisions without human intervention. This course will familiarize students with a broad cross-section of models and algorithms for machine learning, and prepare students for research or industry application of machine learning techniques.
This course is designed for graduate students to explain the principles of engineering complete large and complex software systems. The course focuses on advanced topics related to software architecture practices, technologies, and artifacts. It will also cover topics including architectural principles and alternatives, design documentation, and relationships between levels of abstraction.
This course is designed for graduate students to provide the basis and principles of research methodology. Various research designs will be introduced that include experimental and non-experimental as well as qualitative and quantitative designs. The course also aims at stressing the importance and needs for research in software engineering. It prepares students to plan and carry out research projects during their studies in real software environment.
"This course is designed to train students in the fundamental concepts on which modern software testing techniques are based. Also, it addresses other important aspects related to software quality such as quality assurance, safety, fault tolerance, reliability assessment. The course consists of general software testing principles; White-box testing based on code analysis; Black-box, specification-based testing; Testing object-oriented programs; Inspections and reviews; Safety analysis; Statistical testing and reliability analysis; Fault tolerance; Defensive programming. "
"This course identifies the importance of requirements in developing large, complex and evolving software systems. The course provides an overview of the notations, techniques, methods and tools that can be used in the requirements engineering. The course also introduces requirement engineering process in which different activities of requirement engineering can be identified and form a complete system. The course will use example from practice to the applicability of requirements engineering to everyday projects."
This course aims to provide students with tools, techniques and methods to support the development and maintenance of systems that can resist malicious attacks that are intended to damage a computer-based system or its data. It discusses security dimensions, threats, security levels, dependability, reliability measures, and attack detection and elimination. It also teaches students about security in organizations, security requirements, and secure system design.
"This course explains in details the Blockchain theory and practice. The course discusses the method software engineering behind creating a cryptographically secured, decentralized and distributed global ledger of transactions and assets. The course will review Blockchain applications in different domains and enable students to practice some of these applications. "
This course introduces cloud computing theory, practice, models and types. This course also provides in-depth details of the principles, fundamentals and practical implementation of cloud based software. It discusses moving software engineering to cloud opportunities and challenges. It teaches students how to utilize cloud computing for building software as a service products and using platform as a service.
This course covers algorithms and computational paradigms that allow computers to find patterns and regularities in databases, perform prediction and forecasting, and generally improve their performance through interaction with data. It also covers knowledge discovery process including data selection, cleaning, coding, using different statistical and machine learning techniques, and visualization of the generated structures.
This course covers the advanced topics in software engineering for mobile and smart devices. It shows the development in software engineering tools, techniques for developing mobile applications. It also shows the challenges to mobile applications software development. Practically, the course will allow students to learn about creating user interfaces accessible to differently- abled users; handling the complexity of providing applications across multiple mobile platforms; designing context-aware aware applications; and, specifying requirements uncertainty.
"The course covers different topics related to software engineering. The course consists of a series of lectures and/or practical work in an area of advanced software engineering of contemporary interest. a proposal should be submitted to the Faculty of Scientific Research and Graduate Studies by the instructor of the course for approval. It should give the details of the material to be studied and is supposed to be enough for 15 weeks. "
This course is designed to allow graduate students to practice research in software engineering. It will cover developing research problem about the latest software engineering issues, conduct a research and write a paper.
This course provides an introduction to computer vision, including fundamentals of image formation, camera imaging geometry, feature detection and matching, stereo, motion estimation and tracking, image classification, scene understanding, and deep learning with neural networks. It will develop basic methods for applications that include finding known models in images, depth recovery from stereo, camera calibration, image stabilization, automated alignment, tracking, boundary detection, and recognition. The course will also develop the intuitions and mathematics of the methods in class, and then learn about the difference between theory and practice in projects.
This course is an introduction to image processing and image analysis techniques and concepts. Areas examined include: Imaging sensors and their principles; Image representation and storage, coding and compression techniques, lossy versus lossless; Techniques for noise reduction. Image enhancement including contrast manipulation, histogram equalization, edge highlighting; Filtering and transform techniques for image processing including two dimensional Fourier transforms, wavelets and convolution; Spatial transformations and image registration. Segmentation and thresholding techniques; Applications of morphology to image processing including erosion, dilation and hit-or-miss operations for binary and grey scale images; Image feature estimation such as edges, lines, corners, texture and simple shape measures. Object classification, template matching techniques and basic image based tracking will also be examined.
"This course is designed for graduate students to give them in-depth understanding of distributed systems. Students will learn issues related to clock Synchronization and the need for global state in distributed systems. The course will cover distributed mutual exclusion and deadlock detection algorithms. It will illustrate the significance of agreement, fault tolerance and recovery protocols in Distributed Systems. The course also will cover the characteristics of peer-to-peer and distributed shared memory systems."
This course covers the technical and experiential design foundation required for the implementation of immersive environments in current and future virtual, augmented and mixed reality platforms. The curriculum covers a wide range of literature and practice starting from the original Computer Science and HCI concepts following the evolution of all supporting technologies including visual displays for VR, AR and MR, motion tracking, interactive 3D graphics, multimodal sensory integration, immersive audio, user interfaces, IoT, games and experience design.
"This course describes the principal tasks of software project managers, and basic concepts in software projects. It gives an idea about how to plan software projects, including risk and quality management. It also explains basic concepts and principles of components of software engineering, e.g., of requirements engineering, system design, software implementation, testing and maintenance, and how these components contribute to the software process The course also explains, using theory of group dynamics, how the project manager can act to influence success of the project. "