All CARC systems run Linux as their operating system and are interacted with in a command-line interface (CLI) as opposed to a graphical user interface (GUI) where you can point at and click on things with a mouse.In order to effectively navigate and efficiently utilize CARC systems we recommend you become familiar with basic Linux commands and navigation in a CLI. Although the command line environment can look intimidating at first, you will soon learn that because Linux/Unix were written by scientists for scientists, these tools are extremely powerful and you can become more productive using them than you thought possible. There are many resources freely available for learning this material, and since they have been written better than CARC could hope to do, we will now simply direct you to some of our favorite learning resources.
Resources for learning Linux
Below are some great resources for learning the basics of operating in a Linux CLI environment:
- Software Carpentry - This website has lessons that help develop a strong foundation in Linux, especially lesson 1, but the other lessons are helpful in learning some very powerful tools found in Linux.
- Linux Journey - There is a lot of overlap between Linux Journey and Software Carpentry, but some may find the approach of Linux Journey more accessible.
- Greg's Bash Wiki - One of the classic resources on utilizing Bash, the default shell for interacting with a Linux system.
Resources for learning programming languages
As you become competent with a Linux shell, you will begin to notice deficiencies and limitations. Scripting languages and formal programming languages have the necessary tools for more elaborate or complicated tasks. They can also be significantly faster than just a shell script, and so you may find that you need to learn them. Alternatively you may be working with an existing code base in a language you are not familiar with. Below are resources for learning some of the more common programming languages.
- Python - Python is one of the most popular languages for scientific computing and is a great skill to learn, even if you are just trying to debug someone else's code. Rosalind has some really great lessons focused on solving actual problems in order to learn to program in Python. Lessons range in difficulty from very simple to rather advanced.
- Julia - Julia is another powerful programing language popular for scientific computing.
- Go - Go is a programming language developed by Google.
In addition to these more modern languages, a decent foundation in the classics like Perl, C, C++, and Fortran can be beneficial to learn as a lot of software, both old and current, is written in these languages, and a basic understanding of how to read the code can help when troubleshooting issues.