├── 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 |
--------------------------------------------------------------------------------