diff --git a/c-lang.md b/c-lang.md new file mode 100644 index 0000000..6bf59e1 --- /dev/null +++ b/c-lang.md @@ -0,0 +1,83 @@ +## DnH C Mentorship + +Goals: + +- Learning C +- For intermediate learners, preferably with some exposure to programming +- Self-Driven with support & mentorship from community + +--- + +Why C?: + +- Simple (not easy), fast & portable language which is close to the computer +- Great for gaining an understanding of what makes system internals tick +- Popular in several fields of computing & programming: + - Competitive Programming + - Operating Systems, Drivers & other low-level software development + - Embedded & Edge Device Programming + +--- + +Learning Process: + +- Async Learning & Virtual Mentoring +- 5-2 Model +- We will start on a the weekend, say, on a Saturday evening with a face to face call for dissemination of study & reference material for the initial topic +- Learners will have a period of 5 days to go over this material and try out exercises +- The next Saturday evening, we will get together for Office Hours to focus on clarifying questions and doubts that the learners have +- During the Office Hours call, materials for the next topic will be shared +- repeat! +- Approx. duration for the entire programme would be 6-8 weeks + +--- + +Expectations: + +- Workload of typically 15-20 hrs/wk, but no more than 25hrs/wk. + - Feel free to log onto leverage online resources and Community Mentoring if you find yourself stuck or needing guidance. +- Able to independently go over the study material for the week, attempt to solve questions and problems presented there +- Able to Google for stuff and leverage StackOverflow for learning +- Engage with the community via Slack and help each other +- Utilize these “Office Hours” for any clarifying questions or additional explanations + +--- + +Material: + +- We will follow the [Modern C](https://modernc.gforge.inria.fr/) book by Jens Gustedt. + - We will be focusing on levels 0, 1 and 2 and briefly touching on level 3 +- Additional Material & References + - [MIT CS50](https://cs50.harvard.edu/x/2020/weeks/1/) (Weeks 1 to 5 are about C) + - [Essential C](http://cslibrary.stanford.edu/101/EssentialC.pdf) + - [GNU C Programming Tutorial](http://crasseux.com/books/ctutorial/) + +--- + +Weekly Breakdown: + +| Date | Chapters | +| ------------- | ------------- | +| 14th Aug | 0.1, 0,2 | +| 21st Aug | 1.3, 1.4 | +| 28th Aug | 1.5, 1.6 | +| 4th Sep | 1.7, 1.8 | +| 11th Sep | 2.11,2.12,2.13 | +| 18th Sep | 2.14,3.15,3.16 | +| 25th Sep | 3.17,2.9,2.10 | + +--- + +Additional Resources: + +- Programming Environment Setup + - [Windows](https://www.cs.auckland.ac.nz/~paul/C/Windows/index.php) + - [MacOS](https://www.cs.auckland.ac.nz/~paul/C/Mac/index.php) + - [Linux](https://www.cyberciti.biz/faq/howto-compile-and-run-c-cplusplus-code-in-linux/) +- Alternatively, use the [Online environment](https://www.onlinegdb.com/) to test out code snippets & solve exercises + +--- + +Community Mentoring: +- Feel free to log onto the [DnH slack](https://dev-s.slack.com) and ask questions in `#c-lang` +---