Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a long time professional C programmer planning to get admitted for a Masters degree in Computer Science. The University requires that I submit GRE CS subject test scores. I'm planning to sit for it this coming October, and have until then to prepare for it. I do not have a CS undergraduate degree, so suggestions of reading my undergraduate texts wouldn't be helpful.

Which books would you recommend for me to purchase and read that will cover maximum percentage of the test topics?

The test breakdown includes:


A. Data organization

Data types

Data structures and implementation techniques

B. Program control and structure

Iteration and recursion

Procedures, functions, methods and exception handlers

Concurrency, communication and synchronization

C. Programming languages and notation

Constructs for data organization and program control

Scope, binding and parameter passing

Expression evaluation

D. Software engineering

Formal specifications and assertions

Verification techniques

Software development models, patterns and tools

E. Systems

Compilers, interpreters and run-time systems

Operating systems, including resource management and protection/security

Networking, Internet and distributed systems


System analysis and development tools


A. Digital logic design

Implementation of combinational and sequential circuits

Optimization and analysis

B. Processors and control units

Instruction sets

Computer arithmetic and number representation

Register and ALU organization

Data paths and control sequencing

C. Memories and their hierarchies

Performance, implementation and management

Cache, main and secondary storage

Virtual memory, paging and segmentation

D. Networking and communications

Interconnect structures (e.g., buses, switches, routers)

I/O systems and protocols


E. High-performance architectures

Pipelining superscalar and out-of-order execution processors

Parallel and distributed architectures


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

B. Automata and language theory

Models of computation (finite automata, Turing machines)

Formal languages and grammars (regular and context-free)


C. Discrete structures

Mathematical logic

Elementary combinatorics and graph theory

Discrete probability, recurrence relations and number theory


Example areas include numerical analysis, artificial intelligence, computer graphics, cryptography, security and social issues.

share|improve this question

closed as off-topic by gnat, MichaelT, GlenH7, Dan Pichelman, Kilian Foth Sep 23 '13 at 8:55

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, MichaelT, GlenH7, Dan Pichelman, Kilian Foth
If this question can be reworded to fit the rules in the help center, please edit the question.

Do you have a good idea of what's on the test? If not, this is really two questions: 1) What's are the main topics, and 2) What are specific titles about those topics. Check if any of the test-prep companies (Kaplan did the general-GRE prep book sitting on my shelf, I know there's others) have any materials specific to the CS test, then you should be able make a list of topics and find resources based on that. –  Beekguk Apr 21 '11 at 18:09
ets.org/gre/subject/about/content/computer_science Link to topics on the test for people trying to answer this question. –  Ethel Evans Apr 21 '11 at 18:28
@Ethel Evans - or, someone more proactive than I could do 15 secs of research to figure it out themselves. :) Lesson for me. –  Beekguk Apr 21 '11 at 18:45
In addition to Cormen's and Sipser's books, I recommend Computer Organization and Design: The Hardware/Software Interface. –  user23648 Apr 23 '11 at 4:22

3 Answers 3

up vote 1 down vote accepted

Looking at the sample test that was provided on the GRE website it looks like a lot of the questions are weighted towards algorithms and algorithm analysis, as such, a good text for this would be Introduction to Algorithms which is used by a lot of undergraduate courses and tends to be kept by a lot of developers after graduation. There are also some questions about grammars and Turing machines for which Introduction to the Theory of Computation can help provide the very theory heavy background into computer science. Those two books seem to provide pretty good coverage of the questions, beyond that a text on discrete mathematics could also be useful but I don't know of any good ones to recommend. If you want to pick up Design Patterns: Elements of Reusable Object-Oriented Software it might also be useful as some questions could be answered by it and it also serves as a good reference book for the long term.

However, a lot of the more "general knowledge" questions could be found just by Googling around based upon answers you got wrong on the sample test(s) and reading what you find. A textbook like Software Engineering might be useful, but just reading around on the Software Engineering Body of Knowledge (SWEBOK) might provide to answer any questions you have (as well as being cheaper than a textbook.)

share|improve this answer

The GRE Subject Test is notorious for not having a clear definition of the material or enough prep material. It's also heavily biased towards the US CS curriculum (I had a problem coming from another country).

It tries to cover a variety of topics, but also to ensure that most US students have been exposed to them.

A general CS/Algo book like CLR is a good choice, but you have to know what small portion to really study. Take a look at the few available old tests ,and then at actual slides from multiple schools. Your best bet is with topics that are taught in multiple schools. If a topic you see in a book is only taught by a few schools, that might be a good bet for skipping it.

share|improve this answer

Looks like a good undergrad text on Data Structures and Algorithms would cover the 40% Theory/Math. An undergrad text on Computer Organization would hit the 15% part of Computer Organization, and a Programming Languages text would hit the crossover between software systems and Theory for the other 40%.

3 texts, covering 95% of the material, and I wouldn't bother with the last 5%. Just check out any undergrad texts on those subjects.

In my school, those subjects were:

  • Computer Organization and Architecture
  • Organization of Programming Languages
  • Data Structures and Algorithm Analysis
share|improve this answer
Excellent answer. Do you remember the name of main textbook for each of the above three topics? –  CDR Apr 22 '11 at 17:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.