The course introduces Unix-like operating systems, and shows how to set up a scientific programming environment in such systems. The topics include bash scripting, introduction to best practices in code maintenance (version control, documentation), debugging techniques, build systems and basic rules of cluster usage. We also review the C language and use it topractice the topics mentioned above.