ملخص توصيف المقررات الدراسية


 ملخص توصيف المقررات

الفرقة الأولى:

CS101 . Computer Fundamentals

An introduction to concepts of programming, using the Haskell functional programming language, and to concepts of computation and specification, using finite-state machines and propositional logic. The use of sets, functions and relations to describe models of logic and computation. Programming using functions and data structures including lists and trees; case analysis, recursion and higher-order functions. Finite-state machines as a basic model of computation: deterministic and non-deterministic automata; regular expressions; acceptors; structured design of finite state machines. Propositional logic: truth tables; satisfiability; deduction. Applications from different areas will be used to illustrate and motivate the material.

The aims of this course are to:

·     Make the students understand and learn the basics of computer how to operate it, to make familiar with the part and function of computer, its types , how to use computer in our day to day life , its characteristics, its usage , Limitations and benefits etc.

·     Be able to operate a computer by knowing of all the parts and main function of computer.

 MATH 101. Introduction to Linear Algebra

An introduction to linear algebra, concluding with an introduction to abstract vector spaces. The principal topics are vectors, systems of linear equations, matrices, eigenvalues and eigenvectors and orthogonality. The important notions of linear independence, span and bases are introduced.  This course is both a preparation for the practical use of vectors, matrices and systems of equations and also lays the groundwork for a more abstract, pure-mathematical treatment of vector spaces.

The aims of this course are to:

·     learn how to use a computer to calculate the results of some simple matrix operations and to visualise vectors.

 HUM101. English  Language 

The material reflects the stylistic variety that advanced earners have to be able to deal with. The course gives practice in specific points of grammar to consolidate and extend learners existing knowledge. Analysis of syntax; comprehension; skimming and scanning exercises develop the learner’s skills, comprehension questions interpretation and implication.

The activities aim to develop listening, speaking and writing skills through a communicative, functional approach, with suggested topics for discussion and exercises in summary writing and composition.

MATH102. Statistics

Statistics is the art of using data to make numerical conjectures about problems. Descriptive statistics is the art of summarizing data. Topics include: histograms, the average, the standard deviation, the normal curve, correlation. Much statistical reasoning depends on the theory of probability.

Topics include: chance models, expected value, standard error, probability histograms, convergence to the normal curve. Statistical inference is the art of making valid generalisations from samples. Topics include: estimation, measurement error, tests of statistical significance.

This course is designed to provide students with the basic concepts of data analysis and statistical computing. Topics covered include basic descriptive measures, measures of association, probability theory, confidence intervals, and hypothesis testing. The main objective is to provide students with pragmatic tools for assessing statistical claims and conducting their own statistical analyses.

MATH103. Differential and Integral Calculus

Introduction: This course is designed to be a ?rst course in di?erential and integral calculus. Calculus is a branch of mathematics where the primary questions has to do with rates of change. It has applications in all areas of applied science and engineering. An understanding of calculus is essential for success in any of these ?elds.

By the end of the course, student should be capable of the following:

 • Being an expert in basic algebra, especially in understanding what the concept of a function, and know basic laws of exponentials and logarithms and knowing basic trigonometry

 • Understanding the de?nition of a limit, knowing how to take limits, knowing when a limit does not exist, knowing the properties and laws of limits,

 • Knowing the limit de?nition of continuity, determining whether a function is continuous, knowing the intermediate value theorem and it’s applications

 • Knowing what a tangent line is, knowing what a secant line is, being able to determine average rates of change using secant lines

 • Being able to use the limit de?nition of derivatives, Being about to determine the derivative of a function using the limit de?nition of the derivative, Being able to give the equation for the tangent line using the limit de?nition of the derivative.

Knowing and using the rules for di?erentiation (power rule, product rule, quotient rule, chain rule), knowing the derivative of trig functions and exponentials

Knowing how di?erentiate implicit functions and take higher derivatives.

Doing linear approximations using tangent lines, knowing and being able to use the mean value theorem.

 • Finding extrema of a function, sketching the graph of a function, knowing how optimize and other applications of di?erential calculus

Knowing what an anti-derivative is, knowing techniques for how to take anti-derivatives (parts, trigsubstitution, u-substitution, partial fractions)

Knowing and being able to use the Fundamental Theorem of Calculus, understanding the relationship between integration and di?erentiation and the area under the curve of a function

Knowing and being able to ?nd the exact area under the curve of a function, knowing and being able to ?nd the exact area between the curves of two functions.

 • Being able to ?nd the volume of a solid of revolution (discs and shells) and over a region of the plane

Know what a di?erential equation is, and how to solve very basics ones.

CS102. Mathematics for Computer Science

This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include formal logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability. Further selected topics may also be covered, such as recursive definition and structural induction; state machines and invariants; recurrences; generating functions.

At the end of this course, students will be able to:

·       Use logical notation to define and reason about fundamental mathematical concepts such as sets, relations, functions, and integers.

·       Evaluate elementary mathematical arguments and identify fallacious reasoning (not just fallacious conclusions).

·       Synthesize induction hypotheses and simple induction proofs.

·       Prove elementary properties of modular arithmetic and explain their applications in computer science, for example, in cryptography and hashing algorithms.

·       Apply graph-theoretic models of data structures and state machines to solve problems of connectivity and constraint satisfaction (e.g. scheduling).

·       Apply the method of invariants and well-founded ordering to prove correctness and termination of processes and state machines.

·       Derive closed-form and asymptotic expressions from series and recurrences for growth rates of processes.

·       Calculate numbers of possible outcomes of elementary combinatorial processes such as permutations and combinations.

·       Calculate probabilities and discrete distributions for simple combinatorial processes; calculate expectations.

·       Problem solve and study in a small team with fellow students.

MATH104. Theory of Knowledge

The aim of the course is to provide an introduction to philosophical issues surrounding the knowledge. We will be concerned with the nature and extent of knowledge. How must a believer be related to the world in order to know that something is the case? Can knowledge be analysed in terms of more basic notions? Must our beliefs be structured in a certain way if they are to be knowledge? In considering these questions, we will look at various sceptical arguments that suggest that the extent of knowledge is much less than we suppose. And we will look at the our various faculties of knowledge: perception, memory, introspection, and testimony.

The aims of this course are to:

·       Make connections between a critical approach to the construction of knowledge, the academic disciplines and the wider world.

·       Develop an awareness of how individuals and communities construct knowledge and how this is critically examined.

·       Develop an interest in the diversity and richness of cultural perspectives and an awareness of personal and ideological assumptions.

·       Critically reflect on their own beliefs and assumptions, leading to more thoughtful, responsible and purposeful lives.

·       Understand that knowledge brings responsibility, which leads to commitment and action.

AI101. Introduction to artificial & Knowledge representation

An intelligent agent needs to be able to solve problems in its world. The ability to create representations of the domain of interest and reason with these representations is a key to intelligence. In this course we explore a variety of representation formalisms and the associated algorithms for reasoning. We start with a simple language of propositions, and move on to first order logic, and then to representations for reasoning about action, change, situations, and about other agents in incomplete information situations.

Learning outcomes:

·       Students are expected to understand the fundamental principles of logic-based Knowledge Representation;

·       Be able to model simple application domains in a logic-based language.

·       Understand the notion of a reasoning service.

·       Master the fundamentals of the reasoning algorithms underlying current systems.

·       Understand the fundamental trade-off between representation power and computational properties of a logic-based representation language.

·       Be conversant with several widely used knowledge representation languages and understand how the theoretical material covered in the course is currently being applied in practice.

AI102. Concepts in Artificial Intelligence

This subject aims to introduce the main concepts, ideas and techniques of artificial intelligence (AI) to the students so that they could know the various aspects of AI, understand some essential principles and are able to implement some basic AI techniques in their projects or other related work.

AI103. Learning From Data

This is an introductory course in machine learning (ML) that covers the basic theory, algorithms, and applications. ML is a key technology in Big Data, and in many financial, medical, commercial, and scientific applications. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. ML has become one of the hottest fields of study today. This course balances theory and practice, and covers the mathematical as well as the heuristic aspects.

Students will be able to:

·       Identify basic theoretical principles, algorithms, and applications of Machine Learning.

·       Elaborate on the connections between theory and practice in Machine Learning.

·       Master the mathematical and heuristic aspects of Machine Learning and their applications to real world situations.

HUM102. Scientific Thinking

The course emphasizes the unifying aspects of the scientific approach to the study of the physical world. More than one-third of the course is devoted to scientific inquiry and investigation. The course focuses on the process of science and scientific thinking, fact identification and concept formation and testing. Moral and ethical issues in science are also examined.

In the remaining part of the course, the students become acquainted with some of the great ideas and discoveries of science – in particular how this universe was born, how it evolved and how eventually, in one small corner of this universe, it gave birth to us. In so doing, students will become exposed to the process of science and to how scientists apply the scientific method to answer these questions and many more.

 

 

 

 

HUM102. Human Rights and anti-Corruption

يهتم المقرر على توضيح حقوق الإنسان من الناحية القانونية والأخلاقية في المجالات الإجتماعية والإقتصادية والتعليمية والصحية وغيرها من المجالات.

بالإضافة  إلى التعرف الأسلوب القانوني الوصفي التحليلي القائم على بيان النصوص القانونية التي تناولت الفساد بأنواعه وتحليلها، ومقارنة النصوص الداخلية مع النصوص الدولية في ضوء اثر الفساد على حقوق الإنسان على ارض الواقع، من اجل التوصل الى أهم النتائج والتوصيات، لإيجاد أفضل السبل لتنظيم حماية الحق في مجتمع خال من الفساد من خلال تعريف الفساد وأسبابه، اثر الفساد على حقوق الإنسان، حماية الحق في مجتمع خال من الفساد والتزام الدولة  بذلك ، الوسائل الوقائية لمكافحة الفساد و الوسائل العقابية لمكافحة الفساد.

CS103. Logic computer Science

Logic in computer science covers the overlap between the field of logic and that of computer science. The topic can essentially be divided into three main areas: Theoretical foundations and analysis. Use of computer technology to aid logicians. 

      Logic plays an important role in many disciplines, including Philosophy and Mathematics, but it is particularly central to Computer Science and sometimes referred to as the calculus of Computer Science. This course emphasises the computational aspects of logic, including applications to databases, constraint solving, programming and automated verification, among many others. We also highlight algorithmic problems in logic, such as SAT-solving, model checking and automated theorem proving, and round up the course with some basic concepts from model theory.

The course will aim at:

Providing sound theoretical background and conceptual understanding as well as practical knowledge and skills. It will involve exercises and hands-on experience with some popular implemented tools for automated reasoning, for logic programming and for model checking. The course is intended mainly for students in computer science and in philosophy, but is also relevant to students in mathematics.

CS104. Fundamental of Computer Graphics

This course introduces an introduction to techniques for 2D and 3D computer graphics, including simple color models, homogeneous coordinates, affine transformations (scaling, rotation, translation), viewing transformation, clipping, illumination and shading, texture maps, rendering, high level shader language, video display devices, physical and logical input devices, hierarchy of graphics software, hidden surface removal methods, Z-buffer and frame buffer, color channels, and using a graphics API.

Learning outcomes

·        The fundamentals of the modern GPU programming pipeline.

·        Essential mathematics in computer graphics.

·        Color and light representation and manipulation in graphics systems.

·        Common data structures to represent and manipulate geometry.

·        Common approaches to model light and materials.

·        Basic image-processing techniques.

·        Basic shading techniques.

·        Application of mathematics to graphics systems.

·        How the human visual system plays a role in interpretation of graphics.

·        Working knowledge of GPU programming.

·        Working knowledge of a modern 3D graphics library via practical assignments.

·        Ability to produce usable graphics user-interfaces.

·        Ability to manipulate 3D objects in virtual environments.

·        Ability to write programs from a practical specification and produce realistic graphics outputs.

NANO101. The Fundamental Science of Nanotechnology

This course provides a broad overview of nanotechnology, discussing the fundamental science of nanotechnology. By the end of the course, the students will have gained knowledge in the following areas: What nanotechnology is, the size and shape dependent properties at the nanometer scale, Enhanced physical properties of nanomaterials, what nanoparticles are and how to synthesize them and Applications of nanotechnology in engineering, biomedical, energy, and environmental fields.

The overall purpose of the course is to:

·        Apply basic mathematical operations to nanoscale phenomena in order to solve practical problems.

·        Acquire a basic understanding of the principles underpinning phenomena that result from nanoscale structures.

·        Explain the collective effects that occur in nanostructures.

·        Explain the optical effects that occur with nanoparticles.

·        Highlight the major applications of nanoscale phenomena and structures.

CS105. Databases     

This course covers the fundamental concepts of database systems. Topics include data models (ER, relational, and others); query languages (relational algebra, SQL, and others); implementation techniques of database management systems (index structures, concurrency control, recovery, and query processing); management of semistructured and complex data; distributed and noSQL databases.

The purpose of this course is:

·       To provide a comprehensive introduction to the use of data management systems for applications. Some of the topics covered are the following: data models (relational and JSON), query languages (SQL, datalog, etc.), transactions, parallel data processing, and database as a service.

 

الفرقة الثانية:

AI201. Introduction to Machine Learning

The primary aim of the course is to provide the student with a set of practical tools that can be applied to solve real-world problems in machine learning, coupled with an appropriate, principled approach to formulating a solution.

Machine learning is the study of computer algorithms and models that learn automatically from data. It is a key area of artificial intelligence and has applications in many domains, including biology, social science, statistics, and image processing. This introductory course covers key topics in machine learning, including linear models for regression and classification, decision trees, support vector machines and kernel methods, neural networks and deep learning, ensemble methods, unsupervised learning and dimension reduction.

Students should:

·       Have an understanding of major supervised, unsupervised and reinforcement learning techniques.

·       Have a basic understanding of evaluation methodologies.

·       Have a working knowledge of how to apply machine learning technologies to real-world datasets.

·       Have gained experience designing and applying machine learning techniques in team settings.

AI202. Introduction to Vision and Robotics

Robotics and Vision apply AI techniques to the problem of making devices capable of interacting with the physical world. This includes moving around in the world (mobile robotics), moving things in the world (manipulation robotics), acquiring information by direct sensing of the world (e.g. machine vision) and, importantly, closing the loop by using sensing to control movement. This module introduces the basic concepts and methods in these areas and serves as an introduction to the more advanced robotics and vision modules.

MATH105. Introduction to Algorithms and Data Structures

This course introduces the basics of algorithms and data structures with examples in C++. This course focuses on what the working programmer should know about algorithms and data structures without getting bogged down in mathematical formalism.

At the end of the course, the student should:

·       Be able to assess the performance of a given algorithm.

·       Be able to design algorithms to solve "simple" problems using strategies like divide and conquer, dynamic programming or greedy approach.

·       Master the use and implementation of basic data structures like linked lists, stacks, queues, trees, etc.

·       Master the basic graph algorithms like BFS, DFS, connected components, shortest path, etc.

 

 

 

 

AI203. Introduction to Natural Language Processing

This course provides an introduction to the field of computational linguistics, also called natural language processing (NLP) - the creation of computer programs that can understand and generate natural languages (such as English). We will use natural language understanding as a vehicle to introduce the three major subfields of NLP: syntax (which concerns itself with determining the structure of an utterance), semantics (which concerns itself with determining the explicit truth-functional meaning of a single utterance), and pragmatics (which concerns itself with deriving the context-dependent meaning of an utterance when it is used in a specific discourse context). The course will introduce both linguistic (knowledge-based) and statistical approaches to NLP, illustrate the use of NLP techniques and tools in a variety of application areas, and provide insight into many open research problems.

By the end of this course, student will:

·       Have an understanding of how to use the Natural Language Tool Kit.

·       Be able to load and manipulate your own text data.

·       Know how to formulate solutions to text based problems.

·       Know when it is appropriate to apply solutions such as sentiment analysis and classification techniques.

HUM201.  Cognitive Psychology

What is this course that you are embarking upon? What is cognition?  In the most basic terms cognition is the action of the brain or mind to understand the world around us and to determine an appropriate action.  To unpack that barebones definition, there are many activities that are required.  For example, you need to perceive the world around you, remember past events to compare present events to, select the important parts of the world to attend to, store what has been learned from the current experience for later use, understand and transmit language, etc.

        The primary goal for this course is to develop your ability to think soundly and well using the material of cognitive psychology.  As part of this goal you will need to comprehend the substance and methods of cognitive psychology. In the context of this major, this course is an upper level lab based course.  As such the department has specified some goals for you.  First, the department wants to develop a more independent level of thinking as you progress through the major.  Thus, there will be less structure to the course and you will be given some responsibility for assignments.  As part of this goal, you will also be asked to develop your own cognitive theory.  Second, the department wants to have you prepared more for an independent research project which forms the senior capstone experience.  Thus, you will be asked to design and implement a small research project to present at the end of the semester.

AI204. Introduction to Programming with Python

Python is a language with a simple syntax, and a powerful set of libraries. It is an interpreted language, with a rich programming environment, including a robust debugger and profiler. While it is easy for beginners to learn, it is widely used in many scientific areas for data exploration. This course is an introduction to the Python programming language for students without prior programming experience. We cover data types, control flow, object-oriented programming, and graphical user interface-driven applications. The examples and problems used in this course are drawn from diverse areas such as text processing, simple graphics creation and image manipulation, HTML and web programming, and genomics.

The lessons in this course include the following topics.

  • Lesson 1: Introduction
  • Lesson 2: gitHub, Functions, Booleans and Modules
  • Lesson 3: Sequences, Iteration and String Formatting
  • Lesson 4: Dictionaries, Sets, and Files
  • Lesson 5: Exceptions, Testing, Comprehensions
  • Lesson 6: Advanced Argument Passing, Lambda -- functions as objects
  • Lesson 7: Object Oriented Programming
  • Lesson 8: More OO -- Properties, Special methods
  • Lesson 9: Iterators, Iterables, and Generators
  • Lesson 10: Decorators, Context Managers, Regular Expressions, and Wrap Up

Course Objectives:

Upon successfully completing this course, students will be able to “do something useful with Python”.

  • Identify/characterize/define a problem
  • Design a program to solve the problem
  • Create executable code
  • Read most Python code
  • Write basic unit tests

CS202. Computer Security

This course covers fundamental issues and first principles of security and information assurance. The course will look at the security policies, models and mechanisms related to confidentiality, integrity, authentication, identification, and availability issues related to information and information systems. Other topics covered include basics of cryptography (e.g., digital signatures) and network security (e.g., intrusion detection and prevention), risk management, security assurance and secure design principles, as well as e-commerce security. Issues such as organizational security policy, legal and ethical issues in security, standards and methodologies for security evaluation and certification will also be covered

CS203. Computer Communications and Networks

This is a comprehensive first course in Computer Communications and Networks, focusing on fundamental concepts, principles and techniques.

The course will introduce basic networking concepts, including: protocol, network architecture, reference models, layering, service, interface, multiplexing, switching and standards. An overview of digital communication from the perspective of computer networking will also be provided. Topics covered in this course include: Internet (TCP/IP) architecture and protocols, network applications, congestion/flow/error control, routing and internetworking, data link protocols, error detection and correction, channel allocation and multiple access protocols, communication media and selected topics in wireless and data center networks.

It will cover recent advances in network control and management architectures by introducing the concepts of software-defined networking (SDN) and network (function) virtualisation. Students taking this course will gain hands-on experience in network programming using the socket API; network traffic/protocol analysis; and on assessment of alternative networked systems and architectures.

Learning outcomes:

·         Understanding of the most important principles of how computer communication works.

·         Understanding of protocols and ability to see it in an overall context of communication.

·         Knowledge of simple network programming (sockets) and higher abstractions (Web services).

·         Be able to explain the most important standards in the field of computer communication.

·         Assess different solutions for computer networks.

·         Be able to implement a simple object oriented distributed system.

·         Explain the key security issues of computer communication.

·         Give an oral presentation of problems and technical solutions in the field.

·         Explain the historical development of the field of computer communication.

CS204. Information Retrieval and Web Search

This course covers basic and advanced algorithms and techniques for Web search engines as well as text-based information retrieval in general.

After this course, you will be able to develop your own web search engine or customize existing retrieval frameworks such as Apache Lucene. The course focuses on index building, query processing, and document ranking. We will further touch on text-based machine learning methods, such as classification and clustering, as well as crawling and link-based algorithms such as Google’s Page Rank.

The course will cover several algorithms and data structures with application to web search. Both theoretical analyses of run-time performance as well as hands-on programming assignments and a class project are part of the course.

Information retrieval methods are an essential component in any text-based data analytics system, ranging from text mining and machine learning, to natural language processing and knowledge management applications.

CS205. Problem Solving and Programming in C

This course is aimed at enabling the students to:

This class will cover computational problem-solving techniques. Part of the course will involve going through Programming Pearls by Jon Bentley, a classic and one of the best "problem solving with programming" books ever written. The rest of the course will revolve around solving programming problems similar to the challenges found in programming contests, identifying common structure and problem solving techniques. The problems that we consider will have two characteristics: They are hard to solve (if not impossible) without writing a program, and a programming solution exists that is relatively succinct (typically under 100 lines). This is not about system building or writing production software -- it's about solving an immediate problem that you need an answer to.

Student Learning Outcomes: Upon successful completion of this course, students will have demonstrated an ability to

·     write programs to solve advanced computational problems;

·     analyze several alternative solutions to determine the best approach;

·     justify that a program correctly solves a given problem.

 

AI205. Fundamental of Computational Intelligence

The course objectives are to make the students familiar with basic principles of various computational methods of data processing that can commonly be called computational intelligence (CI). This includes mainly bottom-up approaches to solutions of (hard) problems based on various heuristics (soft computing), rather than exact approaches of traditional artificial intelligence based on logic (hard computing). Examples of CI are nature-inspired methods (artificial neural networks, evolutionary algorithms, fuzzy systems), as well as probabilistic methods and reinforcement learning. After the course the students will be able to conceptually understand the important terms and algorithms of CI, and choose appropriate method(s) for a given task. The theoretical lectures are combined with the seminar where the important concepts will be discussed and practical examples will be shown.

CS206.   Object Oriented Programming

This course introduces the concepts of object-oriented programming to students with a background in the procedural paradigm. The course begins with a brief review of control structures and data types with emphasis on structured data types and array processing. It then moves on to introduce the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design. Other topics include an overview of programming language principles, simple analysis of algorithms, basic searching and sorting techniques, event-driven programming, memory management and an introduction to software engineering issues.

At the end of the course, the student should know:

  • How to abstract a problem in an object oriented style.
  • Object oriented programming, basics to advanced level, using C++.
  • How to use the Standard Template Library (STL).

HUM202.       Human Memory

Without memory, people would barely be able to function: we could not be able to communication because we would not be able to remember meanings or words, nor what anyone said to us; we could have no friends because everyone would be a stranger (no memory of meeting anyone); we could have no sense of self because we could not remember anything about ourselves either; we could not predict anything about the future because we would have no recollections of the past; we would not know how to get around, because we would have no knowledge of the environment. This course will discuss issues related to memory at all levels: the sensory registers, i.e., how we perceive things; working or short-term memory; long-term memory or our knowledge base. We will discuss the differences between procedural/skill knowledge, and declarative/fact knowledge. The topics of memory monitoring, feeling and knowing, spread of activation within memory (priming), implicit memory, and amnesia will also be covered.

Objectives:

·       Understanding of the current theories of the organization of human memory and how this organization relates to physiological functioning of the brain.

·       Knowledge of methodological techniques used in the study of human memory.

·       Application of basic principles of psychology to the study of specific topics in memory research.

·       Understanding of how principles of memory theories apply to other areas such as education, neuroscience, human development, and cognitive science.

·       Writing skills through short-answer exam questions that require integration of knowledge of memory and psychology, experiment reports written in APA style, and article focus questions.

AI206. Advanced artificial & Knowledge representation

An intelligent agent needs to be able to solve problems in its world. The ability to create representations of the domain of interest and reason with these representations is a key to intelligence. In this course we explore a variety of representation formalisms and the associated algorithms for reasoning. We start with a simple language of propositions, and move on to first order logic, and then to representations for reasoning about action, change, situations, and about other agents in incomplete information situations. This course is a companion to the course “Artificial Intelligence: Search Methods for Problem Solving” that was offered recently and the lectures for which are available online.

AI207. Introduction to Multi Agent Systems Design

This course provides the basic theoretical knowledge about intelligent agents and multi-agent systems. The first part of the course covers the different types of agents, their properties and architectures. The second part includes a thorough description of several coordination methods in multi-agent systems. The course also includes a practical component on the lab, in which students have to work in teams to develop a multi-agent system.

Objectives:

  • Understand the origins and foundations of distributed computing on the Internet.
  • Knowing the possible applications of artificial intelligence for distributed systems on the Internet.
  • Understanding the basics of Agent Orientation .
  • To analyze a problem distributed in nature to identify the different actors and their functionalities.
  • Designing distributed systems using an agent-oriented methodology.
  • Extract and represent knowledge about the context necessary to build a distributed application on the Internet that is flexible and robust.
  • Designing context ontologies by applying a methodology properly.

NANO201. Introduction to Nanoscale Engineering Design and Manufacturing

Offers an introduction to basic principles, concepts, and knowledge of nanoscale engineering (design and manufacturing) to undergraduate students at CNSE. The primary focus is on state-of-the-art semiconductor based chip design and technology. It includes emerging nanoscale processing-enabled “future generation manufacturing”. Lecture topics include design fundamentals, nanoscale functional components, design-for-manufacturing, nanoelectronics, and selected examples of real-world applications.

Student should learn:

  • Current and future Micro/Nano systems technologies
  • Design, fabrication and testing methods of various Micro/Nano systems, such as electrical, mechanical and fluidic
  • Fundamental principles for design and analysis of microscales sensors, actuators, circuits and fluidics, including scaling laws, new technologies and fabrication processes

CS208. Bioinformatics

Introduces bioinformatics concepts and practice. Topics include: biological databases, sequence alignment, gene and protein structure prediction, molecular phylogenetics, genomics and proteomics. Students will gain practical experience with bioinformatics tools and develop basic skills in the collection and presentation of bioinformatics data, as well as the rudiments of programming in a scripting language.

Course Goal:

This course is designed to introduce future biologists and physicians to bioinformatics tools and analysis methods. Upon completion of the course, students should be more comfortable working with the vast amounts of biomedical and genomic data and online tools that will be relevant to their work in the coming decades.

CS209. Advanced Computer Graphics

This module is an introduction to the techniques used in modern 3D computer graphics. It deals with fundamental techniques that are the basis of work in a range of industries, e.g. entertainment and computer-aided design. Both basic and advanced topics concerned with the production of images of 3D objects are covered, including: 3D representations and manipulations in graphics, light reflection models, realism techniques such as shadows and textures, ray tracing and 3D animation. Students should be aware that there are limited places available on this course.

Learning Outcomes:

  • Understand, implement and analyze real-time rendering algorithms
  • Apply advanced illumination models to three dimensional scenes
  • Design and implement skeletal animation methods for character animation
  • Design animation sequences using quaternion transformations
  • Develop shader programs for advanced graphics applications
  • Explain the computational steps in the OpenGL-4 pipeline

 

الفرقة الثالثة:

AI301. Computational Vision

This course introduces the main aspects of computational vision, from fundamentals on image formation and basic image operations until object recognition, going through the main problems of computer vision: segmentation, key point extraction, pattern recognition and face recognition. The classical and the latest state-of-the-art methods will be revised for the computer vision problems and methods will be used to solve some of these problems.

 A1302. Fundamental of Deep Learning for Computer Vision   

Deep Learning is one of the most highly sought after skills in AI. In this course, you will learn the foundations of Deep Learning for computer vision, understand how to build neural networks, and learn how to lead successful machine learning projects.

You will learn about Convolutional networks, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization, and more.

AI303. Advanced Machine Learning

This is an advanced course on machine learning, focusing on recent advances in deep learning with neural networks, such as recurrent and Bayesian neural networks. The course will concentrate especially on natural language processing (NLP) and computer vision applications. Recent statistical techniques based on neural networks have achieved a remarkable progress in these fields, leading to a great deal of commercial and academic interest. The course will introduce the mathematical definitions of the relevant machine learning models and derive their associated optimisation algorithms. It will cover a range of applications of neural networks in natural language processing, including analyzing latent dimensions in text, translating between languages, and answering questions.

Learning outcomes:

After studying this course, students will:

·        Understand the definition of a range of neural network models. 

·        Be able to derive and implement optimisation algorithms for these models. 

·        Understand neural implementations of attention mechanisms and sequence embedding models and how these modular components can be combined to build state-­of-­the-­art NLP systems. 

·        Be able to implement and evaluate common neural network models for language. 

·        Have a good understanding of the two numerical approaches to learning (optimization and integration) and how they relate to the Bayesian approach. 

·        Have an understanding of how to choose a model to describe a particular type of data. 

·        Know how to evaluate a learned model in practice. 

·        Understand the mathematics necessary for constructing novel machine learning solutions. 

·        Be able to design and implement various machine-learning algorithms in a range of real-world applications.

 

AI304. Advanced Computational Intelligence

Computational Intelligence covers a wide range of issues that developed in parallel with, or in competition to, symbolic AI. The major constituents of the field are bio-inspired computing – which deals with an ever expanding number of biologically related techniques – and fuzzy logic – which deals with reasoning under conditions of vagueness.

In this course we will explore a number of topics that are core to Computational Intelligence (e.g. neural nets and evolutionary computing) and these will lead into some state-of-the-art approaches (such as fuzzy model-based reasoning and learning).

Objectives:

1.     To understand the fuzzy inductive reasoning methodology for modelling systems and predicting their behavior.

2.     To apply the fuzzy inductive reasoning methodology to the simulation of environmental, biomedical, industrial or economical processes.

3.     To understand the different ways of designing computational intelligence hybrid techniques by integrating fuzzy logic, neural networks and evolutionary algorithms.

4.     To apply computational intelligence hybrid techniques to solve complex data mining problems in real scenarios.

5.     To understand some of the most advanced and recent techniques in the field of neural networks (e.g. recurrent neural nets, extreme learning machines, deep neural nets).

6.     To apply neural network advanced techniques to solve complex data mining problems in real scenarios.

 AI305. Software Development for Mobile Devices

This module aims to provide a thorough grounding in the principles of software development for mobile devices. The Android platform will be used as an example, although the modules emphasises general principles that are common across all mobile platforms. An important aim of the module is to demonstrate the real-world application of object-oriented programming principles and design patterns in software for mobile devices. Students undertake a substantial software implementation project, working in pairs. The module will be taught primarily using Java and Swift languages.

Student should learn to:

·       Explain the key differences between development of systems to run on mobile devices and on typical personal computing or internet-based environments, and apply this knowledge in the design of mobile device software.

·       Design effective applications for a mobile device by taking into consideration the underlying hardware-imposed restrictions such as screen size, memory size and processor capability.

·       Build, test and debug graphical applications for mobile devices by using the standard libraries that are bundled as part of the developers’ toolkit for the mobile device.

·       Independently research topics in mobile application architecture and/or security and/or performance.

 

 

 

AI306.  Advanced Natural Language Processing

Natural language processing (NLP) is one of the most important technologies of the information age, and a crucial part of artificial intelligence. Applications of NLP are everywhere because people communicate almost everything in language: web search, advertising, emails, customer service, language translation, medical reports, etc. In recent years, Deep Learning approaches have obtained very high performance across many different NLP tasks, using single end-to-end neural models that do not require traditional, task-specific feature engineering. In this course, students will gain a thorough introduction to cutting-edge research in Deep Learning for NLP. Through lectures, assignments and a final project, students will learn the necessary skills to design, implement, and understand their own neural network models.

Learning Outcomes:

  • Apply deep learning models to solve machine translation and conversation problems.
  • Apply deep structured semantic models on information retrieval and natural language applications.
  • Apply deep reinforcement learning models on natural language applications.
  • Apply deep learning models on image captioning and visual question answering.

AI307. Advanced Vision and Robotics

Programming a robot to see requires understanding the principles of vision, and having mathematical knowledge and programming skills. We start by considering the question, ‘What is vision?’ You’ll learn about human vision and aspects of sight, including light, reflection, perspective and how cameras work. Robot vision relies on these same principles but uses cameras and computers instead of eyes and a brain.

     This course aims to build on the introductory computer vision material taught in Introduction to Vision and Robotics. The main aim is to give students an understanding of main concepts in visual processing by constructing several vision systems during the course of the lecture series and practicals.

NANO301. Introduction to Nanoelectronis

Introduces students to nanoscale electronic devices. Includes basic, band theory-derived operation of semiconductor devices including p-n junctions (diodes) and transistors (bi-polar and classic field-effect devices). Classic, solid-state analysis of energy bands, electrostatic band-bending, diffusion current, drift current, carrier generation, and carrier recombination in both equilibrium and field-biased conditions. This analysis is combined with the introduction/review of quantum statistics for holes and electrons. Specific applications are treated with respect to metal-semiconductor contacts and selected semi-metal (carbon) systems. Students will be introduced to device-level testing through the use of advanced wafer level probes in the CNSE 300mm full flow process facility.

Learning Objectives:

  • Application of quantum mechanics in nanoelectronics
  • Introduction of Solid-state physics from bulk materials to nano-materials
  • Electronic bands, density of states and dispersion relations at difference dimensions (0-D, 1-D, 2-D and 3-D)
  • Current-voltage relations and quantum conductance
  • Theoretical limits for field effect transistors
  • Applications of nano-electronics beyond computing

AI308. Fundamental of Cognitive Interaction with Robots

This course is an emerging field that combines cognitive science, computer science, neuroscience, and robotics. These robots provide a tool for studying cognitive function by embedding brain models on robotic platforms. Because embodied models capture the complete system (i.e. the interaction between brain, body, and environment), cognitive robotic experiments can increase our understanding of how the brain gives rise to complex behavior.

In this course, students learned concepts of embodiment, robot construction, and computer programming. In the lecture portion of the course, we discussed case studies of cognitive robotics. In the lab portion of the course, students constructed robots, using the LEGO Mindstorms NXT kit, and program these robots to perform different behaviors.

AI309. Advanced Design for Artificial Intelligence

Students will learn how to create digital product experiences powered by AI and big data that deliver high levels of cognitive experiences to users.

A mix of lecture, reading, writing and design thinking specific to AI. Students will form teams of five to build a concept for an AI product for the duration of the course, preparing for two final presentations. This class is not a series of sprints. It’s working on one idea for 15 weeks individually and with a team.

AI310. Big Data Analysis

This course provides a basic introduction to big data and corresponding quantitative research methods.

The objective of the course is: to familiarize students with big data analysis as a tool for addressing substantive research questions.

The course begins with a basic introduction to big data and discusses what the analysis of these data entails, as well as associated technical, conceptual and ethical challenges. Strength and limitations of big data research are discussed in depth using real-world examples. This includes practical exercises to familiarize students with the format of big data. It also provides a first hands-on experience in handling and analyzing large, complex data structures.

AI311. AI for Leaders

Research from the World Economic Forum (WEF) and Mckinsey shows that AI will increasingly disrupt what we do, who does it and how all work is done – e.g. humans versus machines. On the positive side, AI is expected to add significant growth and value to the world’s economy for the companies and countries that get it.  As such, it is more important than ever that all leaders, managers, executives and board members develop their AI skills to compete and prosper in the AI world.

However, most leaders, executives and board members lack the necessary AI education, skills, strategies and tactics to create AI-powered business models with platform and network effects. Further, they don’t understand how AI will impact their customers, employees, investors, operations and product/service offerings. 

Learning Outcomes:

·        How platform business models and AI technologies complement each other.

·        The characteristics of leaders that embrace AI powered platform business models.

·        Where to look for data and what data is valuable to your business and AI.

·        How your organization and team can catch-up with today’s leaders.

·        The economics of these new technologies and business models.

AI312. Cloud Computing Concepts

Cloud computing systems today, whether open-source or used inside companies, are built using a common set of core techniques, algorithms, and design philosophies – all centered around distributed systems. Learn about such fundamental distributed computing "concepts" for cloud computing. Some of these concepts include: clouds, MapReduce, key-value/NoSQL stores, classical distributed algorithms, widely-used distributed algorithms, scalability, trending areas, etc. This course builds on the material covered in the Cloud Computing Concepts.

Course Orientation and Classical Distributed Algorithms Continued:

To coordinate machines in a distributed system, this module first looks at classical algorithms for electing a leader, including the Ring algorithm and Bully algorithm. We also cover how Google’s Chubby and Apache Zookeeper solve leader election. This module covers solutions to the problem of mutual exclusion, which is important for correctness in distributed systems with shared resources. We cover classical algorithms, including Ricart-Agrawala’s algorithm and Maekawa’s algorithm. We also cover Google’s Chubby support for mutual exclusion.

Concurrency and Replication Control:

Transactions are an important component of many cloud systems today. This module presents building blocks to ensure transactions work as intended, from Remote Procedure Calls (RPCs), to serial equivalence for transactions, to optimistic and pessimistic approaches to concurrency control, to deadlock avoidance/prevention. This module covers how replication – maintaining copies of the same data at different locations – is used to provide many nines of availability in distributed systems, as well as different techniques for replication and for ensuring transactions commit correctly in spite of replication.

 AI313. Introduction to Artificial Intelligence in Games

AI can intersect with games. This course explores a vastly broadened perspective on the use of AI in games and playable media: AI as adversary, actor, design assistant, designer, quality assurance tester, data analyst, player, tutor, etc. Combining elements from academic AI and machine learning with industry Game AI techniques, students will develop systems that control non-player characters (NPCs), assist designers in analyzing existing level designs and synthesizing new ones, and statistically model player behavior in a visually comprehensible way.

Class time will alternate between lecture and paper discussions while out-of-class time is split between reading and relevant AI programming exercises. During the last portion of the course, students will work in small teams to develop technical projects that either advance research or contribute to portfolios.

AI314. Data Integration and Exchange

This course introduces the basic concepts of data integration, data warehousing, and provenance.

Students will learn how to resolve structural heterogeneity through schema matching and mapping. The course introduces techniques for querying several heterogeneous data sources at once (data integration) and translating data between databases with different data representations (data exchange).

AI315. Advanced Topics in Artificial Intelligence for Intelligent Systems

The course goes in depth on selected topics and methods within artificial intelligence (AI), machine learning (ML) and their applications. Examples include computational intelligence algorithms in search, optimization and classification, which to a large extent consist of bio-inspired mechanisms. Examples of relevant applications include robotics, music, health and medicine. The course syllabus will continuously be updated with methods from state-of-the-art research. The content is based on presentations from Faculty staff, the participants and invited guests, and will vary depending on who is involved.

Learning outcome:

After taking the course, you will:

·        Have insight into the new and promising methods (within evolutionary computation, neural networks, swarm intelligence) used in artificial intelligence (AI) and machine learning (ML).

·        Have knowledge about how to apply AI methods to different kinds of applications.

·        Be able to search for literature outlining state-of-the-art within a specific research field.

·        Be able to critically assess scientific papers and be familiar with the structure of a scientific paper.

·        Be able to design and conduct experiments using AI methods, with emphasis on evaluation.

·        Have experience in presenting scientific work for others.

 

الفرقة الرابعة:

AI401.  Internet of Things

The Internet of Things, commonly referred to as IoT, is the network of physical objects, devices, vehicles, buildings, and other items that’s been integrated into the technology of modern electronics, software, sensors, and other “things” with network connectivity that enables them to collect and exchange data. Once collected, this data becomes a powerful resource, which companies and technologies are tapping into, in revolutionary ways.

This Course will teach students fundamentals concepts of Internet of Things (IoT) systems, wireless communication paradigms employed in IoT, security and privacy issues, and cloud integration. The course will cover IoT systems architecture, hardware platforms, relevant wireless technologies and networking protocols, security and privacy concepts, device programming and debugging, cloud integration, simple data analytics, and ommercialization challenges. The students should expect to be able to apply the taught concepts in the development of an IoT prototype.

Learning Outcomes:

•  Gain expert-level knowledge of IoT technology and tools

•  Build a sound understanding of core concepts, background technologies, and the different features of the IoT landscape

AI402.  Data Mining and Big Data analysis 

Data mining and big data analytics is the process of examining data to uncover hidden patterns, unknown correlations and other useful information that can be used to make better decisions. This course is an introduction to concepts of data mining, machine learning and big data analytics. We will cover the key data mining methods of clustering, classification and pattern mining are illustrated, together with practical tools for their execution. We will show applications of these tools to a number of datasets, showing how theory and digital traces of human activities at societal scale can help us understand and forecast many complex socio-economic phenomena. The course will have a practical approach, with homeworks, hands-on classes and with the development of a project.

Students are free to work in any computer language/network software they feel most comfortable. However, during the class all examples and sample code will be provided in Python and Jupyter notebooks, and use of Python is strongly encouraged.

Lectures: theory classes and hands-on sessions. Use of a computer will be required during some lectures. Students can use their own laptops. Instructions on the required software will be provided during the first class.

 Topics and tentative calendar:

- Class 1: Test to check the prerequisites for the course. Introduction to the course.  Introduction to data mining and knowledge discovering process. Examples of application domains. Data types and formats.

-  Class 2: Types of learning (e.g., supervised, unsupervised, semi-supervised, reinforcement learning). Data mining tasks (e.g., classification, regression, probability estimation, clustering). Exploratory data analysis and data understanding. Explanation vs. prediction.

- Class 3: Basic machine learning models: K-Nearest Neighbors. Decision Trees. Naïve Bayes classifiers.

- Class 4: Generalization, overfitting and underfitting. Cross-validation. Model evaluation and comparison (e.g., metrics for classification, metrics for regression, confusion matrix, precision-recall curves, ROC curves).

- Class 5: Hands-on session: application of concepts on data and real-world situations.

- Class 6: Alternative machine learning models: Support Vector Machines, Linear Discriminant Analysis, Ensemble methods.

- Class 7: Preprocessing and feature engineering (e.g., imputation, scaling, dealing with categorical variables). Features selection. Dimensionality reduction. Learning from imbalanced data.

- Class 8: Clustering. Taxonomy of clustering concepts: distance-based (separation, centroids, contiguity), density-based, partitional vs. hierarchical. Methods for centroid-based clustering (k-means), hierarchical clustering (single, complete and average linkage), density-based clustering (DBSCAN).

- Class 9: Introduction to frequent itemset mining. Applications for finding association rules. Level-wise algorithms, apriori. Introduction to recommender systems.

- Class 10: Final project presentation.

Learning Outcomes: 

The aim of the course is to provide a basic but comprehensive introduction to data mining. By the end of the course students will be able to:

·     Choose the right algorithms for data science problems.

·     Demonstrate knowledge of statistical data analysis techniques used in decision making.

·     Apply principles of Data Science to the analysis of large-scale problems.

·     Implement and use data mining software to solve real-world problems.

AI403. Intelligent Decision Support Systems

The issues of the course are to provide students with the basic and necessary knowledge, in order that after finishing the course, they could identify when a given domain is really a complex one, and how many and of which nature are the decisions involved in the management of the given domain. Also, a main goal is to know how to analyze, to design, to implement and to validate an Intelligent Decision Support Systems (IDSS), for this kind of domains. Particularly, the integration of Artificial Intelligence models and Statistical models, and the knowledge discovery from data step, will be emphasized.

AI404. Artificial Vision and Pattern Recognition

Low-level and high-level vision including edge detection, connected component labeling, boundary detection, segmentation, stereopsis, motion analysis, and object recognition. Knowledge representation, knowledge retrieval and reasoning techniques in artificial vision. Parallel computing, parallel architectures and neural computing for computer vision.

AI405. Intelligent System Project 1

The System Design Project is intended to give students practical experience of (a) building a large scale system (b) working as members of a team. The project involves applying and combining material from several courses to complete a complex design and implementation task.

At the end of course each group demonstrates its implemented system and gives a formal presentation to an audience of the students, supervisors, and visitors from industry

 AI406. Advanced Cognitive Interaction with Robots

The basic objective of this course is to provide students a broad understanding of the state of the art in the fundamental concepts of Cognitive Robotics: Human-Robot Interaction (HRI), control and computational learning in complex, dynamic and uncertain systems, integration of different processes of perception and interaction with people.

AI407. Quantitative Reasoning & Statistical Methods for Planners

Planners use numbers, and planners use reasoning. The overarching goal of this class is to make sure that each and every student is comfortable and skilled at using quantitative information and sound reasoning to address the problems and questions they encounter in planning, design, and policy-making contexts. As with your other classes, students are expected to approach this course with the characteristic blend of ambition and skepticism that defines the Department of Urban Studies and Planning approach to planning: that is, we expect you to be energetic and creative in your application of the skills you will learn in quantitative reasoning, statistical methods, and the presentation and visualization of complex information, but also to be critical of these methods where appropriate, questioning whether the Modern Age’s confidence in statistics—the prevailing faith in “hard numbers,” “scientific accuracy,” and “dispassionate logic”—may at times be overstated or unjustified.

AI408.  The Computing Technology Inside Your Smartphone

We use our smartphones to communicate, to organize our lives, to find information, and to entertain ourselves. All of this is possible because a smartphone contains a powerful computer processor, which is the subject of this course. This computer science course starts by moving step-by-step through the fundamental layers of computing technology, from binary numbers to application software, and then covers advanced performance techniques and the details of actual smartphone processors.

Students should learn about:

·        Digital logic

·        Computer organization

·        Instruction sets

·        Application Software

·        Advanced performance techniques

·        Actual smartphone processors

This Course also provides students with the technical knowledge and the Jade design tool experience to succeed in the more advanced MITx 6.004 MOOC – Computation Structures course sequence.

AI409. Reasoning and agents

This course focuses on approaches relating to representation, reasoning and planning for solving real world inference. The course illustrates the importance of:

·     Using a smart representation of knowledge such that it is conducive to efficient reasoning.

·     The need for exploiting task constraints for intelligent search and planning.

·     The notion of representing action, space and time is formalized in the context of agents capable of sensing the environment and taking actions that affect the current state. There is also a strong emphasis on the ability to deal with uncertain data in real world scenarios and hence, the planning and reasoning methods are extended to include inference in probabilistic domains.

AI410. Intelligent System Project2

The System Design Project is intended to give students practical experience of (a) building a large scale system (b) working as members of a team. The project involves applying and combining material from several courses to complete a complex design and implementation task. At the end of course each group demonstrates its implemented system and gives a formal presentation to an audience of the students, supervisors, and visitors from industry.

AI411. Professional Practice in Artificial Systems

This course examines practice management and project management in the built environment professions, particularly architecture and landscape architecture. Topics in practice management include: ethical practice; the character and operation of practices; legal requirements; cash flow and profitability; running a business; professional memberships and registration; risk and professional liability; and personal career planning. Topics in project management include: project stages; procurement and feasibility; statutory requirements; management of time, cost and quality; and contracts and contract administration in private and public realms. Alternative and innovative pathways through the profession are also considered.

NANO401. Nanotechnology and Artificial Intelligence

In this course we review some of these efforts in the context of interpreting scanning probe microscopy, the study of biological nanosystems, the classification of material properties at the nanoscale, theoretical approaches and simulations in nanoscience, and generally in the design of nanodevices. Current trends and future perspectives in the development of nanocomputing hardware that can boost artificial-intelligence-based applications are also discussed. Convergence between artificial intelligence and nanotechnology can shape the path for many technological developments in the field of information sciences that will rely on new computer architectures and data representations, hybrid technologies that use biological entities and nanotechnological devices, bioengineering, neuroscience and a large variety of related disciplines.

AI412. Deep learning for Self  Driving Cars

This course takes the approach of using one major real-world aspect of AI as a jumping-off point to explore the specific technologies involved.

The self-driving cars which are widely expected to become a part of our everyday lives rely on AI to make sense of all of the data hitting the vehicle’s array of sensors and safely navigate the roads. This involves teaching machines to interpret data from those sensors just as our own brains interpret signals from our eyes, ears and touch.

It covers the use of the MIT Deep Traffic simulator, which challenges students to teach a simulated car to drive as fast as possible along a busy road without colliding with other road users.

This course will show you how to:

·     Use Computer Vision techniques via Open CV to identify lane lines for a self-driving car.

·     Learn to train a Perceptron-based Neural Network to classify between binary classes.

·     Learn to train Convolutional Neural Networks to identify between various traffic signs.

·     Train Deep Neural Networks to fit complex datasets.

·     Master Keras, a power Neural Network library written in Python.

·     Build and train a fully functional self driving car to drive on its own.

AI413. Genetic Algorithms & Neural Networks

Course contents:

Artificial neural networks. Definition. Types of networks. Perceptron, Hopfield's model, Kohonen's model. Learning. Back error propagation.
• Multilayer network with the feed-forward propagation.
• Algorithms, network optimization, convergence.
• Classification and approximation using the neural networks, solution of selected problems using the neural networks.
• Genetic algorithms. Definition, basic operations, classification of algorithms, used strategies. Binary representation, Hamming's barrier. Parallelism. Convergence.
• Areas of application. Use in optimization and control.

Learning outcomes of the course unit:

To acquire deep knowledge in the area of artificial neural networks and genetic algorithms. To meet the theoretical principles of their functioning. To know how to define problems in the area of optimization and control of systems to be able to deploy any of these methods and to know how to solve the problem.

AI414. Fundamentals of Artificial Intelligence in Smart Cities

The purpose of this course is to:

·     Provide a deep understanding of the digital technologies, infrastructure, and social political forces shaping the future of our urban environments.

·     It considers how the latest methods in urban analysis and governance can lead to sustainable and high performing cities.

We begin by defining Smart Cites through lectures and case studies and drill down into the technologies shaping new and existing cities. Topics range from the beginnings of cartography to autonomous vehicles and micro grids. This course is for anyone interacting with urban environments or those fascinated by the technology that is essential to the growing population of urban inhabitants.

 AI415. Software Testing

This module is intended to provide in-depth coverage of software testing further to develop the introductory material covered in Informatics 2C – Software Engineering.

The goal of the course is:

·       To provide students with the skill to select and apply a testing strategy and testing techniques that are appropriate to a particular software system or component.

·        In addition the student will become a capable user of test tools; will be able to assess the effectiveness of their testing activity; and will be able provide evidence to justify their evaluation.

The course will be supported by two practical exercises involving the development of appropriate tests and the application of a range of testing tools.