CS GRE: Difference between revisions

From dankwiki
No edit summary
No edit summary
Line 67: Line 67:

==Books used to prepare==
==Books used to prepare==
* Software Systems and Methodology: ''[http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695 Concepts, Techniques, and Models of Computer Programming]''
* Software Systems and Methodology
**Peter Van Roy and Seif Haridi, ''[http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695 Concepts, Techniques, and Models of Computer Programming, 1st Edition]''
**Harold Abelson and Gerald Jay Sussman, ''[http://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262011530 Structure and Interpretation of Computer Programs, 2nd Edition]''
* Computer Organization and Architecture
**John Hennessy and David Patterson, ''[http://www.amazon.com/Computer-Architecture-Quantitative-Approach-4th/dp/0123704901 Computer Architecture: A Quantitative Approach, 4th Edition]''
* Theory and Mathematical Backgrouns
**Thomas Cormen, Charles Leiserson and Ron Rivest, ''[http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937 Introduction to Algorithms, 1st Edition]''

Revision as of 12:01, 1 August 2009

Anything above a 800 (it's on a 200-990-point scale) seems pretty good. It appears that quality single-volume preparation materials cannot be had at any price. Perhaps one ought be written?

(This second link is pretty dubiously-formed; YMMV. Go to the GRE page, click on Subject Info details, click on Computer Science Dank 14:58, 30 July 2009 (UTC))

Subject Material

This was taken from the ETS CS GRE page, 2009-07-30 1500 UTC.


  • 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


  • 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


  • 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


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

Books used to prepare