View Single Post
Old 01-15-2007, 03:26 PM   #4 (permalink)
CalmLogic
TestMagic Guru
 
Join Date: Feb 2006
Posts: 1,170
CalmLogic 's dreams are becoming reality.
Quote:
There are two books by Hennessy-Patterson. The Quantitative approach one and the other titled "Computer Organisation and Design" ... Which one do we use??
Though I have not read the computer architecture books you mentioned from the Titanium Bits reading list, the textbooks I have used for computer architecture were often less helpful than Wikipedia articles. So I don't think a textbook is necessary for computer architecture. I mostly use Wikipedia (see articles below), the Schaum's Outline of Computer Architecture, Titanium Bits, and online course materials (see links below).

If you do want to get a textbook on computer architecture, I would get the 2nd edition of Hennessy-Patterson's Computer Organization and Design: The Hardware/Software Interface though I have not read the book. The Hardware/Software interface textbook continues to be the most popular book on computer architecture and it's probably not worth paying extra for the latest, 3rd edition. I wouldn't get the Quantitative Approach book since that may not cover the vital areas as well as it is more intended for grad school.

For digital logic, a popular book is Contemporary Logic Design by Katz, et. al. You can read 2 sample chapters, one of which includes examples with K-maps. Personally, I don't have the book and use the Shaum's Outlines, Wikipedia, and Google instead.

Below is my latest collection of study links (check back for updates):

(Please let me know if you see any broken/invalid links or have suggestions.)

Sample Problems (MOST IMPORTANT!):
Official ETS Booklet for GRE CS (solutions by students at Yahoo GRECS group)
Titanium Bits (2006) (117 pages; 102 problems with detailed solutions)
Mock GRE CS (2007)
(70 questions; automatic scoring with section-wise breakup; see javascript code if you want the answer key)

Study Outlines/Guides (valuable but inherently limited):
GRE CS Exam Study Guide (66 pages)
Hunter Thinks Study Guide (30 pages)
CS GRE Notes by Berkeley Students (41 pages)
Aaah.. the Subject Test (breaks down number of questions for each subject area; lists current/former GRE CS committee members)

Caution: The links below can distract you from solving practice problems, which is most important. Use the links below mostly as supplemental materials or references.

Free Sample Chapters:
Contemporary Logic Design by Katz (first 2 chapters)
Discrete Structures, Logic, & Computability (first 5 chapters)
Essentials of Computer Organization & Architecture (3 chapters)
Object-Oriented Data Structures Using Java (first 3 chapters)
C++ Plus Data Structures (3 chapters incl. binary search trees and linked lists)
"Purple dragon book" on Compilers - 2nd Edition (chapters 5-11 incl. a chapter on run-time environments; popular book)

ArsDigita University Courseware (videos, lecture notes, problem sets with solutions):
Theory of Computation (Excellent!)
Algorithms
Discrete Math

Free Online Textbooks:
Computer Organization and Design Fundamentals
Data Structures and Algorithms with Object-Oriented Design Patterns
in Java
http://www.freetechbooks.com/
http://freecomputerbooks.com/
http://en.wikipedia.org/wiki/Computer_science
http://en.wikibooks.org/wiki/Algorithms
http://en.wikibooks.org/wiki/Data_Structures
http://en.wikibooks.org/wiki/Discrete_mathematics
http://en.wikibooks.org/wiki/Operati...esign/Contents
http://en.wikibooks.org/wiki/Formal_...redicate_Logic
The Art of Computer Programming by Knuth (classic)
Concepts, Techniques, and Models of Computer Programming
A Practical Theory of Programming (2007)

MIT OpenCourseWare:
Introduction to Algorithms (lecture notes, videos, problem sets & exams with solutions)
Mathematics for Computer Science
Computation Structures
Theory of Computation (not very helpful; no lecture notes or solutions)

Lecture Notes:
Lecture Notes for "Foundations of Computer Science/C" by Ullman (Excellent!)
Short Introduction to Operating Systems
Algorithms - Lecture Notes (Princeton)
Introduction to CS (includes Theory of Computation)
Discrete Math in Computer Science

Lecture Notes by GRE CS Committee Members:
(As with textbooks and online courseware, these lecture notes include topics that are not relevant.)
Intro CS by Dr. Smith (Harvard): Lecture Notes Section Notes
Lecture Notes by Dr. Cytron
Lecture Notes by Dr. Grunwald
Lecture Notes by Dr. Cook
Lecture Notes on Algorithms by Dr. Ramachandran

Video Lectures (helpful mostly for non-CS students; not an efficient way to review old material):
Data Structures Video Lectures (includes some graph theory)
ArsDigita University - The most interesting CS video lectures in algorithms, automata, discrete math, etc.
MIT video & lecture notes on Algorithms

Easier Ways to Solve Problems:
Master Method: An Alternative Formulation
Detecting overflow & underflow

Microsoft Article:
Extensive Examination of Data Structures

Wikipedia on Computer Architecture:
http://en.wikipedia.org/wiki/Arithmetic_logic_unit
http://en.wikipedia.org/wiki/Two%27s_complement
http://en.wikipedia.org/wiki/CPU_design
http://en.wikipedia.org/wiki/Loop_unwinding
http://en.wikipedia.org/wiki/Out-of-order_execution
http://en.wikipedia.org/wiki/RISC
http://en.wikipedia.org/wiki/Addressing_mode
http://en.wikipedia.org/wiki/Instruction_set
http://en.wikipedia.org/wiki/Instruction_pipelining
http://en.wikipedia.org/wiki/Hazard_(computer_architecture)
http://en.wikipedia.org/wiki/Speedup
http://en.wikipedia.org/wiki/Amdahl's_Law
http://en.wikipedia.org/wiki/CPU_cache
http://en.wikipedia.org/wiki/Memory_management
http://en.wikipedia.org/wiki/Paging
http://en.wikipedia.org/wiki/Page_table
http://en.wikipedia.org/wiki/Page_size
http://en.wikipedia.org/wiki/Virtual_memory
http://en.wikipedia.org/wiki/Category:Virtual_memory
http://en.wikipedia.org/wiki/Page_replacement_algorithm
http://en.wikipedia.org/wiki/Segmentation_%28memory%29
http://en.wikipedia.org/wiki/Fragmen...%28computer%29
http://en.wikipedia.org/wiki/Disk_storage

Wikipedia on Operating Systems:
http://en.wikipedia.org/wiki/Process_%28computing%29
http://en.wikipedia.org/wiki/Process_states
http://en.wikipedia.org/wiki/Task_%28computers%29
http://en.wikipedia.org/wiki/Thread_...ter_science%29
http://en.wikipedia.org/wiki/Multithreading
http://en.wikipedia.org/wiki/Context_switch
http://en.wikipedia.org/wiki/Deadlock
http://en.wikipedia.org/wiki/Thrash_...ter_science%29
http://en.wikipedia.org/wiki/Mutual_exclusion
http://en.wikipedia.org/wiki/Monitor...hronization%29

Wikipedia on Digital Design:
http://en.wikipedia.org/wiki/Boolean_algebra
http://en.wikipedia.org/wiki/De_Morgan%27s_laws
http://en.wikipedia.org/wiki/Minterms
http://en.wikipedia.org/wiki/Karnaugh_map
http://en.wikipedia.org/wiki/Flip-flop_(electronics)

Wikipedia on Discrete Math:
http://en.wikipedia.org/wiki/First-order_logic
http://en.wikipedia.org/wiki/Infix_notation
http://en.wikipedia.org/wiki/Polish_notation
http://en.wikipedia.org/wiki/Reverse_Polish_notation
http://en.wikipedia.org/wiki/Reflexive_relation
http://en.wikipedia.org/wiki/Symmetric_relation
http://en.wikipedia.org/wiki/Transitive_relation
http://en.wikipedia.org/wiki/Graph_theory
http://en.wikipedia.org/wiki/Hamiltonian_path
http://en.wikipedia.org/wiki/Eulerian_path
http://en.wikipedia.org/wiki/List_of...aph_algorithms
http://en.wikipedia.org/wiki/Category:Graph_theory
http://en.wikipedia.org/wiki/Combinatorics
http://en.wikipedia.org/wiki/Binomial_coefficient
http://en.wikipedia.org/wiki/Binary_tree
http://en.wikipedia.org/wiki/Minimum_spanning_tree
http://en.wikipedia.org/wiki/Tree_traversal
http://en.wikipedia.org/wiki/Depth-first_search
http://en.wikipedia.org/wiki/Breadth-first_search
http://en.wikipedia.org/wiki/Maximum_flow_problem
http://en.wikipedia.org/wiki/Hamming_distance
http://en.wikipedia.org/wiki/Shortest_path_problem
http://en.wikipedia.org/wiki/Traveling_salesman_problem
http://en.wikipedia.org/wiki/Boolean...bility_problem
http://en.wikipedia.org/wiki/Graph_coloring
http://en.wikipedia.org/wiki/Clique_problem

Wikipedia on Theory of Computation:
http://en.wikipedia.org/wiki/Formal_language_theory
http://en.wikipedia.org/wiki/Category:Formal_languages
http://en.wikipedia.org/wiki/Automata_theory
http://en.wikipedia.org/wiki/Computa...ter_science%29
http://en.wikipedia.org/wiki/Kleene_star
http://en.wikipedia.org/wiki/Finite_state_machine
http://en.wikipedia.org/wiki/Regular_language
http://en.wikipedia.org/wiki/Regular_grammar
http://en.wikipedia.org/wiki/Determi..._state_machine
http://en.wikipedia.org/wiki/Pushdown_automaton
http://en.wikipedia.org/wiki/Context-free_language
http://en.wikipedia.org/wiki/Context-free_grammar
http://en.wikipedia.org/wiki/Context-sensitive_language
http://en.wikipedia.org/wiki/Top-down_parsing
http://en.wikipedia.org/wiki/Bottom-up_parsing
http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form
http://en.wikipedia.org/wiki/Ambiguous_grammar
http://en.wikipedia.org/wiki/Recursive_language
http://en.wikipedia.org/wiki/Recursi...rable_language
http://en.wikipedia.org/wiki/Complex...asses_P_and_NP
http://en.wikipedia.org/wiki/NP-complete
http://en.wikipedia.org/wiki/Turing_machine

Wikipedia on Data Structures & Algorithms:
http://en.wikipedia.org/wiki/List_of_data_structures
http://en.wikipedia.org/wiki/Heap_%28data_structure%29
http://en.wikipedia.org/wiki/Stack_(data_structure)
http://en.wikipedia.org/wiki/Queue_%28data_structure%29
http://en.wikipedia.org/wiki/Binary_search_tree
http://en.wikipedia.org/wiki/B-tree
http://en.wikipedia.org/wiki/Self-ba...ry_search_tree
http://en.wikipedia.org/wiki/Array
http://en.wikipedia.org/wiki/Linked_list
http://en.wikipedia.org/wiki/Big_O_notation
http://en.wikipedia.org/wiki/Sorting_algorithms
http://en.wikipedia.org/wiki/Comparison_sort
http://en.wikipedia.org/wiki/Insertion_sort
http://en.wikipedia.org/wiki/Mergesort
http://en.wikipedia.org/wiki/Quicksort
http://en.wikipedia.org/wiki/Heapsort
http://en.wikipedia.org/wiki/Selection_algorithm
http://en.wikipedia.org/wiki/Greedy_algorithm
http://en.wikipedia.org/wiki/Dynamic_programming

Wikipedia on Networking/Internet:
http://en.wikipedia.org/wiki/Internet_Protocol
http://en.wikipedia.org/wiki/Internet_protocol_suite
http://en.wikipedia.org/wiki/Transmi...ntrol_Protocol
http://en.wikipedia.org/wiki/User_Datagram_Protocol
http://en.wikipedia.org/wiki/Packet_switched
http://en.wikipedia.org/wiki/Circuit_switching
http://en.wikipedia.org/wiki/Address...ution_Protocol
http://en.wikipedia.org/wiki/Routing
http://en.wikipedia.org/wiki/Ethernet
http://en.wikipedia.org/wiki/Category_5_cable
http://en.wikipedia.org/wiki/VPN
http://en.wikipedia.org/wiki/Subnetwork
http://en.wikipedia.org/wiki/Public-key_cryptography
http://en.wikipedia.org/wiki/Latency_vs_Bandwidth
http://en.wikipedia.org/wiki/Throughput

Wikipedia on Programming Language Theory:
http://en.wikipedia.org/wiki/Programming_language
http://en.wikipedia.org/wiki/Categor...ing_constructs
http://en.wikipedia.org/wiki/Compile...ques_and_Tools
http://en.wikipedia.org/wiki/Compiler
http://en.wikipedia.org/wiki/Lexical_analysis
http://en.wikipedia.org/wiki/Syntax_analysis
http://en.wikipedia.org/wiki/Parsing
http://en.wikipedia.org/wiki/Symbol_table
http://en.wikipedia.org/wiki/Type_checking
http://en.wikipedia.org/wiki/Type_system
http://en.wikipedia.org/wiki/Run-time_environment
http://en.wikipedia.org/wiki/Backus-Naur_form
http://en.wikipedia.org/wiki/Call_stack
http://en.wikipedia.org/wiki/Scope_(programming)
http://en.wikipedia.org/wiki/Evaluation_strategy
http://en.wikipedia.org/wiki/Pointer
http://en.wikipedia.org/wiki/Recursi...mputer_science
http://en.wikipedia.org/wiki/Semapho...programming%29
http://en.wikipedia.org/wiki/Busy_waiting
http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
http://en.wikipedia.org/wiki/Object-...ed_programming
http://en.wikipedia.org/wiki/Polymor...ed_programming
http://en.wikipedia.org/wiki/Virtual_function_table

Wikipedia on Software Engineering:
http://en.wikipedia.org/wiki/Design_Patterns
http://en.wikipedia.org/wiki/Singleton_pattern
http://en.wikipedia.org/wiki/Model-view-controller
http://en.wikipedia.org/wiki/Black_box_testing
http://en.wikipedia.org/wiki/Boundary_value_analysis

Practice problems:
http://www.urch.com/forums/gre-compu...er-theory.html (driller for theory)
http://www.urch.com/forums/gre-compu...ter-103-a.html (confidence booster 103)
http://www.urch.com/forums/gre-compu...ter-102-a.html (confidence booster 102)
http://www.urch.com/forums/gre-compu...thematics.html (driller for mathematics)
http://www.urch.com/forums/gre-compu...-hardware.html (driller for hardware)
http://www.urch.com/forums/gre-compu...ining-ilp.html (Driller for pipelining & ILP !!)
http://www.urch.com/forums/gre-compu...-run-time.html (run-time)
http://www.urch.com/forums/gre-compu...e-runtime.html (one more runtime)
http://www.urch.com/forums/gre-compu...ecurrence.html (recurrence)
http://www.urch.com/forums/gre-compu...ecurrence.html (Recurrence)
http://www.urch.com/forums/gre-compu...as-demand.html (more recursions, by popular (Alba's) demand)
http://www.urch.com/forums/gre-compu...es-graphs.html (Stuff on recurrences and graphs)
http://www.urch.com/forums/gre-compu...-relation.html (A Recurrence Relation)
http://www.urch.com/forums/gre-compu...olynomial.html (Bound -> polynomial ?)
http://www.urch.com/forums/gre-compu...r-passing.html (Parameter passing)
http://www.urch.com/forums/gre-compu...mic-scope.html (Static/Dynamic Scope)
http://www.urch.com/forums/gre-compu...ms-doubts.html (Driller on software systems: doubts)

Manage Your Time Wisely: The best advice is to first do the problems in the ETS practice booklet and the Titanium Bits Study Guide before spending much time with textbooks. Doing these problems first will also give you a better idea of what is important for the exam and what is not. You don't need textbooks to answer the sample problems since computer science knowledge is widely available on the Internet and people can always help you out on this forum.

Last edited by CalmLogic : 01-21-2007 at 04:05 PM.
CalmLogic is online now   Reply With Quote