├── .gitattributes ├── .github └── workflows │ └── main.yml ├── CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | README.md merge=union 3 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | workflow_dispatch: {} 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | Awesome_Lint: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | fetch-depth: 0 16 | - run: npx awesome-lint 17 | -------------------------------------------------------------------------------- /CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at maddy@na.ai. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a 4 | [Contributor Code of Conduct](CONDUCT.md). By participating in this 5 | project you agree to abide by its terms. 6 | 7 | --- 8 | 9 | Ensure your pull request adheres to the following guidelines: 10 | 11 | - Resources should be: 12 | - Example-based. 13 | - Technically oriented. 14 | - Ideally, free and open source. 15 | - Exceptions may be made on a case-by-case basis, especially in categories lacking many free resources, provided the resources are explicitly noted to be paid, nonfree, or both. 16 | - Free and open source resources will always be prioritized above paid resources, and if enough free resources are listed, paid ones may be bumped off. 17 | - Reasonably up-to-date or applicable to today. Outdated resources will be periodically purged from the list. 18 | - Try to categorize resources appropriately. Sub-headings may be added or adjusted when necessary. 19 | 20 | Thank you for your suggestions! 21 | 22 | ## Updating your PR 23 | 24 | A lot of times, making a PR adhere to the standards above can be difficult. 25 | If the maintainers notice anything that we'd like changed, we'll ask you to 26 | edit your PR before we merge it. There's no need to open a new PR, just edit 27 | the existing one. If you're not sure how to do that, 28 | [here is a guide](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) 29 | on the different ways you can update your PR so that we can merge it. 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome by Example [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [![License](https://img.shields.io/npm/l/generator-awesome-list.svg)](https://www.apache.org/licenses/LICENSE-2.0) 2 | 3 | > A curated list of awesome example-based learning resources. 4 | 5 | ## Contents 6 | 7 | - [Languages](#languages) 8 | - [Clojure](#clojure) 9 | - [Elm](#elm) 10 | - [Go](#go) 11 | - [Haskell](#haskell) 12 | - [Java](#java) 13 | - [JavaScript](#javascript) 14 | - [Python](#python) 15 | - [Ruby](#ruby) 16 | - [Rust](#rust) 17 | - [Scala](#scala) 18 | - [Other Languages](#other-languages) 19 | - [Databases](#databases) 20 | - [Libraries and Frameworks](#libraries-and-frameworks) 21 | - [Tools](#tools) 22 | - [SaaS and APIs](#saas-and-apis) 23 | - [General Resources](#general-resources) 24 | - [Related Lists](#related-lists) 25 | - [Credits](#credits) 26 | - [Contribute](#contribute) 27 | 28 | ## Languages 29 | 30 | ### Clojure 31 | 32 | - [4clojure: 4Clojure is a resource to help fledgling clojurians learn the language through interactive problems](https://www.4clojure.com/) 33 | - [Clojure Koans: A set of exercises for learning Clojure](https://github.com/functional-koans/clojure-koans) 34 | - [Clojure Koans: Clojure koans are exercises meant to initiate you to the mysteries of the Clojure language](http://clojurekoans.com/) 35 | - [ClojureScript Koans: The ClojureScript koans walk you along the path of enlightenment to learning ClojureScript](http://clojurescriptkoans.com/) 36 | - [Core.logic Koans: Learn core.logic with koans!](https://github.com/sritchie/core.logic-koans) 37 | 38 | ### Elm 39 | 40 | - [Elm Koans: A set of koans for learning Elm](https://github.com/robertjlooby/elm-koans) 41 | - [Elm-TodoMVC: The TodoMVC app written in Elm, nice example for beginners](https://github.com/evancz/elm-todomvc) 42 | 43 | ### Go 44 | 45 | - [Go by Example: A hands-on introduction to Go using annotated example programs](https://gobyexample.com/) 46 | - [Go Koans: Koans for Go](https://github.com/cdarwin/go-koans) 47 | 48 | ### Haskell 49 | 50 | - [The Haskell Phrasebook](https://typeclasses.com/phrasebook) 51 | - [Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) 52 | - [Haskell Programming from first principles](https://haskellbook.com/) (⚠️ nonfree, proprietary) 53 | 54 | ### Java 55 | 56 | - [Java Koans: A framework and lessons to learn Java syntax and idioms in a logical sequence](https://github.com/matyb/java-koans) 57 | - [Neo4j tutorial: A koan-style tutorial in Java for Neo4j](https://github.com/jimwebber/neo4j-tutorial) 58 | 59 | ### JavaScript 60 | 61 | - [JavaScript Koans: Koans to learn JavaScript](https://github.com/mrdavidlaing/javascript-koans) 62 | - [JavaScript Koans: An interactive learning environment that uses failing tests to introduce students to aspects of JavaScript in a logical sequence](https://github.com/liammclennan/JavaScript-Koans) 63 | 64 | ### Python 65 | 66 | - [Learn Python: 📚 Playground and cheatsheet for learning Python](https://github.com/trekhleb/learn-python) 67 | - [Python Koans: Learn Python through TDD](https://github.com/gregmalcolm/python_koans) 68 | - [Pytudes: Python programs, usually short, of considerable difficulty, to perfect particular skills](https://github.com/norvig/pytudes) 69 | - [geekcomputers/Python: A large collection of simple example Python programs](https://github.com/geekcomputers/Python) 70 | 71 | ### Ruby 72 | 73 | - [Ruby Koans: Learn Ruby with the Edgecase Ruby Koans](https://github.com/edgecase/ruby_koans) 74 | - [Ruby Metaprograaming Koans (Inspired by EdgeCase RubyKoans)](https://github.com/sathish316/metaprogramming_koans) 75 | 76 | ### Rust 77 | 78 | - [A half-hour to learn Rust](https://fasterthanli.me/articles/a-half-hour-to-learn-rust) 79 | - [Rust by Example: Learn Rust with examples (Live code editor included)](https://github.com/rust-lang/rust-by-example) 80 | - [Rustlings: Small exercises to get you used to reading and writing Rust code](https://github.com/rust-lang/rustlings) 81 | 82 | ### Scala 83 | 84 | - [Scalania: Learn Scala by examples](https://github.com/jaceklaskowski/scalania) 85 | - [Scala Exercises: Scala Exercises is an Open Source project for learning different technologies based in the Scala Programming Language](https://www.scala-exercises.org/) 86 | 87 | ### Other Languages 88 | 89 | - [30 Days of Elixir: A walk through the Elixir language in 30 exercises](https://github.com/seven1m/30-days-of-elixir) 90 | - [APLcart: Find your way in APL](https://aplcart.info/) 91 | - [Coffeescript Koans: learn CoffeeScript by doing it](https://github.com/sleepyfox/coffeescript-koans) 92 | - [Dart Koans: Achieve enlightenment through failure](https://github.com/butlermatt/dart_koans) 93 | - [Deno by Example: Learn Web Programming in Deno by Examples](https://github.com/deepakshrma/deno-by-example) 94 | - [DLangKoans: An educational unit test suite for the D Programming Language](https://github.com/ilmanzo/DLangKoans) 95 | - [Erlang Koans: A set of koans for learning Erlang](https://github.com/patrickgombert/erlang-koans) 96 | - [FSharpKoans: A simple, fun, and interactive way to learn the F# language through testing](https://github.com/ChrisMarinos/FSharpKoans) 97 | - [FP Course: Learn Functional Programming concepts with the Haskell programming language](https://github.com/tonymorris/course) 98 | - [GNU Smalltalk Koans: A set of tests to teach you Smalltalk](https://github.com/sl4m/gnu_smalltalk_koans) 99 | - [Lisp Koans: Common Lisp Koans is a language learning exercise in the same vein as the ruby koans](https://github.com/google/lisp-koans) 100 | - [Lua Missions: Lua Koans, minus the Zen stuff](https://github.com/kikito/lua_missions) 101 | - [Writing a Game Boy Emulator in OCaml](https://linoscope.github.io/writing-a-game-boy-emulator-in-ocaml/) 102 | - [Perl Koans: A framework to learn-by-doing for Perl, with a heavy emphasis on testing](https://github.com/forcedotcom/PerlKoans) 103 | - [PSKoans: A simple, fun, and interactive way to learn the PowerShell language through Pester unit testing](https://github.com/vexx32/PSKoans) 104 | - [TypeScript exercises: A set of interactive TypeScript exercises](https://github.com/typescript-exercises/typescript-exercises) 105 | - [V by Example: V by Example is a direct introduction to V by using annotated program examples](https://github.com/v-community/v_by_example) 106 | - [Learn Vimscript the Hard Way](https://learnvimscriptthehardway.stevelosh.com/) 107 | - [Ziglings: Learn the Zig programming language by fixing tiny broken programs](https://github.com/ratfactor/ziglings) 108 | 109 | ## Databases 110 | 111 | - [MongoDB Koans: A way to learn MongoDB and the Ruby driver inspired by EdgeCase Ruby koans](https://github.com/chicagoruby/MongoDB_Koans) 112 | - [SQL Koans: A set of Koans to teach SQL](https://sqlkoans.com/) 113 | 114 | ## Libraries and Frameworks 115 | 116 | - [ReactJS Koans: Learn basics of React.js making the tests pass](https://github.com/arkency/reactjs_koans) 117 | - [Learning Tensorflow: Simple Tensorflow tutorials for learning by example](https://github.com/michaelmendoza/learning-tensorflow) 118 | - [OSMnx Examples: Usage examples, demos, and tutorials for OSMnx (OpenStreetMap)](https://github.com/gboeing/osmnx-examples) 119 | - [Quickserv Examples: Example applications to run with QuickServ](https://github.com/jstrieb/quickserv-examples) 120 | 121 | ## Tools 122 | 123 | - [Git Immersion: A guided tour that walks through the fundamentals of Git](http://gitimmersion.com/) 124 | - [GitHub Actions by Example](https://www.actionsbyexample.com/) 125 | - [Makefile Tutorial: Learn make by example](https://github.com/theicfire/makefiletutorial) 126 | - [Kubernetes for kids](https://www.cncf.io/phippy/the-childrens-illustrated-guide-to-kubernetes/) 127 | 128 | ## SaaS and APIs 129 | 130 | - [Apps Script Samples: Apps Script samples for Google Workspace products](https://github.com/googleworkspace/apps-script-samples) 131 | 132 | ## General Resources 133 | 134 | - [Exercism.io: Level up your programming skills with 3,450 exercises across 52 languages](https://exercism.io/) 135 | - [Learn X in Y Minutes: Scenic Programming Language Tours](https://learnxinyminutes.com/) 136 | 137 | ## Related Lists 138 | 139 | - [ahmdrefat/awesome-koans](https://github.com/ahmdrefat/awesome-koans/blob/master/koans-en.md) 140 | 141 | ## Credits 142 | 143 | - Numerous Koans were adapted from [ahmdrefat/awesome-koans](https://github.com/ahmdrefat/awesome-koans). 144 | 145 | ## Contribute 146 | 147 | Contributions via PR or issue are welcome! Read the [contribution guidelines](CONTRIBUTING.md) first. 148 | --------------------------------------------------------------------------------