Test Content (Download the Practice Book)
I. SOFTWARE SYSTEMS AND METHODOLOGY (40%)
A. Data organization
1. Data types
2. Data structures and implementation techniques
B. Program control and structure
1. Iteration and recursion
2. Procedures, functions, methods, and exception handlers
3. Concurrency, communication, and synchronization
C. Programming languages and notation
1. Constructs for data organization and program control
2. Scope, binding, and parameter passing
3. Expression evaluation
D. Software engineering
1. Formal specifications and assertions
2. Verification techniques
3. Software development models, pattern and tools
E. Systems
1. Compilers, interpreters, and run-time systems
2. Operating systems, including resource management and protection/security
3. Networking, Internet, and distributed systems
4. Databases
5. System analysis and development tool
II. COMPUTER ORGANIZATION AND ARCHITECTURE (15%)
A. Digital logic design
1. Implementation of combinational and sequential circuits
2. Optimization and analysis
B. Processors and control units
1. Instruction sets
2. Computer arithmetic and number representation
3. Register and ALU organization
4. Data paths and control sequencing
C. Memories and their hierarchies
1. Performance, implementation, and management
2. Cache, main and secondary storage
3. Virtual memory, paging, and Segmentation
D. Networking and communications
1. Interconnect structures (e.g., buses, switches, routers)
2. I/O systems and protocols
3. Synchronization
E. High-performance architectures
1. Pipelining superscalar and out-of-order execution processors
2. Parallel and distributed architectures
III. THEORY AND MATHEMATICAL BACKGROUND (40%)
A. Algorithms and complexity
1. Exact and asymptotic analysis of specific algorithms
2. Algorithmic design techniques (e.g., greedy, dynamic programming, divide and conquer)
3. Upper and lower bounds on the complexity of specific problems
4. Computational complexity, including NP-completeness
B. Automata and language theory
1. Models of computation (finite automata, Turing machines)
2. Formal languages and grammars (regular and context free)
3. Decidability
C. Discrete structures
1. Mathematical logic
2. Elementary combinatorics and graph theory
3. Discrete probability, recurrence relations, and number theory
IV. OTHER TOPICS (5%)
Example areas include numerical analysis, artificial intelligence, computer graphics, cryptography, security, and social issues.
Note: Students are assumed to have mathematical background in the areas of calculus and linear algebra as applied to computer science.