Course environment ================== In this course we will actively use a course environment that consist of modern tools and applications for: - doing the actual programming (Anaconda + cloud-computers) - sharing and saving your work online with version control (Git+GitHub) - communicating (Slack) - interacting during the lectures (real-time web-polls) We recommend that students would use their own computers during the lectures and exercises (requires installations), although it is not necessary. It is also possible to use cloud-hosted computers to learn to program and complete the course exercises, and there are also Python environment installed on the GIS-labs at the Department. The course environment comprises four components that will be used actively during the course: 1. `Cloud computing environment`_ 2. `Git + GitHub`_ 3. `Communication`_ 4. `Voting / polling during the lectures <#voting-and-polling>`_ Cloud computing environment --------------------------- The cloud computing environment described below is easy to use, but there are few things that you need to understand before starting to use it. The good news is that you can use the cloud computing environment with any computer at the university or your own computer. All you need is a reasonably fast internet connection, a web browser and some `remote desktop software `__, which is freely available for any computer. Computing Dashboard ~~~~~~~~~~~~~~~~~~~ The computing dashboard is a web interface for managing computer instances (described below). We will is use it frequently during the course. From the dashboard you will launch a new computer instance (i.e., start up a cloud computer) every time we are doing any programming during the lectures or practicals. You will do all the work in this course using such a computer instance. Computer Instance ~~~~~~~~~~~~~~~~~ A computer instance is basically a **temporary** computer running Ubuntu Linux (tailored for this course) that you can use in a similar manner as you would use your own computer. The difference is that the computer is located in the 'cloud' i.e., it is physically located and runs in somewhere else (on the servers of `CSC Finland `__) and you can use it remotely from any computer with an internet connection. Git + GitHub ------------ One of the core components of this course (besides learning programming) is to learn how to use `version control `__ with `Git `__ and storing your the codes (privately) in `GitHub `__. `Git `__ is a version control software (developped by a rather famous Finn named Linus Torvalds - he also created Linux!) that is used to track and store changes in your files (often source code for programs) without losing the history of past changes. Files in Git are stored in a repository, which you can simply think of as a directory containing files (or other directories) related to a single 'project'. Git is widely used by professionals to keep track of what they’ve done and to collaborate with other people. `GitHub `__ is a web based Git repository hosting service and social network. It is the largest online storage space of collaborative works that exists in the world. It is a place where you can share your code openly to the entire world or alternatively only to your collaborators working on the same project. GitHub provides a nice web-interface to your files that is easy to use. It is a nice way for exploring the codes and documentation or e.g., teaching materials such as those in our course. Both Git and GitHub provide many more features than the ones mentioned here, but for now we are happy to understand the basic idea of what they are. Communication ------------- During the course we will use actively a application called `Slack `__ for discussion and questions about the lessons and exercises. See more information from a :doc:`separate page how to use it`. Voting and polling ------------------ During the lectures we will ask you questions by using an easy-to-use polling-system and show you the results in real-time. You can access the polling system of our course from ``__ .. note:: The polling system is active only **during** the lessons. If you access the website outside the lecture times, you will most probably see only a white page without any content. Workflow -------- The figure below illustrates the basic workflow that we will be using throughout this course. We will be using actively all of the aforementioned components, i.e., we will: 1. Connect to the Computing Dashboard 2. Launch a Computer Instance 3. Connect to our temporary remote computer instance 4. Download the course materials from GitHub 5. Save our work permanently to GitHub after every lecture or practical exercise .. figure:: img/RemoteComputerInstance.png Page summary ------------ Now you should have (at least) a basic idea about the different components of our course environment and what they mean. You don't need to understand everything fully at this point as they will become clearer when we start using the course environment. Next, we'll introduce to you :doc:`how the cloud computing environment is used`.