Programming Languages
Table of Contents
Python
A high level, interpreted, dead-simple, reads-like-english programming language used for a multitude of tasks, from Machine Learning/Data Analysis to deploying Full-Stack Websites.
The official website offers further resources, including talks, podcasts, conferences and the like.
Tutorials
-
Sentdex Python Tutorial Series: A collection of short videos that deal with everything from installing python, through loops, control flow, functions, upto usage of the package manager pip. Beyond this, the tutorial deals with specific use cases which may be skipped. It is highly recommended that you code along with the videos.
-
Python for everybody series on Coursera or py4e.com: This Specialization builds on the success of the Python for Everybody course and will introduce fundamental programming concepts including data structures, networked application program interfaces, and databases, using the Python programming language. In the Capstone Project, you’ll use the technologies learned throughout the Specialization to design and create your own applications for data retrieval, processing, and visualization.
-
Corey Schafer Python Series: One of the most elegant courses on python. Covers python from basic to intermediate. Covers topics like generators, threading on top of all the basic concepts. It is highly recommended that you code along with the videos.
IDEs
- JetBrains’ PyCharm: Fully featured Python IDE, offering powerful autocomplete, virtual environment support, comprehensive debugging, and notebook support. Users of other JetBrains IDEs will feel right at home. A student email-id will give you free access to the Professional Version that includes a specific mode for data science.
- Jupyter Notebooks/ JupyterLab: Code in true interactive fashion, as you execute blocks and see outputs of unfinished code, which will help you code further. Runs in a browser, and a pip install is all that is required to get it.
- vscode: A lightweight, extensible IDE with support for autocomplete, error-checking,git, ssh support and ipynb notebooks. It has a very powerful debugger and a long list of useful extensions/plugins. This is the favourite IDE of most of the developers and data scientists.
Tools
- Environment/Dependency management: Conda or venv are typically used to isolate multiple python environments, so you don’t end up with conflicting dependencies for different projects. This is highly recommended. It may seem like an inconvenience at first, but will save you a lot of time later on. Conda is recommended for ML/DL related work, because this can handle CUDA and CUDNN within the Virtual Environment, and a system-wide install is not required. Conda environments take up much more space than their venv counterparts.
Notable Libraries:
- NumPy: Handles all sorts of Linear Algebra, and it’s data-types are used in most other mathematical libraries.
- Matplotlib: Plots and Visualizes all of your data.
- Pandas: Can be used for handling data files such as .csv, .xlsx. Has deep integration with NumPy and Matplotlib.
Inbuilt Libraries
It is highly recommended to take the time and get familiar with the standard library (of sorts) of Python. The included tools like itertools, collections, and others. They provide implementations of all sorts of cumbersome things, like sorting, min/max, list comprehension and others, as functions. These will help you write code in true Python fashion, abstracting out everything but your main business logic. Before writing cumbersome/boilerplate code, Google.
C++
Tutorials
- C++ Tutorials - Tutorialspoint
- Why this Tutorial? Live Online Coding !!!
- What to keep in mind? This tutorial only helps you understand the syntax of C++. To effective, one must follow this tutorial up with sources.
- Modern C++
- Why this Tutorial? Excellent playlist for modern C++ (C++ 17 and afterwards) with a basic introduction to CMake build system. Provides lucid explanation of advanced topics like Smart/Shared pointers, Memory management. Earlier version of this course can be found here.
Books and Reference Material
- Effective Modern C++
- Why this book? The effective C++ series of books have been hailed as one of the best references for good C++ coding practices. It also provides a good introduction to several new language features.
- Tour of C++ Bjarne Stroustrup
- Why this book? This provides the user with a general overview of C++. It talks about the different features about the language and how they can be used to support different programming paradigms.
- What to keep in mind? This book is not meant for beginners of C++. It is also not a complete reference for the language.
Channels
Tools
- Compiler Explorer: Online C++ compiler. It lets you compile small code snippets and look at the generated assembly code. It supports different compilers across various architectures ranging from x86 to Arduinos.
- JetBrains CLion: One of the best C++ IDEs. CLion works on CMake making it easy to use with roscpp.
Java
Java is a powerful programming language that has greatly impacted the development world and is used in all types of technologies. Java can be used to make apps for the web and mobile!
Check out the official website to find out more!
Tutorials
-
w3schools: w3schools is a really great resource to learn any part of web development. In this tutorial, you will learn the basics of Java, important programming concepts such as methods and classes, and real life projects you can make yourself!
-
Java Code Academy Course: Learn Java in this hands on course. In this course, you’ll learn important Java concepts such as variables, arrays, strings, and more! By the end of the course, you will have made 6 projects to showcase your new skills!
Books and Reference Material
-
Java in Easy Steps: Easy to follow book that explains the basics of Java with fun and interesting graphics.
-
Head First Java: Classic book covering Java that is essental for any beginner programmer.
Channels
-
TheNewBoston Youtube Channel: This youtube channel is jam packed with tons of resources on learning Java. Are you a beginner? Start with the “Java (Beginner) Tutorial” playlist. When you feel you are ready, move onto to the “Java (Intermediate) Tutorial” playlist to learn some more advanced topics!
-
Derek Banas: Channel with crash course videos teaching you the basics of every programming language!
IDEs
- Eclipse: One of the most well known IDEs for Java.
- JetBrains IntelliJ IDEA: A powerful IDE with an extensive library of features. You can get it for free for non-commercial projects as a student!