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, patterns, 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 tools

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 NPcompleteness
   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.