# OpenLib.cs

OpenLib.cs is a collaborative project to make textbooks, references, solution manuals and other resources freely available for students who are currently pursuing the following courses (or their equivalents) at university. As an open project, any member of the community can contribute his/her share to build an index of computer science references across the web.

## Course Navigation

### 1st Year Courses

* [Computer Programming](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf111)

### 2nd Year Courses

* [Data Structures & Algorithms](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf211)
* [Database Systems](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf212)
* [Object Oriented Programming](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf213)
* [Logic in Computer Science](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf214)
* [Digital Design](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf215)
* [Discrete Structures for Computer Science](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf222)
* [Microprocessors & Interfacing](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf241)

### 3rd Year Courses

* [Principles of Programming Languages](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf301)
* [Computer Networks](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf303)
* [Computer Architecture](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf342)
* [Theory of Computation](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf351)
* [Compiler Construction](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf363)
* [Design & Analysis of Algorithms](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf364)
* [Operating Systems](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf372)

### Electives

* [Artificial Intelligence](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf407)
* [Data Mining](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf415)
* [Information Retrieval](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf469)
* [Cryptography](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf463)
* [Number Theory](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf231)
* [Service Oriented Computing](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf466)
* [Quantum Computing](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf386)

## Usage

* A directory is maintained for each course within which is a README that provides information regarding the course. The README may have the following sections if applicable :
  * **Prerequisites** - Courses that need to be completed prior to attempting the particular course
  * **Textbooks** - List of textbooks with links to their soft copies
  * **Code** - Implementation of course concepts
  * **Videos** - List of links of video explanations of course concepts
  * **Websites** - Useful websites
  * **Articles** - Cheat-sheets, tutorials, blog-posts etc.
  * **Communities** - Online forums related to the course concepts
  * **Apps** - Mobile apps that may enrich the learning experience
* There are also [scripts](https://github.com/acmbpdc/openlib.cs/tree/df322e1c7dd85cc35429e622fb70de585f7faa1d/scripts/README.md) that provide certain useful features (WIP)

## Guidelines

* This repository provides links to the required study material such as **textbooks**, **solution manuals** and **reference books**.
* Copies of the study material can be borrowed from the library while appearing for **open-book exams**. Moreover, printouts of the same can also be taken into the exam hall if required. Written notes are also allowed.

![Computer Science Tracks](https://1482075751-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm8y43gpQXmTTTP1lVW%2F-Lm8yQSUvdh71h-MFP7m%2F-Lm8ySWcFzEsR3DADeeo%2FTracks.png?generation=1565682952162521\&alt=media)

## Communities

* [r/AskComputerScience](https://www.reddit.com/r/AskComputerScience/)
* [r/compsci](https://www.reddit.com/r/compsci/)
* [r/Programming](https://www.reddit.com/r/programming/)
* [GeeksforGeeks](https://www.geeksforgeeks.org/)
* [Computerphile](https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA)
* [Code.Org](https://www.youtube.com/channel/UCJyEBMU1xVP2be1-AoGS1BA)
* [Brilliant.Org](https://brilliant.org/computer-science/)&#x20;

## Videos

* [Crash Course Computer Science, *Crash Course*](https://www.youtube.com/playlist?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo)
* [Map of Computer Science, *Domain of Science*](https://www.youtube.com/watch?v=SzJ46YA_RaA)

## General Reference

| Title                                                                                                                                      | Author(s)                 |   Edition  |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- | :--------: |
| [Computer Science Distilled](https://drive.google.com/open?id=1lpWLMdcGXQnHV-sB2aP07oWgqrG0srIA)                                           | Ferreria                  |   (2017)   |
| [Foundations of Computer Science](https://drive.google.com/open?id=1CUdvGahzvtCM3c9GEQBvGClvnzW64Etr)                                      | Forouzan                  |   (2018)   |
| [The Art Of Computer Programming: Volume 1, Fundamental Algorithms](https://drive.google.com/open?id=1J3jI4P1MRzRYHmZaBy5uhCik7Ele292H)    | Donald Knuth              | 3rd (1997) |
| [The Art Of Computer Programming: Volume 2, Seminumerical Algorithms](https://drive.google.com/open?id=1wkRNZxR8xp4emNv-3QJ3gIj9VQtD2_EY)  | Donald Knuth              | 3rd (1997) |
| [The Art Of Computer Programming: Volume 3, Sorting and Searching](https://drive.google.com/open?id=1v_oupnWGeLtTmOcJojEYBHVuYYLHJh9R)     | Donald Knuth              | 3rd (1997) |
| [The Art Of Computer Programming: Volume 4a, Combinatorial Algorithms](https://drive.google.com/open?id=1_BQyJ127DMrcMV8l_i-jbdGfOgpdLolc) | Donald Knuth              | 1st (2011) |
| [Essays in Computing Science](https://drive.google.com/open?id=1h9NkxRzFUC4V9yYzJDCxHfmLHnmswTIw)                                          | C.A.R Hoare & CB Jones    |   (1989)   |
| [Programming Pearls](https://drive.google.com/open?id=1rOf06WwpXhj07DB-F6KHr7kMJw4jLoMT)                                                   | Jon Bentley               | 2nd (2000) |
| [Concrete Mathematics: A Foundation for Computer Science](https://drive.google.com/open?id=1ZoNH96efRaWCIVTaGs4wmYJuu_ErqhJ_)              | Graham, Knuth & Patashnik | 2nd (1994) |
| [Structure & Intepretation of Computer Programs](https://drive.google.com/open?id=1oBMC4nuOaiVSCLK2-qlq0F8M8rWzAYOY)                       | Abelson & The Sussmans    | 2nd (1996) |
| [The Pragmatic Programmer: From Journeyman to Master](https://drive.google.com/open?id=1oBMC4nuOaiVSCLK2-qlq0F8M8rWzAYOY)                  | Hunt & Thomas             | 2nd (2010) |
| [Selected Writings on Computing: A Personal Perspective](https://drive.google.com/open?id=1jenl1eMyw-mG1vN5oSUPZuYAX1ArKvuL)               | Edsger W Dijkstra         |   (1982)   |
| [On Computability With An Application To The Entscheidungsproblem](https://drive.google.com/open?id=1PCzqv5qfSoWmoIbTGhrtmuUxWkWwzNKo)     | Alan M Turing             |   (1936)   |
| [A Protocol for Packet Network Intercommunication](https://drive.google.com/open?id=1-ftaggSsAjri7nYnrEuEuHAvJyEJJ2a9)                     | Vint Cerf & Bob Kahn      |   (1974)   |
| [Information Management: A Proposal](https://www.w3.org/History/1989/proposal.html)                                                        | Tim Berners Lee           |   (1990)   |
| [List Of Important Publications In Computer Science](https://en.wikipedia.org/wiki/List_of_important_publications_in_computer_science)     | Wikipedia                 |            |

## Contributing

* Kindly see the [guidelines](https://bpdc-acm.gitbook.io/openlib-cs/contributing) before contributing to this repo.
* You can also contribute by sharing!&#x20;
* Share this list with your batchmates, friends or anyone just interested in Computer Science!&#x20;
* By connecting more people with information, you are doing everyone a HUGE favor.
