Vidyaratna π
Vidyaratna (Jewel of Learning) is an initiative to provide a comprehensive curriculum for students to learn about computer science development and open source. This is a curated list of tutorials, guides and everything a beginner needs to know.
Table of Contents
- Linux
- CS50
- Android
- Ruby
- Ruby On Rails
- Python
- Presentation Skills
- Blogging
- Git
- Git with Software Development Platforms
- Web Development
- Cyber Security
- Qt Framework
Linux
Why Linux?
- Open source : apart from Linux's source code being readable to anyone, it also means that there is a whole community to support when you face issues plus it is secure comparing to other closed source OSes.
- Ease of development : programming and development in general, is a far better experience in Linux than in other OSes.
- You do things on your own : there is a lot of learning when you use Linux, you get to understand many things about an OS and a get a touch of how everything works under the hood. Read more about Linux here
Installation and Dual-booting
It is generally recommended to go with the latest LTS release of Ubuntu (18.04.2 at the time of writing). Ubuntu is one of the most popular Linux distros and is strongly recommended for beginners due to its large community and forums.
- Install Ubuntu desktop | Ubuntu tutorials
- How To Install Ubuntu Along With Windows - It's FOSS
- How To Dual Boot Windows 8.1 And Debian Jessie
- Installing Linux over Free DOS
Common issues faced during Installation
Common terminal commands and Bash Scripting
Desktop Customisation
Tips and tricks
- 16 Useful Linux Command Line Tips And Tricks
- Play This Game for Getting Familiar With a Command Line Editor
- Using Shell Scripting to Automate Linux System Maintenance Tasks
For a more detailed look into the Linux commands, Bash scripting and more, go through this book
Laptop Suggestions
Generally speaking, laptops that come preinstalled with Ubuntu are highly recommended. You can also get one without a graphics card to avoid issues with battery life and driver installation. It is recommended to research about the Linux support of a particular model before getting it. If possible try to stay away from the very latest, since these devices might not have open source drivers available so always check compatibility before you go for a specific model.
There are an overwhelming number of processors out there, it's best to go with a laptop with the latest - up to date generation of Intel i3, i5 or an i7 processor.
If there is need for a device with graphics card, it is highly recommended to get one with NVIDIA graphics to use the CUDA technology. Regarding RAM, any system with 8GB or more RAM is going to fine. And if you get one with 4GB, you can usually upgrade it to 8GB or more. Also if you have enough budget, consider getting a system with an SSD instead of an HDD.
CS50
Android
Programming Langauges
Java
- The Javaβ’ Tutorials (Official Documentation)
- Java 101
- Core Java Tutorial-JournalDev
- Programming by doing
Learn how to format Java code properly
Kotlin
Learn how to format Kotlin code properly
Dart
Learn how to format Flutter/Dart code properly
Application Development
Android Development Tools
- Install Android Studio | Android Developers
- Android Debug Bridge (adb) | Android Developers
- How To Setup And Use Fastboot
- Android Jetpack
Certification
Ruby
- Installing Ruby (Official Documentation
- Ruby Programming | The Odin Project
- Learning Ruby: From Zero to Hero
- Learn Ruby - Free Interactive Ruby Tutorial
- The Ruby Programming Language
Python
Automation with Python
Video Lectures
More Resources
- Learning Python: From Zero to Hero
- Google's Python Class | Python Education | Google Developers
- Python Tutorials | Real Python
Practicing Python
Presentation Skills
- How to make a good presentation with 8 pro tips | Biteable
- 5 Ways To Make a PowerPoint Presentation Awesome β Episode25
- Speaking Up Without Freaking Out | Matt Abrahams | TEDxPaloAlto
- How to give a good presentation
- 14 PowerPoint Presentation Tips to Make More Creative Slideshows
Blogging
Best Practices
Blogging Platforms
Git
Git with Software Development Platforms
Web Development
- HTML Tutorial | W3Schools
- CSS Tutorial | W3Schools
- Introduction Bootstrap
- JavaScript Reference | MDN
Frameworks
- Introduction Django Girls Tutorial
- Node JS Tutorial | W3Schools
- Getting start with Express JS
- Ruby on Rails Tutorial by Michael Hartl
- Learn React | KIRUPA
- Angular JS Tutorial | W3Schools
Cyber Security
Qt Framework
C++
- Awareness of syntax in modern C++ (C++11 and above)
- Knowledge of classes and core OOP concepts implemented using C++ (Encaspulation, Abstraction, Inheritance and Polymorphism)
- Awareness of how pointers, references work and what and why smart pointers are used in modern C++
- Using STL (Standard Template Library) - usage of all data structures could be practiced in Hackerrank or similar websites using STL for a better understanding.
- Basic awareness of concepts like Dynamic memory allocation, RAII, Templates, lambda expressions
Qt
Recommended:
- Test out the example applications given in Qt Creator, concepts like signal/slot mechansim must be understood by reading code.