I . COMPUTER ORGANIZATION AND ARCHITECTURE
A. Memories and their hierarchies:
I. Cache, main and secondary storage
II. Virtual memory, paging and segmentation
III. Performance, implementation and management
B. Processors and control units:
I. Register and ALU organization
II. Instruction sets
III. Data paths and control sequencing
IIII. Computer arithmetic and number representation
C. Digital logic design:
I. Optimization and analysis
II. Implementation of combinational and sequential circuits
D. High-performance architectures:
I. Parallel and distributed architectures
II. Pipelining superscalar and out-of-order execution processors
E. Networking and communications:
I. I/O systems and protocols
II. Synchronization
III. Interconnect structures (e.g., buses,switches,routers)
II. SOFTWARE SYSTEMS AND METHODOLOGY
A.Program control and structure:
I. Procedures, functions, methods and exception handlers
II. Iteration and recursion
III. Concurrency, communication and Synchronization
B. Software engineering:
I. Verification techniques
II. Software development models, patterns and tools
III. Formal specifications and assertions
C. Data organization:
I. Data structures and implementation techniques
II. Data types
D. Systems:
I. Databases
II. Operating systems, including resource management and protection/security
III. Compilers, interpreters and run-time systems
IV. System analysis and development tools
V. Networking, Internet and distributed systems
III. MATHEMATICAL BACKGROUND
A. Automata and language theory:
I. Decidability
II. Formal languages and grammars (regular and context-free)
III. Models of computation (finite automata, Turing machines)
B. Discrete structures:
I. Elementary combinatorics and graph theory
II. Mathematical logic
III. Discrete probability, recurrence relations and number theory
C. Algorithms and complexity:
I. Upper and lower bounds on the complexity of specific problems
II. Exact and asymptotic analysis of specific algorithms
III. Computational complexity, including NPcompleteness
IV. Algorithmic design techniques (e.g., greedy, dynamic programming, divide and conquer)
IIII. GENERAL COMPUTING TOPICS