Skip to content

Commit

Permalink
Bring the repository up to open source community standards (#17)
Browse files Browse the repository at this point in the history
* Create PULL_REQUEST_TEMPLATE.md

* Update Code of Conduct

* Rename contributing file and rewrite to better fit community guidelines

* Update readme

* Add missing commit guideline

* Add reference for Issue #18

* Add link to Issue #19

* Update readme for readability

* Improve Pull Request Template

* Improve Contributing Guidelines
 - Rewrote certain sections for readability
 - Rearranged the headers
 - Created links to Pull Request Guidelines
 - Create Commit Message Guidelines
 - Create Issue Guidelines
  • Loading branch information
Abhishek Bhattacherjee committed Jun 3, 2018
1 parent 116ba03 commit d3c18fd
Show file tree
Hide file tree
Showing 5 changed files with 169 additions and 62 deletions.
4 changes: 2 additions & 2 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ This Code of Conduct applies both within project spaces and in public spaces whe

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [email protected]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project lead at `[email protected]`. The project lead will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project lead is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by the project's leader.

## Attribution

Expand Down
111 changes: 111 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Contributing to CS Resources

First off, thanks for contributing to this book list (it's not as lame as it sounds)! Although suggestions are welcome from everyone and in every form, it needs to follow a little structure unless the end-goal is to descend into a chaotic list of books. Apart from book suggestions, there's a host of other things to keep in mind when contributing to this repository (I know, I know, it's just a list).

## Table of Contents

- [Code of Conduct](#code-of-conduct.md)
- [Why Contribute?](#why-contribute)
- [Ways to Contribute](#ways-to-contribute)
- [I want to suggest something like grammar or spelling!](#i-want-to-suggest-spelling-formatting-grammar-errors-or-basically-anything-that-isnt-related-to-books-or-material)
- [I want to suggest a book!](#i-want-to-suggest-a-book)
- [I want to add an entire topic!](#i-want-to-add-an-entire-topic)
- [I want to suggest better ways to organise this list!](#i-want-to-suggest-better-ways-to-organise-this-list)
- [I want to do something else!](#i-want-to-do-something-not-listed-above)
- [Issue Guidelines](#issue-guidelines)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Style Guide](#style-guide)

## Code of Conduct

This repository follows the Contributor Covenant Code of Conduct. By any form of participation, the contributor is expected to uphold the aforementioned code. Any unacceptable behaviour may be reported to `[email protected]`.

## Why Contribute?

In the [readme](readme.md/#cs-curriculum-textbooks-and-references), I had described that I was unable to find a suitable list of books to learn subject matter from. It is therefore the goal of this repository, not only for me but for anyone interested in any topic of Computer Science, to have a comprehensive list of textbooks to refer to. Such a list would be a great way to point to the sources that people already in the field use(d).

Apart from that, I also found a frustrating problem that has happened more than a few times now. My curriculum constantly recommended some book (obviously in the best interests of the curriculum) only for me to find out halfway through reading it that there's another _way_ better book that blows the current one out of the water, whereupon I no longer have enough time to complete the book that I want to. I hope that stops happening to me and everyone else out there. Hopefully, this is sufficient motivation for YOU to contribute to this repository! Go ahead to the next section!

## Ways to Contribute

It is pretty obvious that the list will not suit everyone's taste, so contribution is strongly encouraged. A diverse opinion would only be better for future readers.

### I want to suggest spelling, formatting, grammar errors, or basically anything that isn't related to books or material!

Come on over to the [relevant Pull Request Guidelines](#submitting-a-grammar-spelling-or-other-correction)! You sure as hell can expect your name in the **Contributors** list.

### I want to suggest a book!

Thank God you're here! Don't hesitate at all! Although it'd be great if you've read the book yourself and have thoughts to share, it's not necessary. Now there's two ways this could go :

- **The book you're suggesting isn't listed**
- Money! If it falls under an existing topic, go ahead and add it. But before that, remember that I like order. It makes our lives much easier. So, take a moment and go through the [book suggestion Pull Request Guidelines](#submitting-a-book-suggestion).
- If it's from a topic not listed, you may have hit the jackpot here! If you're lazy like me and only want to suggest a book, submit a Pull Request following the [relevant guidelines](#submitting-a-book-suggestion-for-a-non-existent-topic). But if you've got more than just a book to offer, [see below](#i-want-to-add-an-entire-topic).


- **The book you're suggesting is listed**
- Don't worry! Go ahead and tell me why you wanted to suggest the book in mind! You can also suggest relevant resources, courses linked on the web, perhaps your personal notes you made while studying, the possibilities are endless. Go through the [relevant guidelines](#submitting-book-related-info) and submit a Pull Request! Personal experiences have not been categorised as of now. A [relevant issue discussing the matter](https://github.com/AB1908/CS-Books/issues/19) has been opened. Join the discussion if you have ideas!

### I want to add an entire topic!

You. I love you. You can go ahead and add the whole damn thing in a fork, keeping the [Pull Request Template](PULL_REQUEST_TEMPLATE.md) in mind. Have a cookie. But make sure you're careful enough to follow the template properly. With great power comes great responsibility! Also go through [the Pull Request Guidelines](#submitting-an-entire-topic).

### I want to suggest better ways to organise this list!

Come to papa! You might have noticed that this project doesn't have a fancy discussion channel, so come submit your ideas over at Issue #18. Hopefully, it'll be a big help!

### I want to do something not listed above!

Well, er, submit an issue and (hopefully) follow up with a pull request? The kinds of issues I expect to see here are contributions towards the "Community Docs", but I expect surprises.

### Note

It is strongly recommended that the book(s) suggested be suitable to approach the majority of the topic they fall under. Such a responsibility is left to discretion of the contributor.

## Issue guidelines

- Include a relevant title describing the issue in short.
- Write a detailed description of the issue.
- Suggest your ideas to remedy the issue and submit them in a Pull Request if possible. Make sure to abide by [Pull Request Guidlines](CONTRIBUTING.md/#pull-request-guidelines).

## Pull Request Guidelines

A Pull Request can only be created once you have forked the repository and made changes to the fork. So if you haven't already, go ahead and fork it! Then, create a new branch labeled `relevant-topic-name` where you'll make all your commits and make changes according to the guidelines described below. All your commits should (ideally) follow the [Style Guide](#style-guide). You can directly view the template for formatting [here](PULL_REQUEST_TEMPLATE.md).

In case you wish to modify this template, first join the discussion on Issue #18 and propose the changes. This is because the changes (if accepted) need to be made to the entire list.

### Submitting a grammar, spelling or other correction

Make all the necessary changes in a fork and it'll be merged by the maintainer(s) ASAP! Please try to explain the mistake (unless it's a trivial spelling mistake) when submitting and be patient with the maintainer(s).

### Submitting a book suggestion for an existing topic

If the book isn't already in the list, submit a Pull Request with the book(s) added under the appropriate topic in either the "**Standard Textbooks**" or "**Alternative/Supplementary**" section. I shouldn't have missed standard textbooks, but if it does happen (it probably will), I strongly recommended **adding a reference to the source** declaring it as a standard textbook in the "**Notes**" section for the topic. See the [Pull Request Template](PULL_REQUEST_TEMPLATE.md) for the formatting guide to follow.

### Submitting a book suggestion for a non-existent topic

You'll need to make the topic anew while closely adhering to the formatting in the [Pull Request Template](PULL_REQUEST_TEMPLATE.md). It's not necessary that you submit the topic in complete, but make sure to make the proper formatting before any book suggestion, no matter how small.

### Submitting book-related info

Personal experience with a book is extremely valuable here. Submit a pull request having made the following changes in a fork:

- All personal experiences and other info should go in a separate file labeled [`personal-experiences.md`](personal-experiences.md). Simply look for the appropriate topic header, add the relevant `[#]`(be a little careful with this one) and write away! Don't forget to tag yourself at the end with your GitHub handle!

If you have other info like some helpful resources for the book, a guide on what to read, a relevant instructor's course, personal notes, errata or anything else at all that would be helpful to future readers, please add them in the "**Notes**" section under the relevant topic, with an appropriate `[#]`. Make sure you add your link in the correct category (with the page title/appropriate description) under "**References**" too! See the [Pull Request Template](PULL_REQUEST_TEMPLATE.md) for the formatting guide to follow.

### Submitting an entire topic

This isn't as hard is I've built it up to be but it takes a good chunk of time. In your fork, make commits after every stage adhering closely to the [commit style I've described](#style-guide). If you're unsure of a workflow or why I recommend that commit style, take a look at an [old commit of mine](https://github.com/AB1908/CS-Books/commit/83d0dd8ca9ab9a2fa15a4dc459b83e08947767b3) to get an idea. I usually make changes incrementally and then while merging the branch, I squash all the commits so they look like one nice list of steps I took. You **must** go through the [Pull Request Template](PULL_REQUEST_TEMPLATE.md), otherwise I'm going to have one hell of a time merging your Pull Request. Once you're done, you deserve an extra special thanks for your effort.

## Style Guide

The formatting style for pull requests is described in the template linked above. Apart from those, I would also strongly encourage good commit messages in adherence to the following:

- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- No period/full stop after the commit message
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line

Further resources on how to write good commit messages can be found [here](https://chris.beams.io/posts/git-commit/), [here](https://gist.github.com/robertpainsi/b632364184e70900af4ab688decf6f53), and [here](https://hackernoon.com/what-makes-a-good-commit-message-995d23687ad). If you're unfamiliar with Git in general, I'd recommend reading through the [Official Pro Git Book](https://git-scm.com/book).
54 changes: 54 additions & 0 deletions PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
Note that the three spaces before text with two spaces at the end allows for paragraphs without line breaks (if this is unclear, you may want to brush up on your [Markdown syntax](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)).

The "**References**" section already exists, so make sure you add it in the correct place. Also, don't forget to add the topic heading in [readme.md](readme.md) as well as [Curriculum.md](Curriculum.md)!

## Topic Heading Here

### Standard Textbooks

1. **Book1** - Author1 and Author2 [1]
2. **Book2** - Author3 [2]

### Alternative/Supplementary

1. **Book3** - Author4
2. **Book4** - Author5, Author6 and Author 7 [3]

### Notes

[1] - This is a brilliant book recommended by [X website](x-website). Used as the reference for

- [CSxxx at UXX](course-hyperlink)
- [CSxxx at UXX](course-hyperlink)

[2] - Used as the reference for

- [CSxxx at UXX](course-hyperlink)
- [CSxxx at UXX](course-hyperlink)

[3] - Used as reference for [CSyyy at UXYZ](course-hyperlink) where some famous instructor teaches.

# References

- [XYZ Curricula at XYZ University](hyperlink-to-curricula)

## Websites

[some-wikipedia-page](with-wikipedia-link-here)
[some-other-page](with-link-here)

## Courses

- Topic-name

[CSXXX - Full-univ-name-here](hyperlink-to-course)
[CSXXX - Full-univ-name-here](hyperlink-to-course)
[CSXXX - Full-univ-name-here](hyperlink-to-course)

## Resources

- [awesome-resource](awesome-link)

# Miscellaneous Links

- [Something-awesome](awesome-link)
58 changes: 0 additions & 58 deletions contribution.md

This file was deleted.

4 changes: 2 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# README

This repository is intended to create and maintain a comprehensive list of textbooks and useful references for a Computer Science and Engineering Curriculum. This is an ongoing effort, and contributions, though welcome, need to abide by the contributing guidelines so as to maintain order. In case you wish to contribute, please find the PR template at [contribution.md](contribution.md). The current default branch is `dev`, which will be built upon, whereas `master` will eventually contain a complete curriculum.
This repository was created to maintain a comprehensive list of textbooks and useful references for a Computer Science and Engineering Curriculum. In case you wish to contribute, please go through [the contributing guidelines](CONTRIBUTING.md). The current default branch is `dev`, which will be built upon, whereas `master` will eventually contain a complete curriculum.

# CS Curriculum Textbooks and References

Being an avid book reader, I have found it rather difficult to find a comprehensive list of textbooks to use for reference and for self learning. I have, therefore, set out to create and share it for all who wish to find the same. I have also linked courses that I could find across the web, most often the links from the first two pages of Googling, so that one may find a relevant guide to the particular course. All linked course pages often have one more additional references should the reader wish to engage in more depth with the topic at hand. This list is by no means comprehensive, though it is an eventual target. There are also video lectures of many of courses which are better located at [Computer Science courses with video lectures](https://github.com/Developer-Y/cs-video-courses).
Being an avid book reader, I have found it absurdly difficult to find a comprehensive list of textbooks to use for reference and/or self learning. I have, therefore, set out to create and share it for all who wish to find the same. I have also linked courses that I could find across the web, most often the links from the first two pages of Googling, so that one may find a relevant guide to the particular topic. All linked course pages often have one or more additional references should the reader wish to explore the topic in greater depth. This list is by no means comprehensive, though it is an eventual target. There are also video lectures of many of courses which are better located at [Computer Science courses with video lectures](https://github.com/Developer-Y/cs-video-courses).

- [Computer Organisation and Architecture](Curriculum.md/#computer-organisation-and-architecture)
- [Theory of Computation](Curriculum.md/#theory-of-computation)
Expand Down

0 comments on commit d3c18fd

Please sign in to comment.