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.
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.
Once you are confident operating within Linux you may want to dabble in writing some of your own programs. One of the great things about computers is that we can automate them to perform tedious and menial tasks that would take us hours or days to complete, and a computer can do it almost instantaneously and without error. 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 - Julie 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, are written in these languages, and a basic understanding of how to read the code can help when troubleshooting issues.