├── LICENSE.md ├── README.md ├── apply.md ├── curriculum ├── SQL.md ├── data-science.md ├── experimental-cpp.md ├── experimental-js.md ├── experimental-software-development.md ├── java.md ├── learning-to-build.md ├── python.md ├── readme.md └── swift.md ├── mentors-guide.md ├── mentors-list.md └── projects.md /LICENSE.md: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mentorship 2 | 3 | These are the docs for the mentorship programme for developers being run currently 4 | on the [r/india](https://reddit.com/r/india) subreddit. 5 | 6 | We have the following docs available: 7 | 8 | - [Mentor's Guide](mentors-guide.md) 9 | - [Mentor List](mentors-list.md) 10 | - [Application Guide](apply.md) 11 | - [Suggested Projects](projects.md) 12 | 13 | # Slack 14 | 15 | We use Slack for everything. Request an invite from [here](https://slackipy.herokuapp.com/). 16 | 17 | # Idea 18 | 19 | This project grew out of the r/india's Weekly Coders & Hackers 20 | thread. A lot of people were interested in learning programming 21 | in those threads and this project is the result. 22 | 23 | - [Link to previous threads on reddit][reddit] 24 | - [Submit feedback on the threads][feedback] 25 | 26 | # License 27 | 28 | All content in this repository is available under a CC0 License. See [LICENSE](LICENSE.md) 29 | file for more details. 30 | 31 | 32 | [reddit]: https://www.reddit.com/r/india/search?q=Weekly+Coders%2C+Hackers+%26+All+Tech+related+thread+author%3Aavinassh&restrict_sr=on&sort=new&t=all 33 | [feedback]: https://docs.google.com/forms/d/1SckHqjbogIYemAduK8WTeyFu4-ia8hSS88JzYmxLAHE/viewform 34 | -------------------------------------------------------------------------------- /apply.md: -------------------------------------------------------------------------------- 1 | # Apply 2 | 3 | Fill in the [application form][form]. 4 | 5 | ## Pre-requisites 6 | 7 | - Its nice to know a programming language 8 | - Its better if you know what you want to learn 9 | - Make sure you have signed up on slack 10 | 11 | ## Expectations 12 | 13 | - You will meet with your mentor once a week 14 | - The mentor might prefer skype/hangouts/.. as well 15 | 16 | 17 | [form]: https://docs.google.com/forms/d/1C1-05MVmWO83zk8TV2PJDIBH99vyhfMlB4ZqOYl8dmQ/viewform "Application form" 18 | -------------------------------------------------------------------------------- /curriculum/SQL.md: -------------------------------------------------------------------------------- 1 | # SQL 2 | 3 | ## Prerequisites 4 | 5 | Understanding of set model. 6 | 7 | ## Course Materials: 8 | 9 | 1. Introductory Course 10 | - [Stanford's University's DB1 Minicourse - Intro & Relational Model](https://lagunita.stanford.edu/courses/DB/RDB/SelfPaced/courseware/ch-introduction/seq-vid-introduction/) will help immensely in understanding the set model of data. 11 | 12 | 2. Basics Courses: 13 | - [Khan Academy - Intro to SQL](https://www.khanacademy.org/computing/computer-programming/sql) 14 | - [Mode Analytics - SQL School](https://sqlschool.modeanalytics.com/the-basics/introduction/) 15 | 16 | 3. Books: 17 | - [Learn SQL The Hard Way](http://sql.learncodethehardway.org/book/) - book is partially done but has good exercises for a beginner 18 | - [A Primer on SQL](https://leanpub.com/aprimeronsql/) 19 | 20 | 4. Practice data sets 21 | - That Jeff Smith has an [excellent data set on Beer](http://www.thatjeffsmith.com/archive/2011/11/free-beer-or-how-to-get-free-demo-data-from-itunes/#beer) 22 | - You can make your own data set from your [iTunes library](http://www.thatjeffsmith.com/archive/2011/11/free-beer-or-how-to-get-free-demo-data-from-itunes/) 23 | - [Stack Exchange's Data Explorer](http://data.stackexchange.com/) is another great way to explore, expand and test your querying skills 24 | -------------------------------------------------------------------------------- /curriculum/data-science.md: -------------------------------------------------------------------------------- 1 | # Data Science 2 | 3 | ## Prerequisites 4 | College-level math 5 | 6 | ## Course Structure and Materials: 7 | 8 | 1. [Linear Algebra course by Prof. Gilbert Strang](https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D) 9 | 2. [Intro. to ML course by Prof. Andrew Ng](https://www.coursera.org/learn/machine-learning) 10 | 3. Understanding linear regression in detail - [Minitab resources](http://blog.minitab.com/blog/adventures-in-statistics-2/how-to-interpret-regression-analysis-results-p-values-and-coefficients) 11 | 4. Exploratory Analytics 12 | 5. Predictive analytics 13 | 6. [Basics of deep learning](http://neuralnetworksanddeeplearning.com/) 14 | 15 | 16 | Books: 17 | 1. Pattern Recognition and Machine Learning by Bishop et. al 18 | 2. Deep Learning Book by Ian Goodfellow 19 | -------------------------------------------------------------------------------- /curriculum/experimental-cpp.md: -------------------------------------------------------------------------------- 1 | # Modern C++ (Experimental) 2 | 3 | **Mentor(s)**: [frag-o-matic](../mentors-list.md) 4 | 5 | ## Course Intro 6 | This is an experimental course for introducing modern C++ based on a book/tutorial that I'm working. The course/tutorial is aimed at people with some exposure to programming concepts. Knowledege of C is not required to start with this tutorial. However, absolute beginners may face problems following along. 7 | 8 | The course intends to emphasize and introduce modern C++ practices and idioms over the traditional method of teaching C++, which involved introducing basic concepts of C first and building on top of this foundation to introduce C++. 9 | 10 | ## Table of Contents 11 | 12 | Topics and order in which they will be covered is documented [here](https://github.com/frag-o-matic/cpptutorial/blob/master/README.md) 13 | 14 | Speaking in broad terms, following aspects of the language will be covered: 15 | * Basic Language Features: With strong emphasis on new language features and idioms 16 | - `auto`, range-based `for` and lambda functions 17 | - Memory and Resource Safety, RAII and `unique_ptr`/`shared_ptr` 18 | * Features for facilitating Object Oriented Programming 19 | - `override` and `final` 20 | * Standard Library Features: Common Containers & Algorithms 21 | - `vector`s, `string`s and `map` 22 | - `find`, `count`, `sort` and `remove` along with the predicated versions 23 | * Overview of the older features of the Language: The `C` in `C++` 24 | 25 | ## Useful Books 26 | 27 | * [Programming: Principles and Practice Using C++](http://www.amazon.in/dp/0321992784/) by Bjarne Stroustrup (2nd Edition, Updated for C++11/14) 28 | * [Effective Modern C++](http://www.amazon.in/dp/9351109054) by Scott Meyers 29 | * [Thinking in C++ vol 1](http://www.flipkart.com/thinking-c-volume-1-with-cd-english-2nd/p/itmdwuafcz75hzjy) by Bruce Eckel 30 | * Language Reference: [The C++ Programming Language](http://www.amazon.in/dp/0321563840/) by Bjarne Stroustrup (3rd Edition, Updated for C++11) 31 | * Standard Library Reference: [The C++ Standard Library : A Tutorial and Reference](http://www.amazon.in/dp/8131791459/) by Nicolai Josuttis (2nd Edition, Updated for C++11) 32 | -------------------------------------------------------------------------------- /curriculum/experimental-js.md: -------------------------------------------------------------------------------- 1 | # Experimental-JavaScript 2 | 3 | **Mentor(s)**: [rhnvrm](../mentors-list.md) 4 | 5 | **Note**: This is an experimental course. 6 | 7 | The idea behind this course is to learn javascript and apply what you learn to implement projects and get you started with github. 8 | 9 | ## Course Intro 10 | 11 | This is an experimental course based upon [JavaScriptIsSexy](http://javascriptissexy.com/how-to-learn-javascript-properly/). This course is aimed at beginners. You will also learn HTML, CSS, jQuery, and Git. And you will build a simple HTML/CSS website, an interactive HTML/CSS/JavaScript website, and a moderately sophisticated JavaScript application and host it on [GitHub pages](https://pages.github.com/). 12 | 13 | ## Requirements 14 | 15 | * You will need to install Chrome on your system, but if you use Firefox, you will need to install the Firebug Add on for Firefox; use it for testing and debugging your code. You can learn about using the Chrome dev tools [here](http://www.youtube.com/watch?v=54IgWgoFToc) 16 | 17 | * Please install [git](https://www.codeschool.com/courses/try-git) on your system. 18 | 19 | * A [codeacademy](http://www.codeacademy.com) account. 20 | 21 | ## Resources 22 | 23 | ### Books 24 | You can refer to [Beginning JavaScript 4th Edition](http://www.amazon.com/gp/product/0470525932) 25 | 26 | ### Course Structure 27 | You will refer the course structure of [JavaScriptIsSexy](http://javascriptissexy.com/how-to-learn-javascript-properly/). 28 | 29 | 30 | ## What next after this course: 31 | * Chrome Extensions 32 | * NodeJS 33 | -------------------------------------------------------------------------------- /curriculum/experimental-software-development.md: -------------------------------------------------------------------------------- 1 | # Software Development (Experimental) 2 | 3 | **Mentor(s)**: [nemo](../mentors-list.md) 4 | 5 | **Note**: This is an experimental course based on a book that is still being written. 6 | 7 | The idea is to make intermediate developers better at development by helping them 8 | understand Software Development as it is practiced in the industry. 9 | 10 | This is not a course for learning programming. The book I'll follow is [The Joy 11 | of Software Development][josd] (*Disclaimer*: I'm currently working on the book). 12 | 13 | ## Things I plan to cover 14 | 15 | - [Automated Testing](https://josd.captnemo.in/content/tdd.html) 16 | - Continuous Integration 17 | - [Setting up a development environment](https://josd.captnemo.in/content/setup.html) 18 | - Agnostic and Cross Platform Development 19 | - Coding Style Guides 20 | - Best Practices 21 | - Unix 22 | - [Software Security](https://josd.captnemo.in/content/security.html) 23 | 24 | And other topics from the book as well. 25 | 26 | 27 | [josd]: https://josd.captnemo.in "Book Website" 28 | -------------------------------------------------------------------------------- /curriculum/java.md: -------------------------------------------------------------------------------- 1 | # Java 2 | 3 | ## Prerequisites 4 | 5 | None. 6 | 7 | ## Course Materials: 8 | 9 | 1. Introduction - [Oracle Documentation](http://docs.oracle.com/javase/tutorial/java/index.html) 10 | 2. Java Basics Courses: 11 | - [Princeton Intoduction to Java Programming](http://introcs.cs.princeton.edu/java/home/) 12 | - [Codeacademy](https://www.codecademy.com/courses/learn-java) 13 | 3. Books: 14 | - [Head First Java](http://www.headfirstlabs.com/books/hfjava/) OR 15 | - [Thinking in Java](http://www.amazon.in/Thinking-Java-4th-Eckel/dp/8131705579/) 16 | - [Effective Java](http://www.amazon.in/Effective-Java-Series-Joshua-Bloch/dp/0321356683/) 17 | 18 | ## IDEs 19 | 1. [Eclipse](http://www.eclipse.org/downloads/) 20 | - Offers a wide variety of plugins and therefore extensible. 21 | 2. [Netbeans](https://netbeans.org/) 22 | - The official(supported by Oracle) IDE. 23 | 3. [IntelliJ Idea](https://www.jetbrains.com/idea/download/) 24 | - Paid IDE, offers a community edition. -------------------------------------------------------------------------------- /curriculum/learning-to-build.md: -------------------------------------------------------------------------------- 1 | # Learning to build 2 | 3 | ## Prerequisites 4 | 5 | Understanding of at least one language. Knowledge of git is nice, but not essential. 6 | 7 | ## Plan 8 | 9 | The plan will be split into four phases. Each phase will have you build the same application in a different environment. You'll build a commandline tool, a ncurses based GUI, a application in your preferred GUI toolkit, and a webapp. 10 | 11 | You will build a ticket booking app. It will have tickets for events/movies/shows, etc. The app will allow the user to search with his preferences and book a ticket. 12 | 13 | #### Phase 1 - Commandline App: 14 | - The commandline app will allow a user to interactively book a ticket based on his search parameters (date, name, genre, type) 15 | - All data will be read from a rdbms database 16 | - When a ticket is available for the event the user wants he will have to answer certain questions to finish the booking 17 | - Payment will be handled via credits in the user's account 18 | 19 | ###### Details: 20 | - It will accept endless commands, i.e. I start the app, and see a menu. Through the menu I can either select "showing soon", "showing soon by genre", "showing soon by type", search. 21 | - When I select the first three options, I see table formatted output, and I can type next to go to the next page, or book using an event number/id 22 | - So on the listing page two I can say "book 3", or "book " 23 | - It then takes me into a booking view, where it asks me questions like number of seats, name of one person attending 24 | and then shows me a booking confirmation view that I have to confirm/reject. 25 | - A view where I can see my credits (everyone starts with a random number between 500 - 5000), each event between a number 150-300 26 | like movies are 250, plays 300, music even 150 27 | - In the search view I'm shown a help message describing keywords. For example "cost:200 genre:comedy type:movie" will show me all comedy movies that cost less than 200. 28 | 29 | #### Phase 2 - ncurses app: 30 | - All the above features 31 | - Uses the ncurses library to create a basic gui 32 | - User can add credits to his account using coupons 33 | - Coupons will follow a certain pattern in helping determine what its values are 34 | 35 | #### Phase 3 - Native-ish GUI app: 36 | - All the above features 37 | - User login using email 38 | - User can add credits to his account using a payment gateway 39 | - User can transfer credits to another user (using email) 40 | 41 | #### Phase 4 - Web App: 42 | - All the above features 43 | - Admin login 44 | - Admin can CRUD events 45 | - Admin can add credits to user 46 | -------------------------------------------------------------------------------- /curriculum/python.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | ## Prerequisites 4 | 5 | None. 6 | 7 | ## Course Materials: 8 | 9 | 1. Introductory Course - [Codeacademy Python](https://www.codecademy.com/tracks/python) 10 | 2. Python Basics Courses: 11 | - [Udacity - CS101](https://www.udacity.com/course/intro-to-computer-science--cs101) OR 12 | - [Coursera - Programming for Everybody](https://www.coursera.org/learn/python) 13 | - [edx - Learn to Program Using Python](https://www.edx.org/course/learn-program-using-python-utarlingtonx-cse1309x) 14 | 3. Books: 15 | - [A Byte of Python](http://www.swaroopch.com/notes/python/) OR 16 | - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) 17 | -------------------------------------------------------------------------------- /curriculum/readme.md: -------------------------------------------------------------------------------- 1 | # Curriculum 2 | 3 | Please read `What to teach` and `Curriculum` section from [mentors-guide](../mentors-guide.md). 4 | 5 | At the minimum the curriculum should include an online course/youtube playlist which covers following topics and a beginner friendly book: 6 | 7 | - basics (includes introduction, installing IDE, installing language packages etc) 8 | - variables 9 | - basic data types: String, Integer 10 | - Control statements: if, else 11 | - Looping statements: for 12 | - Functions: function definitions, parameters, function calling, return statement 13 | 14 | **Note**: If you are teaching something else than a programming, like `algorithms`, `linux` etc you can come up with own curriculum structure. 15 | -------------------------------------------------------------------------------- /curriculum/swift.md: -------------------------------------------------------------------------------- 1 | # Mentor(s) : codeOfRobin 2 | 3 | Hey there 👋!! If you're here, you probably wanna learn Swift(shocker!) . It's a really cool general purpose programming language built by  for their platforms (iOS, MacOS, tvOS, watchOS) and has been ported onto platforms like Ubuntu, Raspberry Pi and Windows. 4 | 5 | # Prerequisites 6 | 7 | None really. 8 | 9 | > Wait, don't I need a Mac? 10 | 11 | Not really. A mac would be nice , but these work too:- 12 | 13 | - Ubuntu 14.04 or Ubuntu 15.10. Refer to swift.org for download instructions. 14 | - An iPad with Swift playgrounds. 15 | - I've setup a raspberry pi with swift 2.2 in my room. Not really the best way, but it works ¯\\\_(ツ)_/¯ 16 | 17 | # Projects 18 | 19 | ## iOS dev - you need a Mac for this 20 | 21 | - How about a pomodoro app? 22 | - BYOP (Bring Your Own Project) 23 | 24 | ## Outside iOS 25 | 26 | - Slack bot using Vapor, a server side swift framework 27 | - A NBA client that gets data from stats.nba.com 28 | - Suggest something here... 29 | 30 | ## Advanced Topics 31 | - Let's port a command line utility (like [Enjarify](https://medium.com/@robertgrosse/my-experience-rewriting-enjarify-in-rust-723089b406ad#.g0714u7uv)) to swift and benchmark performance 32 | 33 | # Course Materials 34 | 35 | - [Stanford University CS193P](http://web.stanford.edu/class/cs193p/cgi-bin/drupal/) 36 | - Apple's own [Swift Education](http://swifteducation.github.io/), hosted freely on Gtihub Pages 37 | - [Treehouse Track](https://teamtreehouse.com/tracks/ios-development-with-swift-20) 38 | - [Udemy course](https://www.udemy.com/introduction-to-swift/) 39 | 40 | # IDEs 41 | 42 | - Xcode, from developer.apple.com 43 | - ~~[Here's](https://medium.com/@Aciid/hacking-atom-to-create-a-swift-ide-that-runs-on-linux-and-mac-c7d9520a0fac) how you might get it working on Atom.~~ A better link is [here](https://medium.com/@duliodenis/open-source-swift-on-ubuntu-6a01f4a32e4b#.o0vicz3ids) -------------------------------------------------------------------------------- /mentors-guide.md: -------------------------------------------------------------------------------- 1 | # Mentors 2 | 3 | Thank you for being a mentor. Here are the guidelines: 4 | 5 | - As a mentor, you are expected to spend minimum 10 minutes daily or an hour weekly 6 | - You are free to teach any programming language 7 | - You are free to teach intermediate/advanced topics 8 | - You are free to have more than one mentee 9 | - You are free to change your mentee anytime or exit the program entirely 10 | - You can select a mentee who lives in the same city as you and you can have pair programming sessions 11 | 12 | ## How to join 13 | 14 | 1. Decide which programming language or topic you want to teach 15 | 2. Check if curriculum already exists in `curriculum` directory 16 | 3. If not, come up with your own curriculum. Basic guidelines are outlined [here](curriculum/readme.md) 17 | 4. Check [projects](projects.md) and see if already existing projects can be done with the language you are teaching. A project `A` in `x` language may be more difficult to implement than in `y` language for a beginner; make sure you consider this 18 | 5. If not, come up with your own project 19 | 20 | **Note**: If there are no projects and curriculum for your topic/language, then you cannot be added to mentors list. 21 | 22 | Send a PR to [this](mentors-list.md) page and add yourself. You should include following info: 23 | 24 | - your Slack username or your Reddit ID 25 | - programming language you are willing to teach 26 | - availability hours 27 | - location (optional) 28 | 29 | We will exclusively use Slack and Github for everything, so you don't need to mention your Reddit ID anywhere. Or you can use an anonymous email for Slack and Github. 30 | 31 | ## What to teach: 32 | 33 | At minimum, you are expected to teach following: 34 | 35 | - basics (includes introduction, installing IDE, installing language packages etc.) 36 | - variables 37 | - basic data types: String, Integer 38 | - Control statements: if, else 39 | - Looping statements: for 40 | - Functions: function definitions, parameters, function calling, return statement 41 | 42 | And a basic project at the end. Suggested projects are mentioned [here](projects.md). If you want to teach a different project, then please send a PR to add your project. 43 | 44 | ## Teaching materials 45 | 46 | Please check the `curriculum` directory. If the language you want to teach is missing, then you have to come up with a plan and submit a PR. Without this, you cannot be added to `mentors-list` page. 47 | 48 | ## Curriculum 49 | 50 | All the curriculum is present in `curriculum` directory. If you want to add a new language, it should have following: 51 | 52 | 1. A very basic course, which just gives intro to the subject. Interactive courses are better. For example, Code Academy has a couple of courses which are intended for beginners. 53 | 2. An elaborate course which covers all the topics mentioned in `What to teach`. It is okay if you cannot find #1 for your language of choice, but #2 is absolutely required since mentee is expected to follow this and learn. 54 | 3. A beginner level book for mentee to follow. 55 | 56 | You are free to include youtube playlists, Udacity/Coursera courses etc. 57 | 58 | Apart from programming language, you can also teach other topics like `algorithms`, `linux` etc. However, you must come up with a curriculum. 59 | 60 | ## How to teach 61 | 62 | The first session to mentee should give him a basic intro. Once it is done, mentee will start learning on his own following the curriculum. You are expected to help the mentee whenever he is stuck. 63 | 64 | Whenever required and is appropriate, you should also teach mentee how to Google, [how to ask questions online](http://catb.org/~esr/faqs/smart-questions.html), how to make most of subreddits like /r/learnprogramming and how to use Stack Overflow. 65 | 66 | Once he has learnt the basics, guide him through the project. 67 | 68 | Remember, you are not expected to spend more than hour per week. Mentee should do everything, you should only help when he is stuck. 69 | -------------------------------------------------------------------------------- /mentors-list.md: -------------------------------------------------------------------------------- 1 | # Mentors List 2 | 3 | Mentors please enter your details in the following table: 4 | 5 | 1. Username: Your username on Reddit, Slack and Github. If you want to remain anonymous, use your Reddit ID and join Slack with anonymous email. 6 | 2. Topics: Topics include which programming language you are willing to teach and also other subjects like `algorithms`, `linux` etc. 7 | 3. When to contact: When should a mentee can contact you. 8 | 4. Location: Optional. Useful if you want to mentor someone who is in same city as you. 9 | 5. Currently Available: This will be `yes` if you are not mentoring anyone. And you can always mark it as `yes` if you are willing to teach multiple mentees. 10 | 11 | | Username | Topics | When To Contact | Location | Currently Available | 12 | |---------- |-------- |----------------- |---------- |--------------------- | 13 | | avinassh | Python | Anytime | Bangalore | No | 14 | | anirudhvarma12 | Java | Anytime(except fridays) | Delhi | yes | 15 | | sathyabhat| SQL/Python| Anytime | Bangalore | Yes | 16 | | rhnvrm | [Javascript](curriculum/experimental-js.md)| Sat-Sun | Delhi | No | 17 | | the100rabh | Python/Java/Android | Anytime | Bangalore | Yes | 18 | | nemo | [Software Development](curriculum/experimental-software-development.md) | Weekdays | Bangalore |Yes | 19 | | frag-o-matic | [Modern C++](curriculum/experimental-cpp.md) | Tue, Thu, Sat [8-9PM IST] | Bangalore |Yes | 20 | | hiemanshu | [Learning to build](curriculum/learning-to-build.md) | Anytime | Bangalore | Yes | 21 | | codeOfRobin | [Swift](curriculum/swift.md) | Anytime | Delhi/NCR | Yes | 22 | | raincrash | Python | Anytime | Bangalore | Yes | 23 | | Dawny33 | [Data Science](curriculum/data-science.md) | Anytime | Mumbai | Yes | 24 | -------------------------------------------------------------------------------- /projects.md: -------------------------------------------------------------------------------- 1 | # Projects 2 | 3 | The projects should be simple and it is better if they include all the topics covered as per curriculum. A project could be complex also, if mentor can do all the heavy lifting and provide proper interfaces/APIs. A project can be language specific or agnostic. 4 | 5 | 1. Reddit Bot: Auto Reply Messages 6 | 7 | Whenever someone messages you on Reddit, this bot will auto reply with pre defined message. 8 | 9 | 2. Reddit Bot: Notify On Hackers Thread 10 | 11 | This Reddit bot will notify you whenever a new `Weekly Hackers Thread` is posted. 12 | 13 | 3. Telegram bot: 14 | 15 | This bot will keep monitoring messages, respond to slash commands and reply to the user with specific data. For instance: A reddit news telegram bot that will fetch news from reddit and reply to the user 16 | --------------------------------------------------------------------------------