This is going to be a brief overview of each bookshelf dedicated to Computer Science related books in Bilkent University Library. If you are looking for a specific book, it is quite easy to locate it using the online catalog search for the library. Here, the idea is to categorize the bookshelves by computer science subjects so that if you are interested in topic X, this guide will tell you where the related books to topic X is located and give you some suggestions. Please read the Library of Congress Classification System and Structure of the Guide before proceeding with others. The following list summarizes the content and you can use it to navigate between different parts of the post for further convenience :

- Library of Congress Classification System
- Structure of the Guide
- Philosophy of Science, Scientists, Chaos Theory
- Information Theory, Mathematical Proofs, Artificial Intelligence, Machine Learning
- History of Mathematics, Life of Mathematicians, Discrete Mathematics
- Math Exams, History of Computers, Computer Systems
- Parallel Computer Architecture
- Algorithms & Data Structures
- Parallel Programming & Logic Programming
- Programming Languages Part I: C, C++, C#
- Programming Languages Part II: Java, Pascal, Perl, PHP, Python and Functional Programming Languages
- Software Engineering, Game Development, Compilers, Device Drivers
- System Programming and Operating Systems
- Quantum Computing, Cryptography & Security, Computer Architecture
- Cryptography
- Distributed Systems, Human Computer Interaction
- Coding Theory, Automata Theory, Formal Languages
- Computer Graphics
- Computer Networks, Digital Logic Design, Electrical Engineering
- Further Suggestions

### Library of Congress Classification System

Our library uses Congress Classification System which I would recommend you to get familiar with. It will make your life easier navigating inside the library and most of the other libraries in the World. There may be minor differences but usually the topics are mapped to letter pairs like the following:

#### Library of Congress Classification System

A: General Works | K: Law | S: Agriculture |

B: Philosophy and Religion | L: Education | T: Technology |

C: History, Auxiliary sciences | M: Music | U: Military Science |

D-E-F: General History | N: Fine Arts | V: Naval Science |

G: Geography | P: Language and Literature | W: Medicine |

H: Social Sciences | Q: Science | Z: Bibliography |

J: Political Science | R: Medicine |

These letters are followed by some numbers and a year indicating the publication year of the book. This data forms what we call the **call number** of a book. Here is an example call number(QA76.6 .C811 2009) for the book *"Introduction to Algorithms":*

The one we are considering in this post is the letter **Q**, more specifically **QA** from the following subcategories:

Q: Science**QA: Mathematics & Computer Science**

QB: Astronomy

QC: Physics

QD: Chemistry

### Structure of The Guide

**Important Notice**: I have learnt that call number range cards are changing based on the number of books transferred to the storage and the new books that are added to the shelves. Hence, it will be much better to use this guide based on subjects instead of the range cards.

In the library each bookshelf has a card in both top corners indicating the range of call numbers that they are holding, they look like this:

The guide will make use of these cards because each bookshelf corresponds to some specific topics. The guide will be categorized with these cards representing a bookshelf along with the topics included in that bookshelf. After the discussion of the types of books being present in the bookshelf, I will **highlight** some of the books that are worth reading if you are interested in the topic included in the shelf. There is a preview image of each highlight and you can click the caption under these images to visit the library catalog page for that book.

*Note: *For the topics that I am not that familiar with, I will use Amazon ratings and comments of the books to decide whether they are remarkably good for learning the subject or not.

### Philosophy of Science, Scientists, Chaos Theory

##### (Q130 .W654 - Q325 .P68)

We are starting with some meta topics. This shelf includes many books related to philosophy of science, approaching science and research methodologies which I think can be useful for someone who is interested in conducting scientific research in the future. Then the shelf has some biography books related to scientists such as Leonardo Da Vinci and Al-Biruni. Lastly the shelf includes a reasonable amount of books related to Chaos Theory, which I would recommend looking into if you enjoy fractals. If you don't, I recommend you to watch this video at least once along with a song that you like in the background. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. What If? by Randall Munroe**

The author of this book is the same as the author of the XKCD comics. I would recommend checking the comics as well If you haven't heard of it yet. As the book cover tells, the book starts by asking absurd hypothetical questions and tires to approach them in a really technical way, it is really fun to read.

**2. Chaos by James Gleick**

This is a fascinating book related to chaos theory and the language is really beginner friendly. If you enjoyed the video related to Mandelbrot Sets above, this will be an excellent read for you.

### Information Theory, Mathematical Proofs, Artificial Intelligence, Machine Learning

##### (Q325 .S48 - QA9.65 .S666)

This bookshelf contains a wide variety of topics so brace for impact while you are scanning through the books. The shelf starts with some theoretical Artificial Intelligence and Machine Learning books. It includes the famous Artificial Intelligence: A Modern Approach book by Russel. Then there are several books related to Information Theory and almost all of them are really good. I will pick some of them in the highlights and give more detail. Finally the shelf includes brilliant books related to mathematical proof writing, logic etc. I would recommend picking one if you are willing to learn some formalism. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. A First Course In Information Theory by Reymond W. Yeung**

As the title suggests this is a book for the ones who are willing to learn about Information Theory and have not studied it before. I would recommend getting familiar with Probability Theory before dealing with this. But still it has great introductory chapters explaining some probability concepts such as Markov Chains in great detail with necessary examples and readable proofs.

**2. Mathematical Proofs by Gary Chartrand**

This is a comprehensive book related to proof writing and for people who are willing to learn advanced mathematics. I personally like the style of the author and the way of explaining the general structure of a proof. The book starts with basic building blocks of logic and set theory. Additionally, It has specific chapters related to proofs in Number Theory, Calculus and Group Theory. This book is also used in MATH123 - Abstract Mathematics I course by some instructors.

**3. Artificial Intelligence: A Modern Approach by Stuart J. Russel and Peter Norvig**

This is a really comprehensive covering most of the concepts related to Artificial Intelligence. It has 1152 pages(good luck!). I don't have enough information for describing the book contents or it's level since I haven't read it. But it is obvious that the book is really good since the authors are pioneers in the field of AI.

### History of Mathematics, Life of Mathematicians, Discrete Mathematics

##### (QA9.67 .Z551 - QA39.2 .S836)

This bookshelf starts with some historical books related to mathematics and its development over time. It continues with some biography books related to mathematicians and finally it includes bunch of discrete mathematics books. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. A Mind at Play: How Claude Shannon Invented the Information Age by Jimmy Soni**

This is a biography of Claude Shannon. There many interesting anecdotes from his life and it is really enjoyable to read some excerpts from the life of a great thinker.

**2. Proofs from THE BOOK by Martin Aigner**

This book contains a selection of proofs from different topics in mathematics, if you are familiar with proofs and enjoy reading and learning interesting proofs about different topics, this will be an enjoyable read. Additionally the book is dedicated to Paul Erdos and *" THE BOOK"* is a reference to his quote *"You don't have to believe in God, but you should believe in The Book."*

**3. Concrete Mathematics: A Foundation for Computer Science by Graham, Knuth, Patashnik**

I consider this as the best Discrete Mathematics book ever written with the intended audience as Computer Scientists, no wonder the library has 7 copies of this. It covers wide range of topics and it has a dedicated chapter to Asymptotic Methods which is not usually present in other Discrete Mathematics books. Even if you have taken MATH132 - Discrete Mathematics, I would still recommend reading through some chapters since it is a different experience.

### Math Exams, History of Computers, Computer Systems

##### (QA39.2 .T164 - QA76.5 .G857)

This shelf contains a variety of books which I could not categorize properly because it feels a little bit random, basically it contains books related to many topics but they are really old. The first column has many books related to well known math exams such as GRE, SAT and PUTNAM. There are also some books related to the history of computation. Finally this shelf contains a book which I think is really important and it is going to be the only highlight. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Computer Systems: A Programmer's Perspective by Randal E. Bryant & David R. O'Hallaron**

This book is used as a textbook for 15-213: Introduction to Computer Systems course from Carnegie Mellon University. As the title suggests it guides you through systems programming concepts with lots of programming exercises. Each chapter has a dedicated lab which takes a reasonable amount of time to complete and it is really fun. Even if you are not interested in system programming I can guarantee that this book will make you a more experienced person in many concepts related to programming and how computers work in general.

Additionally you can follow the video lectures and find all resources related to labs given in the book from the course website and it is free. There are two editions of this book in our library which are the second and third. The third edition is almost the same as the second but the architecture is 64-bit instead of 32-bit.

### Parallel Computer Architecture

##### (QA76.5 .H242 - QA76.58 .P38)

This shelf contains lots of books related to Parallel Computing including Parallel Computer Architecture and Parallel Processing Algorithms, it also has some books related to High Performance Computing and Supercomputers. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Parallel Computer Architecture by David E. Culler**

I can not say that this book is good for "learning" Parallel Programming but it acts more like a reference that you can always reach when you need a detailed insight related to Parallel Computer Architectures. If you are interested in this topic, there are many free online resources from NVIDIA. Carnegie Mellon University also has a course that uses this book as a reference textbook. The course is 15-418: Parallel Computer Architecture and Programming where you can find all the video lectures and assignments as well.

### Algorithms & Data Structures

##### (QA76.58 .P49 - QA76.6 .S47)

This shelf is dedicated to books related to Algorithms and Data Structures and contains many useful and fundamental books related to the area. I think the importance of the topics is self explanatory so there is not much to say. This shelf also contains some books related to Parallel Programming Algorithms that is left from the previous shelf. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. The Art of Computer Programming by Donald E. Knuth**

This book is referred as the Bible of Computer Science. The writing style of Donald Knuth is well known and how he communicates with the reader is really remarkable. This can be seen in the Concrete Mathematics book which is previously suggested as well. The book has 4 volumes that focuses on different aspects. I have only completed half of the first volume and it is completely fascinating to see the perspective that Knuth gives you even for the topics that look really simple and trivial at the first glance. Most of the algorithms are written in an assmebly-like language which is introduced in the beginning of the first volume in order to reduce the differences in the algorithms depending on different language paradigms. The books also have an algorithm for reading the book itself which is pretty cool. So start reading these as soon as you can.

**2. Introduciton to Algorihtms by CLRS(C**ormen, **L**eiserson, **R**ivest, **S**tein)

This book is always recognized if you just say *"CLRS"* which is the initials of the authors. It is the de facto textbook that is being used in most of the Algorithms courses in many universities including CS473: Algorithms I from Bilkent University.

### Parallel Programming & Logic Programming

##### (QA76.6 .S473 - QA76.7 .P54)

There was a Parallel Computer Architecture section before but this section is more applied and contains OpenCL, MPI etc. The shelf also contains some books related to Logic Programming and Prolog. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

I don't have any highlights from this shelf.

### Programming Languages Part I: C, C++, C#

##### (QA76.7 .P7 - QA76.73 .F25 C)

This shelf starts with some books related to programming language pragmatics that can be useful for CS315: Programming Languages course. Then we have many reference books related to the programming languages C, C++ and C#. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. The C Programming Language by Brian Kernighan & Dennis Ritchie**

This book is the bible of C. It is from the designer of the language Dennis Ritchie (if you already don't know). It contains many examples after each chapter which makes you get familiar with most of the constructs in C. Note that the second version is for ANSI C and the current standard is C11 but having a good grasp of ANSI C would be enough for general use. At least it will be a good practice to solve the provided exercises.

### Programming Languages Part II: Java, Pascal, Perl, PHP, Python and Functional Programming Languages

##### (QA76.73 .F25 D - QA76.73 .W24 U)

This shelf contains many reference books related to Java, Pascal, Perl and some functional programming languages such as Scala and Lisp. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

I was not able to find any highlights from this shelf because I use language documentations or online tutorials for learning the languages most of the time. But I would suggest you to go over the shelf and I am almost sure that you can find something interesting.

### Software Engineering, Game Development, Compilers, Device Drivers

##### (QA76.73 .X55 F - QA76.76. I58 I)

The topics in this shelf is really unrelated because there is a transition between QA76.73 to QA76.76. But the topics are grouped together inside the shelf so the books are not mixed together, they just belong to the same bookshelf. In the first column, there are some Object Oriented Software Engineering books. Then we have approximately two rows of books related to game development (mostly mobile game development). Then we have more technical books related to Compilers and Linux Device Drivers which I am going to highlight from this section in a moment. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Compilers: Principles, Techniques & Tools by Aho, Lam, Sethi, Ullman**

You can see this book referred as the Dragon Book in most of the discussions online. That's because the fancy cover that the book has. The book has a legendary status for being frequently used in Compiler Design Courses in many universities.

**2. Essential Linux Device Drivers by Sreekrishnan Venkateswaran**

I have used this book as a reference while reading another book related to Linux Kernel Development. It is quite comprehensive and goes into detail but it also captures the big pictures while doing that. I should also note that the book is a little bit outdated considering the current version of the Linux Kernel but it is still usable.

### System Programming and Operating Systems

##### (QA76.76 .I58 M - QA76.87 .H43)

This section has variety of books related to different computer systems and architectures. At first we have many reference books related to legacy systems such as IBM PC, Old Windows and Macintosh Versions etc. Additionally there are many books related to system programming such as books related to assembly programming or developing unix applications. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Assembly Language for x86 Processors by Kip Irvine**

I can claim that most of my knowledge related to x86 assembly comes from this book. Instead of using custom libraries the book has its own library that is used in many places in the book so that the book is self contained in a sense. I like this style very much. There are many practical exercises and code examples that makes you understand the internals very well.

**2. The Linux Programming Interface by Kerrisk Michael**

This book is like a beautifully written StackOverflow answer that is 1500 pages long. It can be used as a reference book as well but you can just sit and read from beginning to end (it is going to take some time). The style of writing is really elegant and this book should be near you if you are developing a unix application or you are interested in system programming because it is very much likely that the questions that you are going to have will have answers in this book.

**3. Modern Operating Systems by Andrew S. Tanenbaum**

This is a legendary book written by Tanenbaum. Each book I have seen related to "Systems" by Tanenbaum in general was really good at explaining deep technical concepts in a way that makes it understandable by students. I think Modern Operating Systems is definitely one of them and you can use it as supplementary textbook for CS342: Operating Systems course in Bilkent.

### Quantum Computing, Cryptography & Security, Computer Architecture

##### (QA76.87 .H85 - QA76.9 .D3 E)

This shelf contains really high quality books related to Quantum Computing, Cryptography & Security and Computer Architecture. Unfortunately there are not many books related to security. There will be an additional section discussing the cryptography books here because otherwise the highlights will be too long for this section. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Quantum Computation and Quantum Information by Nielsen & Chaung**

This book is the most established book in the field of Quantum Computing and Quantum Information Theory. It is entitled as *"one of the most cited books in physics of all time". *It contains three introduction chapters targeted for computer scientists, physicists and mathematicians, thus people from variety of backgrounds can follow this book.

**2. The Art of Deception by Kevin Mitnick**

This is the best social engineering book ever written, I don't have much to say about it. If you are not familiar with the name Kevin Mitnick, I would suggest you to do so.

**3. Computer Architecture: A Quantitative Approach by Hennessy & Peterson**

If you have introductory knowledge related to Computer Organization and Architecture and enhance your knowledge in these areas. I would recommend using this book coupled up with video lectures by Professor Onur Mutlu from ETH Zurich. You can find many other lectures related to Computer Architecture in Onur Mutlu Lectures Channel.

### Cryptography

##### (QA76.87 .H85 - QA76.9 .D3 E)

Here are the Cryptography books that I would recommend reading that is present in our library:

**1. Introduction to Modern Cryptography by Katz & Lindell**

This is a very rigorous and self contained book related to Cryptography. It is really good for learning the related formalism for cryptography and it has really detailed proofs about almost every theorem stated and it contains a really good chapter that made me understand the Random Oracle Model.

**2. Practical Cryptography by Bruce Schneier & Niels Ferguson**

This is a great book for Applied Cryptography. Actually there is a newer version of this called "Cryptography Engineering" but it is in the East Campus. You can still get it from there but it does not worth the effort because the content is reasonably similar. Thomas Ptacek has a great review of "Practical Cryptography" so I am leaving it here and recommend that you read the review.

### Distributed Systems, Human Computer Interaction

##### (QA76.9 .D3 E - QA76.9 .M35 R)

This shelf contains a variety of books related to Distributed Systems and Human Computer Interaction. Here are some pictures from the shelves for having a taste of what the books are like:

### Highlights

Here are my recommendations from this shelf:

**1. Distributed Systems: Principles and Practice by Andrew S. Tanenbaum**

Another "Systems" book by Andrew Tanenbaum, it used in CS442: Distrubited Systems and Algorithms course.

### Coding Theory, Automata Theory, Formal Languages

##### (QA247 .W7845 - QA274 .Z4813)

This shelf contains many books related to Coding Theory and Error Correcting Codes along with some Probability Theory books. It also includes books related to Theory of Computation and Formal Languages. This shelf contains some theoretical books related Cryptography as well, but they are going to be discussed in a separate section.

### Highlights

Here are my recommendations from this shelf:

**1. Coding and Information Theory by Richard W. Hamming**

I have chosen this book because it is written by Hamming, It is a really tiny book and it mostly covers the Hamming codes for error correction.

**2. A Student's Guide to Coding and Information Theory by Stefan Moser**

This book is brilliant in explaining topics related to Coding and Information Theory, I was able to understand some concepts that I was struggling to intuitively understand before such as Mutual Information and Relative Entropy using this book.

**3. Introduction to Automata Theory Languages and Computation by Hopcroft, Motwani, Ullman**

This is an Introductory text book for Automata Theory and Formal Languages. There is a free online course from Stanford University by Jeff Ullman that you can follow along with this book. You can also use it as a secondary book while taking CS476: Automata Theory and Formal Languages course.

### Computer Graphics

##### (T385)

This section contain many books related to Computer Graphics. I don't have much to say related to this topic since I don't have enough knowledge related to it. But I do know one book related to this topic which I am going to highlight.

### Highlights

Here are my recommendations from this shelf:

**1. Computer Graphics: Principles and Practice by James D. Foley**

I have seen this book referred as *"Bible of Computer Graphics" *in several places online, thus I am assuming that it is going to be beneficial for someone who is interested in this topic.

**2. Physical Based Rendering by Matt Pharr**

This book has been suggested by one of the students. It explains the rendering mechanisms of physical principles in real life and gives technical details related to the implementation of them.

### Computer Networks, Digital Logic Design, Electrical Engineering

##### (TK)

If you check the congress catalog system above, T stands for technology and TK is the subcategory assigned to Electrical Engineering in Bilkent University. I have included this section without using the call number range cards because most of the topics are not related to Computer Science directly. But there are some topics such as Computer Networks, Digital Logic Design and Hardware Description Languages that is going to be useful and I am going to highlight some books related to this areas.

### Highlights

Here are my recommendations from this shelf:

**1. Computer Networks by Andrew S. Tanenbaum**

This is a Bottom-Up approach to Computer Networks written by Tanenbaum. Our CS421: Computer Networks course uses a Top-Down approach for teaching the concepts which I think works well. But you should consider picking this up and see how the other approach relates to what you already know.

**2. The Elements of Computing Systems by Noam Nisan and Shimon Schocken**

This book is acutally designed for a specific course taught by the authors called Building a Modern Computer From First Principles. It is also called Nand2Tetris. Here you can find the necessary course material. I have completed this course in the summer of 2016 and I can say that it is really beneficial for anyone studying computer science. The course starts with teaching logic gates and they have their own simple hardware description language. You are given a nand gate module and you start from basic logic gates to writing a simple operating system at the end of the course. All the material is designed to be simple and the course has exclusive software related to the tasks. It gives you a survey of computer science topics and accumulates introductory knowledge in most of them.

### Further Suggestions

I hope that this guide will help you to use the library in a more effective way. If you have further suggestions to add to the highlights in this guide or any other question in general, feel free to contact me via e-mail. See you in another post.