Skip to content

A guide for beginners in Computer Science, Mathematics and Software Development. The repo contains short notes, code samples, and collections of learning resources. They are intended to serve as a diving platform for deeper studies or for review of the individual's own knowledge of the subject matter.

parth-io/Learn-CS-and-Coding

Repository files navigation

Learn CS and Coding

UPDATE - This repository is going significant reconstruction.

ye bois

Credits: Comic images in this repo from xkcd

Some amazing links

  1. Books (programming, theory, math)
    1. https://github.com/namvdo/CS-and-Programming-Books
    2. https://github.com/EbookFoundation/free-programming-books/
  2. Purely math stuff (with links to textbooks)
    1. https://github.com/rossant/awesome-math
  3. Getting a CS degree, for free
    1. https://teachyourselfcs.com/
      1. https://www.reddit.com/r/learnprogramming/comments/acuakt/ossu_or_teachyourselfcscom_for_self_learning_cs/
    2. https://github.com/nushackers/notes-to-cs-freshmen-from-the-future
    3. https://github.com/jwasham/coding-interview-university
    4. https://github.com/jasonsbarr/computer-science-program
    5. https://github.com/prakhar1989/awesome-courses
    6. https://github.com/cs-MohamedAyman/Coursera-Specializations
    7. https://www.reddit.com/r/learnprogramming/comments/akbeqk/the_open_source_computer_science_degree/
    8. https://github.com/salimt/Courses-
    9. https://github.com/ossu/computer-science
      1. ossu/computer-science#664
      2. ossu/data-science#61
    10. https://functionalcs.github.io/curriculum/
    11. http://blog.agupieware.com/2014/06/online-learning-intensive-bachelors.html?m=1 and http://blog.agupieware.com/2014/05/online-learning-bachelors-level.html
    12. https://github.com/farhankarim/MY-COMPUTER-SCIENCE-CURRICULUM
    13. MOOCs
      1. https://www.coursera.org/specializations/algorithms
      2. https://www.coursera.org/instructor/~250165
      3. https://see.stanford.edu/Course
      4. https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about
    14. https://isaaccomputerscience.org/topics
    15. A most useful summary - https://btholt.github.io/four-semesters-of-cs/

This repository is meant for me as a personal record of my journey into the realm of Computer Science, Mathematics and Software Development. However, to the legions of interested wannabe-programmers, you can use this page as a starting point.

The guiding principle of my notes is the creation of a concise record of what I have learnt - for example, if the definitions or detailed explanations of a certain topic can be easily Googled, then I will not include the definition or explanation. Including only the topic name will help me remember that I have learnt this topic and will prevent unneeded explanations from cluttering up the notes

See the following descriptions of the folders:

  • Beginnings - for the complete beginners to Python and/or coding
  • Coursera - Computer Science: Programming with a Purpose - my solutions to the course
  • HackerRank - my HackerRank solutions + links to other people's solutions (incomplete)
  • Linux and OSes - all about Linux
  • Java - my learning resources for Java
  • Advanced - incomplete as of yet

Fair warning to the uninitiated - Computer Science, which can be considered a subset of Math, is different from the fairly mundane and now easy-to-automate task of programming. And if you were wondering, learning never stops in CS. From new languages, to new operating systems, to new concepts such as functional programming or the Linux kernel or operating system architecture or linear algebra, if you do not challenge yourself on a daily basis, you are gonna just end up as a code monkey. Harsh truth.

This repo is in the form of code samples I created when learning CS and coding, and short notes that are intended to serve as a diving platform for deeper studies or for review of the individual's own knowledge of the subject matter. I also am posting collections of resources I have gathered.

My advice is, get started with Python first, then transition to OOP with C++ or Java or front-end with JavaScript. Then learn functional programming and others styles of programming in Lisp, Haskell, etc. Practise coding and participate in online competitions and hackathons to gain some experience. There are some amazing bootcamps out there, but programming is a largely meritocratic field and students can design their own curriculum at their own pace for free. Get used to Linux. The terminal is the coolest and snappiest feature of Linux. Period. Open-source programs are also comparable to proprietary ones!

Learning Pathways

  1. The latest and the hottest
    1. AI, ML, Data Science, Robotics, Quantum Computing
    2. Blockchain
  2. Cryptography and CyberSecurity
  3. The dull and the steady
    1. Operating systems and kernels
    2. Electronics, Instrumentation, Hardware
    3. Math and Algorithms
    4. Programming languages

Programming Hazards

  1. RSI
    1. Changed keyboard layout to Colemak! (QWERTY max. WPM: 94, current max. Colemak WPM: 48)
      1. http://xahlee.info/kbd/most_efficient_keyboard_layout.html
      2. http://xahlee.info/kbd/keyboard_remap_copy_cut_paste_undo.html
      3. https://www.quora.com/What-are-the-advantages-of-Colemak-vs.-Dvorak
      4. http://xahlee.info/kbd/dvorak_vs_colemak.html
      5. http://xahlee.info/kbd/dvorak_and_all_keyboard_layouts.html
    2. Buy an ergonomic keyboard
  2. Eye strain
    1. Dry eyes
      1. Safe Eyes extension, reminds you to take a break
    2. Blue light filter

Languages I wanna learn in depth

  1. Scripting
    1. Bash
    2. Perl
    3. Ruby
    4. Python
  2. OOP
    1. Kotlin (enhanced Java)
    2. Rust (sexy Java)
  3. Others
    1. Haskell
    2. Scala
    3. Lisp
    4. Typescript
  4. Frontend (yawn)
    1. HTML and CSS (boring, boring, boring)

Languages I'm decent/good at

  1. Javascript (Node.js, React)
  2. Java
  3. Python (Django)
  4. C++

Cloud Computing Software I've used

  1. Firebase
  2. AWS

List of programming software required

  1. For coding
    1. Power tools for pros
      1. Emacs (to learn org mode)
      2. Vim
    2. For the lazy and for the students
      1. Any text editor
      2. Notepad (for the Windows scrubs)
      3. Kate (from KDE)
      4. Atom
      5. Sublime
    3. For the working men
      1. Intellij
      2. VSCode
        1. For a Microsoft product, pretty solid
  2. For Markdown
    1. Typora - hands-down the best, but not open-source
  3. For LaTeX
    1. TeXWorks
    2. These two Intellij IDEA plugins work pretty well
      1. Texify
      2. PDF Viewer - or you can just use with Okular/any other PDF viewer, but Okular doesn't refresh automatically
  4. Terminal
    1. bash
      1. A quick Google search reveals a number of wondrous terminals emulators, each with their own special tools or animations. However, I use KDE's konsole as a daily driver
      2. Quick
    2. dash
      1. Debian's
    3. fish
      1. Looking good so far!
      2. This site concisely summarises why I like fish
        1. https://medium.com/better-programming/why-i-use-fish-shell-over-bash-and-zsh-407d23293839
    4. ksh
      1. Honestly I gave up on this thing, and I suspect many other beginners simply don't bother
    5. csh
      1. http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

List of some open-source software I have ever used (I've used many more, but I've forgotten and can't be bothered to remember)

  1. Calibre (for books)
  2. Productivity
    1. P3X Onenote (now Notion)
    2. LibreOffice (lol goes without saying)
    3. Xournal++
    4. Bitwarden
    5. ngrok
    6. Wireguard
  3. GIMP (photos)
  4. Audio and Video
    1. Subtitle Edit (for subtitles, duh)
    2. Audacity
    3. HandBrake
    4. Kdenlive
    5. Kodi
    6. VLC
  5. Browsers
    1. Vivaldi
    2. Firefox
    3. Brave
    4. Opera (partially open-source due to Chromium, but the Chinese factor is intriguing)
  6. Games
    1. SGT Puzzles Collection
    2. Battle for Wesnoth (what a lovely game)
    3. 0 A.D.
    4. WoT
    5. Halo: Reach
    6. OpenTTD
  7. All the KDE applications
    1. Kate (just bloody lovely) (update as of October 2021 - Kate in Kubuntu 21.10 is amazing)
  8. Sysadmin
    1. Optical media
      1. cdck
      2. qpxtool
      3. Brasero
    2. testdisk
    3. htop
    4. nmap

List of other apps I have used

  1. Spotify
  2. Discord
  3. Signal
  4. Chrome
  5. scrcpy
  6. instaloader
  7. youtube-dl (Useful for downloading any blob videos - Link 1 Link 2 VLC Stream Blob Best Hack)
  8. Google Earth
  9. Tesseract-OCR
  10. Openmediavault
  11. Amphetype
  12. gitui🦀

Firefox Extensions

  1. BypassPaywalls
  2. Grepper
  3. Plasma Integration

Chrome Extensions

  1. Ghostery
  2. Adblock
  3. VideoDownloadHelper
  4. WebRTC Network Limiter

About

A guide for beginners in Computer Science, Mathematics and Software Development. The repo contains short notes, code samples, and collections of learning resources. They are intended to serve as a diving platform for deeper studies or for review of the individual's own knowledge of the subject matter.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published