Description of undergraduate courses as prerequisites for diploma courses
Description of undergraduate courses as prerequisites for diploma courses
Artificial Intelligence
Knowledge Representations: Predicate Calculus, Structured Representations, Network Representations. State Space Search: trees and graphs, heuristic search, model based reasoning, case-based reasoning, reasoning with uncertain or incomplete knowledge. Overview of AI languages, Overview of AI Application Areas. In particular, we consider the use of Prolog for database querying, parsing, meta-programming, and problem solving in AI. The programming assignments can be coded in SWI_Prolog or XSB.
Theory of Computations
This course deals with the theoretical foundations of computing, including abstract models of computing machines, the grammars those machines recognize, and the corresponding classes of languages. Topics include church's thesis; grammars, the m-recursive functions, and tuning computability of the m-recursive functions, the incompatibility: the halting problem, tuning innumerability, tuning acceptability, and tuning decidability, unsolvable problems about tuning machines and m-recursive functions, computational complexly: time – bounded tuning machines, rate of growth of functions, up – completeness, the complexity hierarchy, the prepositional calculus: syntax, truth – assignment, validity and satisfy, and equivalence and normal forms compactness.
Software Engineering
This course provides an introduction to software engineering disciplines with emphasis on: Software Process Models, Agile Software Development, Requirements Engineering, System Modelling, Requirements Specification, and Software Architecture Design.
Algorithms
The course is concerned with design and analysis of algorithms. It covers design techniques, Such as dynamic programming and greedy methods, As well as fundamentals of analyzing algorithms for correctness and time and space bounds. Topics include advanced sorting and searching methods, Graph algorithms and geometric algorithms, Notion of an algorithm: Big-o, Small-o, Theta and omega notations. Space and time complexities of an algorithm. Fundamental design paradigms: Divide and conquer, Branch and bound, Backtracking dynamic programming greedy methods, Simulation. Theory of up-completeness, Notion of an intractable problem. Measures of approximation: Ratio bound and relative error. Polynomial time approximation scheme. Illustrative examples: Graph theory, Areas vary from year to year, and may include matrix manipulations, String and pattern matching, set algorithms, Polynomial computations, and the fast Fourier transform. Recent correlated software packages should be used through labs.