7. Programming Basics#
7.1. Linux Shell#
Linux Shell is a powerful tool that allows users to execute complex tasks using a few commands or shell scripts. It is an essential tool for advanced computing especially on HPC systems.
The Unix Shell by Software Carpentry. A quick guide to the unix/linux environment and learn how to navigate files and directories. There are more advanced topics on shell scripts. A Spanish version can be found here.
7.2. Git#
Git is a version control tool that keeps track of history of files and make the work reproducible. It is recommended for lab members to use in their everyday tasks. Use GitHub as a platform for managing your projects.
Version Control with Git by Software Carpentry Lesson on basics of Git developed by Software Carpentry. There is also a Spanish version.
Git Tutorial by Andrew Hamilton quick tutorial on Git and Github. Written for Windows users.
I also wrote a simple Git tutorial post. The original version was created using Obsidian Slides, which is good for presentation.
7.3. Python/Jupyter#
Python is an everyday tool that our lab will be using. It is also one of the most popular programming language for data analysis. If you have no prior experience with Python, I suggest you start with the following learning materials. Here are a list of online, free Python resources that I found useful:
Programming with Python. This lesson is developed by Software Carpentry with a focus on data analysis.
Learn Python with Jupyter Published by the official Jupyter community. Focus on the computational thinking development. Good for beginners without any programming experiences.
Python Data Science Handbook Developed by Jake VanderPlas (Google). Provides quick introduction to Python and a few commonly used packages designed for data science. The nice thing about this book is that it provides the interactive Jupyter notebooks, which makes learning more fun! This book is for people with some background in Python. It also has a companion book (A Whirlwind Tour of Python, also free!) on a quick introduction to Python if you have prior experience in other programming languages.
Python for Data Analysis By Wes Mckinney. This book focuses on data analysis using Python. All notebooks can be found on GitHub
30 Days of Python by Asabeneh. This 30 days programming challenge is a step-by-step guide to learn the Python language. It comes with tutorials and YouTube videos.
ChatGPT Though this is not a book, it can be a great AI assistant for generating codes for you. The caveat is that you need to have some basic understanding of python to test if the AI generated code is correct or not.
7.4. Markdown#
Markdown is a simple markup language that helps with formatting fonts. It is open-source and can be edited by any plaintext editor. It is widely used on GitHub to create readme files and inside Jupyter Notebooks for documentation. In fact, you can build an entire book with nice formatting using markdown files (e.g., Jupyter Book).
I have been using it daily for creating notes, especially those with codes. See a quick tutorial that I wrote.
7.5. Text Editor#
A text editor on Unix-like system that helps with editing on remote servers. It will enhance your productivity like never before. My personal favorite is Vim and NeoVim. Emacs is a good alternative, but is not my favorite. There are other editors including nano
that are simple to use but with less functionality.
If you prefer a text editor with nice user interface, try Visual Studio Code . It offers extensive flexibility and a large selection of extensions. It is one of my favorite code editing and debugging tools.
7.6. Resources#
CHPC seminars: These are web seminars presented by the Center For High Performance Computing at University of Utah. Although many of those seminars are centered around HPC system, there are some useful hands-on tutorials of Linux, Git, and Python/R.
LinkedIn Learning : Free one month trial. There are some lessons on Linux and Python.
Software Carpentry: They offer both in-person workshop and online lessons which are great to get started with Git/R/Python