Syllabi of the Comprehensive Examination in Computer Science The material of the comprehensive examination is drawn mostly from the undergraduate curriculum at Kuwait University and is updated to reflect the changes in the curriculum. The fundamental topics of the examination materials are: Theory of Computation, Algorithm Analysis and Design, Programming Languages, Computer Organization and Architecture, Operating Systems, Databases and Software Engineering. A. Theory of Computation 1. Regular expressions and finite automata, deterministic and non-deterministic equivalence, closure properties, pumping lemma, decision algorithms. 2. Context-free grammar and pushdown automata, closure properties, pumping lemma, decision algorithms. 3. Recursive languages and Turing machine model, Turing computability, Church s thesis, grammars, universal Turing machine, undecidability. 4. Chomsky Hierarchy References 1. Elements of the Theory of Computation: H. R. Lewis and C. H. Papadimitriou 2. Introduction to Automata Theory Languages, and Computation: J. E. Hopcroft and J. D. Ullman B. Algorithm Analysis and Design 1. Algorithm analysis, time and space complexities, worst case, best case, and average case complexities. 2. Asymptotic behavior of algorithms, O, Ω, Θ and o notations, lower and upper bounds on complexity, algorithm s optimality. 1
3. Design and analysis techniques, divide and conquer, greedy algorithms, dynamic programming, and amortized analysis. 4. Sorting, lists, queues, stacks, trees, and hashing. 5. Graph algorithms, minimum spanning trees, single-source shortest paths, all-pairs shortest paths, maximum flow networks. 6. NP-complete problems, P and NP, polynomial transformations, proving NP-completeness. References 1. Introduction to Algorithms: T. Cormen, C. Leiserson and R. Rivest 2. Computer Algorithms: S. Baase C. Programming languages 1. Language design criteria, syntax, grammars, parse trees, grammar ambiguity, semantics. 2. Imperative languages: variables and data types, lifetime, data abstaction, binding, blocks and scopes, control abastraction, modules and subprograms. 3. Object-Oriented programming: objects, classes, inheritance, dynamic binding, polymorphism, exception handling. 4. Functional programming: lambda-calculus, reduction rules, functional compositions, higher-order functions, dynamic typing, lazy evaluations. 5. Logic programming: theorem proving, recursion, unification, backtracking, backward and forward chaining, PROLOG basics. 2
References 1. Concepts of Programming Languages: R. Sebesta (4th edition 1999) 2. Programming Languages Pragmatics: M. Scott 3. Programming Languages concepts and Constructs: R. Sethi D. Computer Organization and Architecture 1. Computer components and their functions, hardware, software, firmware. 2. Digital circuits, Boolean functions and their circuit equivalence, arithmetic circuits, clocks and synchronization, communication buses. 3. Processor organization, arithmetic and logic unit, control unit, registers, instruction sets, instruction formats, instruction execution, instruction pipelining, addressing modes, instruction types, flow of control, sequential flow, jump, sub-routines, interrupts, assembly languages. 4. Memory organization, internal memory, external memory, cache memory. 1. Structured Computer Organization: A. S. Tanenbaum 2. Computer Organization and Architecture Designing for Performance: W. Stallings E. Operating Systems 1. Computer system structure, operating systems services, system calls and their types, operating system structures. 2. Processes and threads, process scheduling, interprocess communication, process synchronization, deadlocks and deadlocks handling. 3
3. Memory management, logical and physical address space, swapping, contiguous allocation, paging, segmentation, virtual memory, demand paging, page replacement and page replacement algorithms, memory frames allocation, thrashing. 4. File system, directories, file system implementation, file system failure recovery. F. Databases 1. Operating Systems Design and Implementation: A. Tanenbaum and A. WoodHull 2. Operating Systems Concepts: A. Silberschatz and P. Galvin 1. Database purposes, instances and schemes, data dependencies. 2. Entity-Relationship model, entities, relationships, attributes, keys, E-R diagrams. 3. Relational model, relational algebra, relational calculus, SQL, integrity constrains, relational database design, normalization. 4. Files and physical storage, file organization, sequential files, indexing, B-trees, static hashing, dynamic hashing. 5. Crash recovery, failure classification, log-based recovery, checkpoints. 1. Fundamentals of Database Systems: i) R. A. Elmasri, S. B. Navathe, S. ii)b. Navathe, C. Shanklin (Editor) 2. Database System Concepts: Korth and A.Silberschatz 3. Principles of Database and Knowledge-Base Systems,Volume I: Classical Database Systems: J. Ullman 4
G. Software Engineering 1. Software products, software process, product attributes, process attributes, methods, tools. 2. Software production processes, waterfall model, prototyping model, evolutionary models, formal methods model. 3. Requirement engineering process, requirement definition and specification, requirement validation, system models, data-flow model, objects model, sematic data models. 4. Software design process, design strategies, design quality, architectural design, objectoriented design, function-oriented design. 5. Validation and verification, dynamic verification, static verification, software testing process, testing strategies, black-box testing, white-box testing, interface testing. 1. Software Engineering: I. Sommerville 2. Software Engineering A Practitioner s approach: R. Pressman 5