# Computer Programming

## Overview

This is an introductory course to a holistic approach to computer science. Fundamental programming concepts including but not limited to `arrays`, `pointers`, `structs` etc. will be discovered through the [C programming language](https://bit.ly/1eSKXTB). The course requires that students use a *command line environment* when programming. Hence, having an understanding about concepts such as [`Linux`](https://en.wikipedia.org/wiki/Linux), [`telnet`](https://en.wikipedia.org/wiki/Telnet), [`vi editor`](https://en.wikipedia.org/wiki/Vi) etc. will prove to be essential.

## Navigation

* [Prerequisites](#prerequisites)
* [Textbooks](#textbooks)
* [Code](#code)
* [Videos](#videos)
* [Websites](#websites)
* [Articles](#articles)
* [Communities](#communities)
* [Apps](#apps)

## Prerequisites

This course has no prerequisites.

## Textbooks

| Title                                                                                                         | Author(s)                         |   Edition  |
| ------------------------------------------------------------------------------------------------------------- | --------------------------------- | :--------: |
| [The C Programming Language](https://drive.google.com/open?id=1KH0i1C8IQ5uKO4zGWRz_mAh4XbQvCaiT)              | Brian Kernighan & Dennis Ritchie  | 2nd (1989) |
| [The C Answer Book](https://drive.google.com/open?id=1gfgZmONMV6ZcG-lIQOe35jiMVqI-MS3p)                       | Clovis L. Tondo & Scott E. Gimpel | 2nd (1989) |
| [Problem Solving and Program Design in C](https://drive.google.com/open?id=13frawLX1gT_0JnKOiEOnSeoHp-kp9-qO) | Jeri R. Hanly & Elliot B. Koffman | 8th (2016) |
| [Let Us C](https://drive.google.com/open?id=1iaRbBFzDmjXrIHNnwdeBFqJ4kHPkn-cO)                                | Yashavant P. Kanetkar             | 5th (2004) |
| [C : The Complete Reference](https://drive.google.com/open?id=15mqmtbhY-Dv4mBr1nPEp9bPM3P1tDiZB)              | Herbert Schildt                   | 4th (2000) |

## Code

* [CPrograms, *EV*](https://github.com/eash-98/CPrograms)

## Videos

* [C Programming & Data Structures, *Neso Academy*](https://www.youtube.com/watch?v=4OGMB4Fhh50\&list=PLBlnK6fEyqRhX6r2uhhlubuF5QextdCSM) *(Full Course)*
* [CS50: Introduction to Computer Science, *Harvard*](https://www.youtube.com/watch?v=wEdvGqxafq8) *(Full Course)*
* [C Programming Tutorial, *Programming Knowledge*](https://www.youtube.com/watch?v=-CpG3oATGIs\&t=1609s) *(Full Course)*
* [Programming Foundations, *mycodeschool*](https://www.youtube.com/user/mycodeschool/playlists) *(Full Course)*
* [What is Computer Science?, *Art of the Problem*](https://www.youtube.com/playlist?list=PLbg3ZX2pWlgI_ej6ZhGd45-cPoWLZD9pT)
* [How Computers Work, *Khan Academy*](https://www.khanacademy.org/computing/computer-science/how-computers-work2)
* [Introduction to Algorithms, *Khan Academy*](https://www.khanacademy.org/computing/computer-science/algorithms)
* [Floating Point Motivation, *Computerphile*](https://www.youtube.com/watch?v=PZRI1IfStY0\&list=PLzH6n4zXuckqmf_xUcvU5caZVoctP2ehL\&index=8)
* [What do programmers actually do?, *Physics Girl*](https://www.youtube.com/watch?v=g4a7_HH9Wbg)

## Websites

* [Algorithms, *HackerRank*](https://www.hackerrank.com/domains/algorithms) *(Practice Programming)*
* [Project Euler](https://projecteuler.net/archives) *(Practice Programming)*
* [Bandit, *OverTheWire*](http://overthewire.org/wargames/bandit/) *(Practice Unix Commands)*

## Articles

* [List of Unix Commands](https://drive.google.com/open?id=1mn0AFgMwB7imCQtKmvIidyh9myzIxc_D)
* [Unix Cheat Sheet](http://cheatsheetworld.com/programming/unix-linux-cheat-sheet/)
* [Using vi, the Unix Visual Editor, *University of Washington*](https://staff.washington.edu/rells/R110/)

## Communities

* [r/programming](https://www.reddit.com/r/programming/)
* [GeeksforGeeks](https://www.geeksforgeeks.org/c-programming-language/)

## Apps

* [Py: Learn on the Go](https://www.getpy.com/mobile)
* [SoloLearn: Learn Any Programming Language](https://www.sololearn.com/)
* [Coding Planet](https://www.producthunt.com/posts/coding-planets)
* [Mimo: Learn To Code](https://getmimo.com/)
* [Algorithms: Explained and Animated](http://algorithm.wiki/en/app/)
