# GRE Computer Science Subject Test

Prepping for this test is a "do-it-yourself" job. ETS, the test author, provides a small amount of information and one practice test. I have created a study guide to help fill the gap, which you can obtain from here.

## What to Study for the Test

Since the GRE CS test originated with ACM influence, and since its committee is drawn from academia, we can assume that the test is a subset of the topics in the Computing Curricula, Computer Science volume. Based on that, I created a study guide for my use when I took GRE Computer Science test. Using it, I scored in the 90th percentile! I now have an improved version of my study guide available in iBooks and Kindle formats.

## Practice Tests

ETS, the test author, provides one practice test. You can get this from the ETS site at gre.org, and you get a printed pamphlet when you register. Intrepid Web search engine use may turn up older versions of this test, but I'm not sure how valuable that would be for your preparation, since they are very similar.

## Test Topic List From ETS

Here's the official list of test topics, reproduced from the ETS site's page on the CS Subject Test Details:

- SOFTWARE SYSTEMS AND METHODOLOGY — 40%
- Data organization
- Data types
- Data structures and implementation techniques

- Program control and structure
- Iteration and recursion
- Procedures, functions, methods, and exception handlers
- Concurrency, communication, and synchronization

- Programming languages and notation
- Constructs for data organization and program control
- Scope, binding, and parameter passing
- Expression evaluation

- Software engineering
- Formal specifications and assertions
- Verification techniques
- Software development models, patterns, and tools

- Systems
- Compilers, interpreters, and run-time systems
- Operating systems, including resource management and protection/security
- Networking, Internet, and distributed systems
- Databases
- System analysis and development tools

- Data organization
- COMPUTER ORGANIZATION AND ARCHITECTURE — 15%
- Digital logic design
- Implementation of combinational and sequential circuits
- Optimization and analysis

- Processors and control units
- Instruction sets
- Computer arithmetic and number representation
- Register and ALU organization
- Data paths and control sequencing

- Memories and their hierarchies
- Performance, implementation, and management
- Cache, main, and secondary storage
- Virtual memory, paging, and segmentation

- Networking and communications
- Interconnect structures (e.g., buses, switches, routers)
- I/O systems and protocols
- Synchronization

- High-performance architectures
- Pipelining superscalar and out-of-order execution processors
- Parallel and distributed architectures

- Digital logic design
- THEORY AND MATHEMATICAL BACKGROUND — 40%
- Algorithms and complexity
- Exact and asymptotic analysis of specific algorithms
- Algorithmic design techniques (e.g. greedy, dynamic programming, divide and conquer)
- Upper and lower bounds on the complexity of specific problems
- Computational complexity, including NP-completeness

- Automata and language theory
- Models of computation (finite automata, Turing machines)
- Formal languages and grammars (regular and context free)
- Decidability

- Discrete structures
- Mathematical logic
- Elementary combinatorics and graph theory
- Discrete probability, recurrence relations, and number theory

- Algorithms and complexity
- OTHER TOPICS — 5%
- Example areas include numerical analysis, artificial intelligence, computer graphics, cryptography, security, and social issues.

- Note: Students are assumed to have a mathematical background in the areas of calculus and linear algebra as applied to computer science.