Essential Tools. Course introduction. This course offers an introduction to two important topics for developers; version control systems and build automation tools. The course includes video lectures, a lot of supplemental readings, and some demonstration. For version control, we will discuss what version control is, the concepts common across most version control systems. We will list several version control systems that are in use, and we will conclude with learning about many of those concepts using Apache Subversion as our exemplar. Next, we will talk about build automation tools. We will start by mentioning the history of such tools and why we even care about the topic. Then we'll look at Apache Maven, one of the build automation tools commonly used by the Java ecosystem, and one that is used in several advanced Java specializations offered by LearnQuest. The course starts out with an introduction to version control. What is version control? Why do we care? There are many implementations but what concepts do they have in common? Then we'll go over the idea of version control in more depth, using subversions, command-line interface, and the TortoiseSVN GUI to illustrate them. If you were using an integrated development environments such as Eclipse, you would use its GUI for example, provided by Subclips, but the concepts will all be the same. If you're using a different VCS, such as Git, most of the concepts again, remain the same. The key concepts are what is stored, how do we see it? How do we make, see, and manage changes? How do we see and manage differences on a larger scale, such as between versions? How do we manage conflicts that arise when multiple people are working on code? How do we minimize disruption when multiple people are working on multiple versions concurrently? Next, we will look at Build Automation Tools. Modern software systems are complex. We want to avoid mistakes as well as streamline processes. To do so, we automate them. We'll talk about how this all got started, and then we will look at the Apache Maven build automation tool. My personal preference is Apache Ant, but Apache Maven is widely used in the Spring ecosystem, as well as other areas. We'll look at a Maven installation, at a simple Maven project, at the core project object model, the palm that drives Maven. We'll look at how Maven uses goals, phases, and lifecycles to organize a build. We'll look at the plug-ins that implement the goals. We'll see how Maven offers a key feature that drove much of its adoption, dependency management, and we'll conclude with a live demonstration of building a project with Apache Maven. As with other courses in this specialization, the goal is not a deep dive into either version control or build automation, but to prepare you at the conceptual level for encountering version control and build the automation in other contexts such as your workplace or another course, such as found in LearnQuests Spring specialization.