---
layout: page
title: Get Started
description: Get-Started Page
group: nav-right
---
<!--
{% comment %}
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
{% endcomment %}
-->

<!-- Install SystemDS -->
<section class="full-stripe full-stripe--alternate">
  <div class="ml-container ml-container--vertically-centered ml-container--reverse-order">
    <div class="col col-6 content-group content-group--more-padding">
      <img src="/assets/img/robotTutorialSm.png" alt="What is Apache SystemDS?">
    </div>
    <div class="col col-6 content-group content-group--more-padding button-group">
      <h2>Install SystemDS</h2>
      <h4><strong>Level:</strong> Beginner &nbsp; | &nbsp; <strong>Time:</strong> 20 minutes</h4><br>
      <p>New to Apache SystemDS? Try our quick install guide that will walk you through setting up your environment and
        getting you up and going with SystemDS.&lrm;</p>
      <a class="button button-primary" href="{{ site.data.project.docs }}site/install">Install SystemDS</a>
    </div>
  </div>
</section>