10672101 Discrete Mathematics
The purpose of this course is to understand and use discrete structures that are backbones of computer science. In this course, topics on propositional logic, predicate logic, sets, functions and relations, counting methods, mathematical induction, recursion, algorithms, graphs, trees etc, will be introduced. During the semester students will learn to recognize and express the mathematical ideas graphically, numerically, symbolically, with an emphasis on applications in computer science.
10672116 Theory of Computation
This course introduces the theory of computation, including models of computation such as Turing machines; theory of programming languages, including grammars, regular expressions, parsing, syntax and semantics. On the other hand, graph-based models of computation are discussed, such as finite state automata.
10672104 Fundamentals of Computer Architecture
This Course is an introduction to Computer System Organization and Architectures, a description of Computer Systems, Neumann/Imperative computational model, memory hierarchy, Central Processing Unit (CPU), ARM instruction set and cycle, pipelining and super-pipelining, Control Unit, Micro-Programming and Parallel Computers. Moreover, the interaction between computer hardware and system programs like Assembler, Library, Linker, Loader, Interpreter and Operating System is outlined in this course.
10671101 Programming principles – 1
This course begins with some basics on computer systems, providing a brief introduction to hardware, software and problem-solving. Then, programming using C/C++ is discussed and a number of related topics are covered, including: I/O; expressions and arithmetic; control structures (if, while, for loop etc.); one and multi-dimensional arrays, string handling, functions, variable scope, recursion, file manipulation and exception handling. Furthermore, this course covers basics of unit testing in programming languages.
10671102 Programming principles – 2
This course covers more advanced programming features in C++. The fundamentals of Object-oriented Programming using C++, class reusability, information hiding, inheritance, polymorphism, package of classes, graphical user interface, event handling, streaming and Multi-threading.
10211101 Calculus-1
Topics discussed in this course are considered an introduction to calculus. They include a review of algebra and functions; odd, even, periodic, increasing, decreasing, inverse, logarithms, and exponential functions. Mathematical modelling, rates of change, the derivative, differential equations, critical and inflection points and Euler's method are also covered. Moreover, indefinite integral, the standard indefinite integrals, and basic rules of indefinite integration, review of trigonometry, modelling with trigonometric functions, geometric sums and series, and the Fundamental Theorem of Calculus are discussed in this course.
10211102 Calculus-II
Calculus-II will introduce students to a variety of new techniques of integration, to some applications of integration, and to sequences and infinite series and their convergence and divergence criteria, and how they can be used in approximation techniques. Students should expect to make appropriate use of the integral to physical problems such as computing areas, surfaces and volumes.
10672110 Introduction to Probability Theory
This course outlines basic concepts and methods of probability principles and sets theory, random variables, operations on random variables, various distribution functions besides analyzing their properties (normal distribution, exponential distribution, multivariate normal distribution). Moreover, topics on stochastic processes, especially random walks, branching processes, the Poisson and Wiener process, applied to real problems, Frequentists and Bayesian statistics Simulation of random variables and Monte Carlo methods, Central limit theorem, Basic statistical inference, parameter estimation, hypothesis testing, and linear regression are discussed in this course.
10221111 General Physics
This course offers topics on measurement, dimensional analysis, motion in one-dimension, vectors, motion in 2 and 3 dimensions, relative and circular motion, force and dynamics, Newton's Laws, friction, kinetic energy, work, potential energy, energy conservation, systems of particles, center of mass and momentum, elastic and inelastic collisions, rotation (moments of inertia), rolling motion, torque, angular momentum, static equilibrium, gravitational force and Kepler's laws, gravitational potential energy, oscillations, waves (transverse and longitudinal, superposition of waves).
10672114 Communication and Technical Writing Skills
In this course, basic guidelines required to improve communication skills and critical thinking for students, to maintain healthy and effective relationships, and to demonstrate appropriate and professional ethical behaviour. Also, students learn the best methods of communication for negotiation, create convincing messages, ask thoughtful questions, and engage in active listening. In addition, the basic knowledge needed to prepare technical reports is introduced to students.
10672218 Database Management System
Students, in this course, are introduced to concepts of database systems and architecture, data-modelling using the E-R Model, the relational model, normalization, operations on relational models, relational constraints and relational algebra, SQL (relational Database Standard), security in SQL and, and overview of PL/SQL. Furthermore, an system overview will be provided for the oracle system, distributed databases and client-server architecture.
10672202 Team Project 1
This course a great opportunity for students to develop various non-technical skills, within a context that students will find relevant and engaging: a project to create a web-based application. These skills help students to succeed both during their time at University and, more importantly, in their future working life. Such acquired skills include group working, self- and peer- learning, setting goals and managing progress towards them, innovation and design. Students in this course, will acquire deep knowledge on front-end Web-based application development by leaning concepts in HTML, Javascript, and CSS. During this course, students are encouraged to assess their own knowledge and decide what extra information they need and how they will obtain it throughout the so-called Enquiry-based learning.
10672203 Team Project 2
This course is a continuation of course “Team Project 1”, where students will work as groups towards building upon what have been achieved in “Team Project 1” by utilizing new technical skills acquired from previous courses, such as DBMS. In this course, students focus on obtaining knowledge in backend Web development using PHP language. Topics on PHP covered in this course include server-side scripting, control structures in PHP, Object-oriented in PHP, MVC programming paradigm, database manipulation, sessions, cookies, and Ajax technology.
10671473 Computer Networks
This course introduces the basic notations of communications, protocols, network topologies and 802.xx IEEE standards. It will address detailed descriptions on Network Layer Models (IOS and TCP/IP), including: Application, Transport, Network, Data link and physical. It will then offer a case study of the settings and configurations of Local Area Networks and introduce students to NW security.
10671210 Data Structure
This course provides the students with solid foundations in the basic concepts of programming: data structures and algorithms. The main objective of the course is to teach the students how to select and design data structures and algorithms that are appropriate for encountered problems. This course offers the students a mixture of theoretical knowledge and practical experience. The study of data structures and algorithms is carried out within an object-oriented framework. Topics covered in this course include: trees, binary search trees, multi-way search trees, queues, stacks, dictionaries, hash tables, graphs, graph traversals, graph algorithms.
10671212 Algorithm Design and Analysis
In this course, students gain knowledge in the asymptotic performance of algorithms, rigorous correctness proofs for algorithms throughout inductive proofs and invariants, and in major algorithms and data structures including searching, sorting, heaps, hashing, randomized, approximation and major graph algorithms. Furthermore, various algorithmic design paradigms such as divide-and-conquer, dynamic-programming, greedy methods of analysis are introduced. Advanced topics may include network flow, computational geometry, number-theoretic algorithms, polynomial and matrix calculations, caching, and parallel computing.
10672224 Fundamentals of Artificial Intelligence
This course outlines the design of intelligent agents. It introduces the fundamental problem-solving and knowledge-representation paradigms of artificial intelligence. The AI programming language LISP is studies, state-space and problem reduction methods, brute-force and heuristic search, planning techniques, two-player games, and recent developments in AI gaming. In knowledge representation and reasoning, propositional and first-order logic and their inference algorithms are covered. Finally, the course covers probabilistic approaches to AI, such as Bayesian networks, and machine learning algorithms to improve the agent's performance with experience.
10671421 Operating Systems
This course offers an introduction to operating systems, their services, interrupt-oriented systems, system calls, system APIs, and system programs. Moreover, classical internal algorithms and structures of operating systems, including CPU scheduling, memory management, and device management are addressed. This course teaches the basic operating system abstractions, mechanisms, and their implementations. It also covers topics including file systems, virtual memory, disk request scheduling, concurrent processes, deadlocks, synchronization, security, and integrity.
10672205 SW Engineering and Communication
This course examines the software development process: analysis, specification, design, implementation, integration, testing and maintenance. It covers software processes, project management, people management, software requirements, system models, architectural and detailed design, user interface design, programming practices, verification and validation and software evolution. Structured software engineering techniques will also be examined. The course will combine a strong technical focus with a capstone project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.