www.outlier.org Open in urlscan Pro
23.227.38.65  Public Scan

Submitted URL: http://outlier.org/
Effective URL: https://www.outlier.org/
Submission Tags: tranco_l324
Submission: On April 13 via api from DE — Scanned from CA

Form analysis 9 forms found in the DOM

<form novalidate="" class="max-w-[400px] mx-auto md:max-w-full" x-data="{
              loading: false,
              showErrors: false,
              showSuccess: false,
            }" x-on:submit.prevent="async () => {
              if (!$store.student.validEmail()) {
                showErrors = true
                return
              }

              showErrors = false
              loading = true

              $store.consent.ready(async () => {
                const segmentAllowed = await $store.consent.segmentAllowed()

                if (segmentAllowed) {
                  $store.student.saveUser({
                    email_signup: 'Footer',
                    email_signup_footer: 'Yes',
                  })

                  $store.student.track('Lead Captured', {
                    email: $store.student.email,
                    email_signup: 'Footer',
                    product: 'course',
                  })
                } else {
                  await fetch('https://outlier-app-six.vercel.app/api/essential', {
                    method: 'POST',
                    headers: {
                      'Accept': 'application/json',
                      'Content-Type': 'application/json',
                    },
                    body: JSON.stringify({
                      email: $store.student.email,
                      services: ['Active Campaign'],
                      events: ['Lead Captured'],
                      properties: {
                        email_signup: 'Footer',
                        email_signup_footer: 'Yes',
                        product: 'course',
                      },
                    }),
                  })
                }

                showSuccess = true
                loading = false
              })
            }">
  <h2 class="header-4"> Stay in the know </h2>
  <p class="text-[16px] leading-[1.5] text-grey-200 mt-[8px]"> Be the first to hear about new classes and breaking news. </p>
  <div class="flex mt-[16px] md:mt-[24px]">
    <input type="email" name="email" placeholder="person@email.com" class="input w-[8px] flex-grow border-r-0 rounded-r-none border-grey-400" x-model="$store.student.email"
      x-bind:class="{'input-error': showErrors &amp;&amp; !$store.student.validEmail()}">
    <button type="submit" class="btn btn-green btn-input rounded-l-none shrink-0 whitespace-nowrap btn-disabled" x-bind:class="{
                  'btn-disabled': !$store.student.validEmail() || showSuccess || loading,
                  'btn-loading': loading,
                }" x-bind:disabled="showSuccess || loading">
      <span></span>
      <span :class="{ 'opacity-0': loading }" x-text="showSuccess ? 'Sent' : 'Sign up'">Sign up</span>
    </button>
  </div>
  <div x-collapse="" x-show="showErrors" x-bind:aria-hidden="!showErrors" aria-hidden="true" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-error-400 pt-[8px]"> Sorry, your email does not look quite right. </p>
  </div>
  <div x-collapse="" x-show="showSuccess" x-bind:aria-hidden="!showSuccess" aria-hidden="true" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-success-400 pt-[8px]"> Thank you! You're on the list. </p>
  </div>
  <div class="mt-[16px] text-[14px] text-grey-200 leading-[1.5] richtext">
    <p>By signing up for our email list, you indicate that you have read and agree to our <a href="/pages/terms" title="Terms">Terms of Use</a>. We respect <a href="/pages/privacy" title="Privacy">your privacy</a>.</p>
  </div>
</form>

<form x-show="!showSuccess" novalidate="" x-on:submit.prevent="() => {
        if (!$store.student.validEmail()) {
          showErrors = true
          return
        }

        $store.consent.ready(async () => {
          const segmentAllowed = await $store.consent.segmentAllowed()

          if (segmentAllowed) {
            $store.student.saveUser({
              email_signup: 'Discount',
            })

            $store.student.track('Lead Captured', {
              email: $store.student.email,
              type: 'BOGO Back to school 2023',
              email_signup: 'Discount',
              product: 'course',
            })
          } else {
            await fetch('https://outlier-app-six.vercel.app/api/essential', {
              method: 'POST',
              headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                email: $store.student.email,
                services: ['Active Campaign'],
                events: ['Lead Captured'],
                properties: {
                  type: 'BOGO Back to school 2023',
                  email_signup: 'Discount',
                  product: 'course',
                },
              }),
            })
          }

          showErrors = false
          showSuccess = true
        })
      }">
  <h2 class="header-3 font-[400]"> Your Best. Semester. Ever! Start strong with 2-for-1 courses. </h2>
  <div class="mt-[16px] richtext text-grey-200">
    <div class="metafield-rich_text_field">
      <p>Earn 6 credits for ¼ the cost of traditional college and take this semester by storm!&nbsp; Backed by our risk-free guarantee. Offer expires soon.</p>
    </div>
  </div>
  <div class="w-full mt-[16px] md:mt-[24px]">
    <label for="popup-email" class="block header-4"> Email address </label>
    <div class="flex flex-col md:flex-row mt-[8px]">
      <input type="email" name="email" id="popup-email" class="input bg-black md:w-[8px] md:flex-grow md:border-r-0 md:rounded-r-none" x-bind:class="{'text-error-200': showErrors &amp;&amp; !$store.student.validEmail()}"
        x-model="$store.student.email">
      <button type="submit" class="btn btn-green mt-[16px] md:mt-0 w-full md:w-auto md:btn-input md:rounded-l-none shrink-0 whitespace-nowrap btn-disabled" x-bind:class="{ 'btn-disabled': !$store.student.validEmail() }"> Submit </button>
    </div>
    <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> That doesn't look like an email address. Please check for typos and try again. </p>
    </div>
    <div class="text-[13px] mt-[16px] text-grey-200 richtext">
      <div class="metafield-rich_text_field">
        <p>By signing up for our email list, you indicate that you have read and agree to our <a href="https://www.outlier.org/pages/terms">Terms of Use</a> and <a href="https://www.outlier.org/pages/privacy">Privacy Policy</a>.&nbsp;</p>
      </div>
    </div>
  </div>
</form>

<form x-show="!showSuccess" novalidate="" x-on:submit.prevent="() => {
        if (!$store.student.validEmail()) {
          showErrors = true
          return
        }

        $store.consent.ready(async () => {
          const segmentAllowed = await $store.consent.segmentAllowed()

          if (segmentAllowed) {
            $store.student.saveUser({
              email_signup: 'Discount',
            })

            $store.student.track('Lead Captured', {
              email: $store.student.email,
              type: 'Discount BlackFriday30',
              email_signup: 'Discount',
              product: 'course',
            })
          } else {
            await fetch('https://outlier-app-six.vercel.app/api/essential', {
              method: 'POST',
              headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                email: $store.student.email,
                services: ['Active Campaign'],
                events: ['Lead Captured'],
                properties: {
                  type: 'Discount BlackFriday30',
                  email_signup: 'Discount',
                  product: 'course',
                },
              }),
            })
          }

          showErrors = false
          showSuccess = true
        })
      }">
  <h2 class="header-3 font-[400]"> Black Friday for college courses? You read that right. </h2>
  <div class="mt-[16px] richtext text-grey-200">
    <div class="metafield-rich_text_field">
      <p>Save an extra 30% off online college courses that are already half the national average. Offer ends Nov. 19.</p>
    </div>
  </div>
  <div class="w-full mt-[16px] md:mt-[24px]">
    <label for="popup-email" class="block header-4"> Email address </label>
    <div class="flex flex-col md:flex-row mt-[8px]">
      <input type="email" name="email" id="popup-email" class="input bg-black md:w-[8px] md:flex-grow md:border-r-0 md:rounded-r-none" x-bind:class="{'text-error-200': showErrors &amp;&amp; !$store.student.validEmail()}"
        x-model="$store.student.email">
      <button type="submit" class="btn btn-green mt-[16px] md:mt-0 w-full md:w-auto md:btn-input md:rounded-l-none shrink-0 whitespace-nowrap btn-disabled" x-bind:class="{ 'btn-disabled': !$store.student.validEmail() }"> Submit </button>
    </div>
    <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> That doesn't look like an email address. Please check for typos and try again. </p>
    </div>
    <div class="text-[13px] mt-[16px] text-grey-200 richtext">
      <div class="metafield-rich_text_field">
        <p>By signing up for our email list, you indicate that you have read and agree to our <a href="https://www.outlier.org/pages/terms">Terms of Use</a> and <a href="https://www.outlier.org/pages/privacy">Privacy Policy</a>.&nbsp;</p>
      </div>
    </div>
  </div>
</form>

<form x-show="!showSuccess" novalidate="" x-on:submit.prevent="() => {
        if (!$store.student.validEmail()) {
          showErrors = true
          return
        }

        $store.consent.ready(async () => {
          const segmentAllowed = await $store.consent.segmentAllowed()

          if (segmentAllowed) {
            $store.student.saveUser({
              email_signup: 'Discount',
            })

            $store.student.track('Lead Captured', {
              email: $store.student.email,
              type: 'Discount BlackFriday30',
              email_signup: 'Discount',
              product: 'course',
            })
          } else {
            await fetch('https://outlier-app-six.vercel.app/api/essential', {
              method: 'POST',
              headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                email: $store.student.email,
                services: ['Active Campaign'],
                events: ['Lead Captured'],
                properties: {
                  type: 'Discount BlackFriday30',
                  email_signup: 'Discount',
                  product: 'course',
                },
              }),
            })
          }

          showErrors = false
          showSuccess = true
        })
      }">
  <h2 class="header-3 font-[400]"> Black Friday for college courses? Oh yeah, we went there. </h2>
  <div class="mt-[16px] richtext text-grey-200">
    <div class="metafield-rich_text_field">
      <p>Save an extra 40% on online college courses. That’s on top of the regular 50% savings you get with Outlier vs. traditional college! Offer ends Nov. 28.</p>
    </div>
  </div>
  <div class="w-full mt-[16px] md:mt-[24px]">
    <label for="popup-email" class="block header-4"> Email address </label>
    <div class="flex flex-col md:flex-row mt-[8px]">
      <input type="email" name="email" id="popup-email" class="input bg-black md:w-[8px] md:flex-grow md:border-r-0 md:rounded-r-none" x-bind:class="{'text-error-200': showErrors &amp;&amp; !$store.student.validEmail()}"
        x-model="$store.student.email">
      <button type="submit" class="btn btn-green mt-[16px] md:mt-0 w-full md:w-auto md:btn-input md:rounded-l-none shrink-0 whitespace-nowrap btn-disabled" x-bind:class="{ 'btn-disabled': !$store.student.validEmail() }"> Submit </button>
    </div>
    <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> That doesn't look like an email address. Please check for typos and try again. </p>
    </div>
    <div class="text-[13px] mt-[16px] text-grey-200 richtext">
      <div class="metafield-rich_text_field">
        <p>Legalese: By signing up for our email list, you indicate that you have read and agree to our <a href="https://www.outlier.org/pages/terms">Terms of Use</a> and <a href="https://www.outlier.org/pages/privacy">Privacy Policy</a>. </p>
      </div>
    </div>
  </div>
</form>

<form x-show="!showSuccess" novalidate="" x-on:submit.prevent="() => {
        if (!$store.student.validEmail()) {
          showErrors = true
          return
        }

        $store.consent.ready(async () => {
          const segmentAllowed = await $store.consent.segmentAllowed()

          if (segmentAllowed) {
            $store.student.saveUser({
              email_signup: 'Discount',
            })

            $store.student.track('Lead Captured', {
              email: $store.student.email,
              type: 'Discount BlackFriday30',
              email_signup: 'Discount',
              product: 'course',
            })
          } else {
            await fetch('https://outlier-app-six.vercel.app/api/essential', {
              method: 'POST',
              headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                email: $store.student.email,
                services: ['Active Campaign'],
                events: ['Lead Captured'],
                properties: {
                  type: 'Discount BlackFriday30',
                  email_signup: 'Discount',
                  product: 'course',
                },
              }),
            })
          }

          showErrors = false
          showSuccess = true
        })
      }">
  <h2 class="header-3 font-[400]"> It's not too late! Enroll today to lock in 30% off all courses </h2>
  <div class="mt-[16px] richtext text-grey-200">
    <div class="metafield-rich_text_field">
      <p>Gift yourself the world’s best online college courses and save an extra 30%. That’s on top of the regular 50% savings you get with Outlier vs. traditional college! Offer ends Dec. 5.</p>
    </div>
  </div>
  <div class="w-full mt-[16px] md:mt-[24px]">
    <label for="popup-email" class="block header-4"> Email address </label>
    <div class="flex flex-col md:flex-row mt-[8px]">
      <input type="email" name="email" id="popup-email" class="input bg-black md:w-[8px] md:flex-grow md:border-r-0 md:rounded-r-none" x-bind:class="{'text-error-200': showErrors &amp;&amp; !$store.student.validEmail()}"
        x-model="$store.student.email">
      <button type="submit" class="btn btn-green mt-[16px] md:mt-0 w-full md:w-auto md:btn-input md:rounded-l-none shrink-0 whitespace-nowrap btn-disabled" x-bind:class="{ 'btn-disabled': !$store.student.validEmail() }"> Submit </button>
    </div>
    <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> That doesn't look like an email address. Please check for typos and try again. </p>
    </div>
    <div class="text-[13px] mt-[16px] text-grey-200 richtext">
      <div class="metafield-rich_text_field">
        <p>Legalese: By signing up for our email list, you indicate that you have read and agree to our <a href="https://www.outlier.org/pages/terms">Terms of Use</a> and <a href="https://www.outlier.org/pages/privacy">Privacy Policy</a>. </p>
      </div>
    </div>
  </div>
</form>

<form novalidate="" x-on:submit.prevent="() => {
      if (!$store.student.validEmail()) {
        showErrors = true
        return
      }

      $store.consent.ready(async () => {
        const segmentAllowed = await $store.consent.segmentAllowed()

        if (segmentAllowed) {
          $store.student.saveUser({
            email_signup: 'Syllabus',
            syllabus_requested: 'Yes',
            syllabus_request_course_of_interest: $store.popup.context.course,
          })

          $store.student.track('Lead Captured', {
            course: $store.popup.context.course,
            email: $store.student.email,
            type: 'Syllabus',
            product: 'course',
          })

          $store.student.track('Syllabus Requested', {
            course: $store.popup.context.course,
            syllabus_requested: 'Yes',
            syllabus_request_course_of_interest: $store.popup.context.course,
            lists: [{ id: 1, status: 'active' }],
          })
        } else {
          await fetch('https://outlier-app-six.vercel.app/api/essential', {
            method: 'POST',
            headers: {
              'Accept': 'application/json',
              'Content-Type': 'application/json',
            },
            body: JSON.stringify({
              email: $store.student.email,
              services: ['Active Campaign'],
              events: ['Lead Captured'],
              properties: {
                email_signup: 'Syllabus',
                type: 'Syllabus',
                product: 'course',
                syllabus_requested: 'Yes',
                syllabus_request_course_of_interest: $store.popup.context.course,
              },
            }),
          })
        }
      })

      showErrors = false
      showSuccess = true
    }">
  <h2 class="header-3"> Request full syllabus </h2>
  <p class="mt-[24px] text-grey-200"> Please register your email address below to receive an email with the full course syllabus. </p>
  <label for="popup-email" class="block header-4 mt-[24px]"> Email address </label>
  <input type="email" name="email" id="popup-email" class="input mt-[8px]" placeholder="person@email.com" x-model="$store.student.email" x-bind:class="{'input-error': showErrors &amp;&amp; !$store.student.validEmail()}">
  <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-error-400 pt-[8px]"> Sorry, your email does not look quite right. </p>
  </div>
  <div x-show="showSuccess" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-success-400 pt-[8px]"> Thanks, we'll email you the syllabus shortly. </p>
  </div>
  <button type="submit" class="btn btn-green mt-[32px] w-full btn-disabled" x-bind:class="{'btn-disabled': !$store.student.validEmail() || showSuccess}" x-text="showSuccess ? 'Sent' : 'Request syllabus'">Request syllabus</button>
</form>

<form novalidate="" x-on:submit.prevent="() => {
      if (disabled()) {
        showErrors = true
        return
      }

      $store.consent.ready(async () => {
        const segmentAllowed = await $store.consent.segmentAllowed()

        if (segmentAllowed) {
          $store.student.saveUser({
            email: $store.student.email,
            firstName: $store.student.firstName,
            email_signup: 'Waitlist',
            waitlist_course: $store.popup.context.course,
            lists: [{ id: 1, status: 'active' }],
          })

          $store.student.track('Lead Captured', {
            email: $store.student.email,
            first_name: $store.student.firstName,
            type: 'Waitlist',
            product: 'course',
            course: $store.popup.context.course,
            waitlist_course: $store.popup.context.course,
          })
        } else {
          await fetch('https://outlier-app-six.vercel.app/api/essential', {
            method: 'POST',
            headers: {
              'Accept': 'application/json',
              'Content-Type': 'application/json',
            },
            body: JSON.stringify({
              email: $store.student.email,
              services: ['Active Campaign'],
              events: ['Lead Captured'],
              properties: {
                first_name: $store.student.firstName,
                type: 'Waitlist',
                product: 'course',
                waitlist_course: $store.popup.context.course,
              },
            }),
          })
        }

        showSuccess = true
      })
    }">
  <h2 class="header-3" x-text="showSuccess ? 'You\'ve been added to the waitlist!' : 'Join the waitlist'">Join the waitlist</h2>
  <div x-show="!showSuccess">
    <p class="mt-[24px] text-grey-200"> Add your details to be notified when this course becomes available. </p>
    <label for="popup-email" class="block header-4 mt-[24px]"> First name </label>
    <input type="text" name="firstName" id="popup-first-name" class="input mt-[8px]" x-bind:class="{ 'input-error': showErrors &amp;&amp; !$store.student.validFirstName() }" x-model="$store.student.firstName"
      x-bind:tabindex="$store.popup.show &amp;&amp; $store.popup.handle === 'waitlist-form' &amp;&amp; !showSuccess ? 0 : -1" tabindex="-1">
    <div x-show="showErrors &amp;&amp; !$store.student.validFirstName()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> First name is required. </p>
    </div>
    <label for="popup-email" class="block header-4 mt-[24px]"> Email address </label>
    <input type="email" name="email" id="popup-email" class="input mt-[8px]" placeholder="person@email.com" x-bind:class="{ 'input-error': showErrors &amp;&amp; !$store.student.validEmail() }" x-model="$store.student.email"
      x-bind:tabindex="$store.popup.show &amp;&amp; $store.popup.handle === 'waitlist-form' &amp;&amp; !showSuccess ? 0 : -1" tabindex="-1">
    <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
      <p class="text-error-400 pt-[8px]"> Please enter a valid email. </p>
    </div>
    <button type="submit" class="btn btn-green mt-[32px] w-full btn-disabled" x-bind:class="{ 'btn-disabled': disabled() || showSuccess }"> Join the waitlist </button>
  </div>
  <a class="btn btn-green mt-[32px] w-full" href="https://www.outlier.org/collections/course-catalog" x-show="showSuccess" style="display: none;">
      Explore available courses
    </a>
</form>

<form novalidate="" x-on:submit.prevent="async () => {
          if (disabled()) {
            showErrors = true
            return
          }

          $store.consent.ready(async () => {
            const segmentAllowed = await $store.consent.segmentAllowed()

            if (segmentAllowed) {
              $store.student.saveUser({
                firstName: $store.student.firstName,
                lastName: $store.student.lastName,
                email_signup: 'Transfer Toolkit',
              })

              $store.student.track('Lead Captured', {
                email: $store.student.email,
                type: 'Transfer Toolkit',
                email_signup: 'Transfer Toolkit',
                product: 'course',
                credit_transfer_school: school.join(' | '),
              })
            } else {
              await fetch('https://outlier-app-six.vercel.app/api/essential', {
                method: 'POST',
                headers: {
                  'Accept': 'application/json',
                  'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                  email: $store.student.email,
                  services: ['Active Campaign'],
                  events: ['Lead Captured'],
                  properties: {
                    first_name: $store.student.firstName,
                    last_name: $store.student.lastName,
                    type: 'Transfer Toolkit',
                    email_signup: 'Transfer Toolkit',
                    product: 'course',
                    credit_transfer_school: school.join(' | '),
                  },
                }),
              })
            }
          })

          showErrors = false
          showSuccess = true
          openToolkit()
        }">
  <h2 class="header-3" x-text="$store.popup.context.title"></h2>
  <p class="mt-[24px] text-grey-200" x-show="$store.popup.context.byline !== ''" x-html="$store.popup.context.byline">undefined</p>
  <div class="flex flex-wrap mx-[-16px]">
    <div class="w-full md:w-6/12 px-[16px]">
      <label for="popup-first-name" class="block header-4 mt-[24px]" x-text="$store.popup.context.firstNameLabel"></label>
      <input type="text" name="firstName" id="popup-first-name" class="input mt-[8px]" x-model="$store.student.firstName" x-bind:class="{ 'input-error': showErrors &amp;&amp; !$store.student.validFirstName() }">
      <div x-show="showErrors &amp;&amp; !$store.student.validFirstName()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
        <p class="text-error-400 pt-[8px]" x-text="$store.popup.context.firstNameError"></p>
      </div>
    </div>
    <div class="w-full md:w-6/12 px-[16px]">
      <label for="popup-last-name" class="block header-4 mt-[24px]" x-text="$store.popup.context.lastNameLabel"></label>
      <input type="text" name="lastName" id="popup-last-name" class="input mt-[8px]" x-model="$store.student.lastName" x-bind:class="{'input-error': showErrors &amp;&amp; !$store.student.validLastName()}">
      <div x-show="showErrors &amp;&amp; !$store.student.validLastName()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
        <p class="text-error-400 pt-[8px]" x-text="$store.popup.context.lastNameError"></p>
      </div>
    </div>
  </div>
  <label for="popup-email" class="block header-4 mt-[24px]" x-text="$store.popup.context.emailLabel"></label>
  <div class="text-grey-200 text-[14px] mt-[8px] richtext green-link" x-html="$store.popup.context.smallprint">undefined</div>
  <input type="email" name="email" id="popup-email" class="input mt-[8px]" x-model="$store.student.email" x-bind:class="{ 'input-error': showErrors &amp;&amp; !$store.student.validEmail() }">
  <div x-show="showErrors &amp;&amp; !$store.student.validEmail()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-error-400 pt-[8px]" x-text="$store.popup.context.emailError"></p>
  </div>
  <label for="popup-school" class="block header-4 mt-[24px]" x-text="$store.popup.context.schoolLabel"></label>
  <p class="text-grey-200 text-[14px] mt-[8px]" x-text="$store.popup.context.schoolByline"></p>
  <div class="mt-[8px]">
    <div class="relative">
      <label class="sr-only" for="school-search">Search for a school</label>
      <input name="school-search" id="school-search" class="input" placeholder="Type to search..." type="text" x-model="schoolSearchTerm" x-on:keyup.debounce="getSchools($event.target.value)">
      <h3 class="sr-only" x-bind:aria-hidden="schools.length === 0" aria-hidden="true"> School search results </h3>
      <ul class="bg-black border-t border-r border-l rounded-t-[4px] border-grey-400 absolute bottom-full left-0 right-0 max-h-[300px] overflow-auto flex flex-col" x-show="schools.length > 0" x-bind:aria-hidden="schools.length === 0" x-html="schools.map(s => `
                <li class='w-full'>
                  <button
                    type='button'
                    class='text-left w-full text-[16px] leading-[16px] px-[24px] py-[12px] hover:bg-green-400 hover:text-green-800 transition'
                    x-on:click=addSchool('${encodeURIComponent(s)}')
                  >
                    ${s}
                  </button>
                </li>
              `).join('')" x-on:click.outside="schools = []; schoolSearchTerm = ''" aria-hidden="true" style="display: none;"></ul>
      <h3 class="sr-only" x-bind:aria-hidden="school.length === 0" aria-hidden="true"> School selections </h3>
      <ul class="flex flex-wrap mt-[12px] mx-[-4px]" x-bind:aria-hidden="school.length === 0" x-html="school.map(s => `
                <li class='text-[12px] bg-green-400 text-green-800 rounded-[4px] m-[4px] flex'>
                  <span class='px-[8px] py-[4px] max-w-[170px] text-ellipsis overflow-hidden whitespace-nowrap'>${s}</span>
                  <button
                    type='button'
                    class='h-full px-[8px] border-l border-green-800/[0.5]'
                    x-on:click=removeSchool('${encodeURIComponent(s)}')
                  >
                    x
                  </button>
                </li>
              `).join('')" aria-hidden="true"></ul>
    </div>
  </div>
  <div x-show="showErrors &amp;&amp; !validSchool()" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-error-400 pt-[8px]" x-text="$store.popup.context.schoolError"></p>
  </div>
  <div x-show="showSuccess" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <p class="text-success-400 pt-[24px]" x-text="$store.popup.context.successMessage"></p>
  </div>
  <button type="submit" class="btn btn-green mt-[32px] w-full md:w-auto md:ml-auto btn-disabled" x-bind:class="{ 'btn-disabled': disabled() || showSuccess }" x-text="showSuccess ? 'Sent!' : $store.popup.context.buttonLabel"></button>
</form>

<form
  class="flex flex-col bg-black rounded-[4px] fixed bottom-[16px] md:bottom-[24px] lg:bottom-[32px] right-[16px] md:right-[24px] lg:right-[32px] z-[1001] w-full max-h-[calc(100vh-32px)] md:max-h-[calc(100vh-48px)] lg:max-h-[calc(100vh-64px)] max-w-[calc(100vw-32px)] md:max-w-[560px] border border-white"
  x-data="{
          changed: false,
        }" x-init="$watch('$store.consent.show', () => {
          if ($store.consent.show &amp;&amp; ['GDPR','LGPD','nFADP','NEVADA_SB220','CPRA','CPA','CDPA','NDPR','PIPA','LAW25','DPDP',].includes($store.consent.regime)) {
            $store.consent.setPrompted(true)
          }
        })" x-on:submit.prevent="() => {
          const form = new FormData($el)
          const purposes = {}
          for (const [key, value] of Object.entries($store.consent.purposes)) {
            if (value.showInConsentManager) {
              purposes[key] = form.get(key) === 'on'
            }
          }
          $store.consent.save($event, purposes)
          $store.consent.show = false
        }">
  <div class="pb-[8px] px-[24px] md:px-[32px] pt-[24px] md:pt-[40px] overflow-auto">
    <h2 class="header-4 text-[17px] lg:text-[18px]"> Let’s talk cookies. </h2>
    <div class="text-grey-200 leading-[1.4] [&amp;_a]:transition [&amp;_a]:underline [&amp;_a:hover]:text-green-400 mt-[8px] md:mt-[16px]">
      <p>Not the study snacks. The kind that help you enjoy this website. (Our <a href="/pages/cookies" target="_blank" title="Cookies">Cookie Policy</a> explains how.) Want some?</p>
    </div>
    <ul class="pt-[16px]" x-data="{ active: null }" x-html="Object.entries($store.consent.purposes)
              .filter(([key, value]) => value.showInConsentManager)
              .map(([key, value], i) => `
                <li
                  class='flex flex-col py-[16px] border-t border-white/[0.5] first:border-none'
                  x-data='{
                    enabled: ${$store.consent[`${key.charAt(0).toLowerCase()}${key.slice(1)}`]},
                    id: ${i},
                    get expanded() {
                      return this.active === this.id
                    },
                    set expanded(value) {
                      this.active = value ? this.id : null
                    },
                  }'
                >
                  <div class='flex items-start justify-start relative'>
                    <div
                      class='toggle mt-[10px]'
                      :class='{
                        on: enabled,
                        off: !enabled,
                      }'
                    >
                      <div class='w-[24px] h-[24px] rounded-[12px] bg-white absolute left-[4px] top-[4px]'></div>
                      <input
                        class='cursor-pointer w-full h-full rounded-[32px] absolute inset-0 appearance-none z-[-1] pointer-events-auto'
                        type='checkbox'
                        ${$store.consent[`${key.charAt(0).toLowerCase()}${key.slice(1)}`] ? 'checked' : ''}
                        id='consent-${key}'
                        name='${key}'
                        x-model='enabled'
                        @change='changed = true'
                      />
                    </div>
                    ${key === 'Functional' ? `
                      <label for='consent-Functional' class='cursor-pointer ml-[16px] mt-[10px]'>
                        Functionality Cookies
                      </label>
                      <button
                        class='w-[48px] h-[48px] flex items-center justify-center shrink-0 ml-auto'
                        type='button'
                        @click='expanded = !expanded'
                        :class='{
                          rotate180deg: expanded,
                        }'
                      >
                        <span class='sr-only'>Show description</span>
                        <svg role='img' aria-hidden='true' xmlns='http://www.w3.org/2000/svg' width='18' height='10' viewBox='0 0 18 10'>
  <path fill='none' fill-rule='evenodd' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16.75 1.311L9.127 8.933a.533.533 0 01-.754 0L.75 1.311'/>
</svg>

                      </button>
                    ` : ''}
                    ${key === 'Analytics' ? `
                      <label for='consent-Analytics' class='cursor-pointer ml-[16px] mt-[10px]'>
                        Performance and Analytics Cookies
                      </label>
                      <button
                        class='w-[48px] h-[48px] flex items-center justify-center shrink-0 ml-auto'
                        type='button'
                        @click='expanded = !expanded'
                        :class='{
                          rotate180deg: expanded,
                        }'
                      >
                        <span class='sr-only'>Show description</span>
                        <svg role='img' aria-hidden='true' xmlns='http://www.w3.org/2000/svg' width='18' height='10' viewBox='0 0 18 10'>
  <path fill='none' fill-rule='evenodd' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16.75 1.311L9.127 8.933a.533.533 0 01-.754 0L.75 1.311'/>
</svg>

                      </button>
                    ` : ''}
                    ${key === 'Advertising' ? `
                      <label for='consent-Advertising' class='cursor-pointer ml-[16px] mt-[10px]'>
                        Retargeting and Advertising Cookies
                      </label>
                      <button
                        class='w-[48px] h-[48px] flex items-center justify-center shrink-0 ml-auto'
                        type='button'
                        @click='expanded = !expanded'
                        :class='{
                          rotate180deg: expanded,
                        }'
                      >
                        <span class='sr-only'>Show description</span>
                        <svg role='img' aria-hidden='true' xmlns='http://www.w3.org/2000/svg' width='18' height='10' viewBox='0 0 18 10'>
  <path fill='none' fill-rule='evenodd' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16.75 1.311L9.127 8.933a.533.533 0 01-.754 0L.75 1.311'/>
</svg>

                      </button>
                    ` : ''}
                    ${key === 'SaleOfInfo' ? `
                      <label for='consent-SaleOfInfo' class='cursor-pointer ml-[16px] mt-[10px]'>
                        Opt Out of the “Sale” or “Sharing” of Personal Information
                      </label>
                      <button
                        class='w-[48px] h-[48px] flex items-center justify-center shrink-0 ml-auto'
                        type='button'
                        @click='expanded = !expanded'
                        :class='{
                          rotate180deg: expanded,
                        }'
                      >
                        <span class='sr-only'>Show description</span>
                        <svg role='img' aria-hidden='true' xmlns='http://www.w3.org/2000/svg' width='18' height='10' viewBox='0 0 18 10'>
  <path fill='none' fill-rule='evenodd' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16.75 1.311L9.127 8.933a.533.533 0 01-.754 0L.75 1.311'/>
</svg>

                      </button>
                    ` : ''}
                    ${!['Functional', 'Analytics', 'Advertising', 'SaleOfInfo'].includes(key) ? `
                      <label for='consent-${key}' class='cursor-pointer ml-[16px] mt-[10px]'>${value.name}</label>
                      <button
                        class='w-[48px] h-[48px] flex items-center justify-center shrink-0 ml-auto'
                        type='button'
                        @click='expanded = !expanded'
                        :class='{
                          rotate180deg: expanded,
                        }'
                      >
                        <span class='sr-only'>Show description</span>
                        <svg role='img' aria-hidden='true' xmlns='http://www.w3.org/2000/svg' width='18' height='10' viewBox='0 0 18 10'>
  <path fill='none' fill-rule='evenodd' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16.75 1.311L9.127 8.933a.533.533 0 01-.754 0L.75 1.311'/>
</svg>

                      </button>
                    ` : ''}
                  </div>
                  ${key === 'Functional' ? `
                    <div x-show='expanded' x-collapse class='max-w-[496px] text-grey-200'>
                      <div class='pt-[8px] pb-[16px]'>
                        <p>These little guys supercharge the performance of our websites by helping us record your choices and preferences over time. Without these cookies, you might miss out on the full site experience, like enjoying the epic course trailers.</p>
                      </div>
                    </div>
                  ` : ''}
                  ${key === 'Analytics' ? `
                    <div x-show='expanded' x-collapse class='max-w-[496px] text-grey-200'>
                      <div class='pt-[8px] pb-[16px]'>
                        <p>We're data nerds. So we use these cookies to collect information about how Outliers like you use our site. This helps us improve our website for your next visit.</p>
                      </div>
                    </div>
                  ` : ''}
                  ${key === 'Advertising' ? `
                    <div x-show='expanded' x-collapse class='max-w-[496px] text-grey-200'>
                      <div class='pt-[8px] pb-[16px]'>
                        <p>We like to treat you as the unique human you are (it’s literally why we named this company Outlier). These cookies help serve advertising content that is relevant to you and identify your interests so that we can personalize your targeted ad experience. </p>
                      </div>
                    </div>
                  ` : ''}
                  ${key === 'SaleOfInfo' ? `
                    <div x-show='expanded' x-collapse class='max-w-[496px] text-grey-200'>
                      <div class='pt-[8px] pb-[16px]'>
                        <p>We sometimes share information with other websites you visit to personalize the advertisements we craft for you. If you don't want this level of personalization, you can opt out right here.</p>
                      </div>
                    </div>
                  ` : ''}
                  ${!['Functional', 'Analytics', 'Advertising', 'SaleOfInfo'].includes(key) ? `
                    <div x-show='expanded' x-collapse class='max-w-[496px] text-grey-200'>
                      <div class='pt-[8px] pb-[16px]'>
                        ${value.descrition}
                      </div>
                    </div>
                  ` : ''}
                </li>
              `)
              .join('')
          "></ul>
  </div>
  <div class="shrink-0 px-[24px] md:px-[32px] relative z-[1]" x-show="changed" x-collapse="" style="display: none; height: 0px; overflow: hidden;" hidden="">
    <div class="w-full h-[16px] absolute bottom-full left-0 bg-gradient-to-t from-black"></div>
    <div class="py-[16px] pb-[24px] md:py-[32px] flex justify-end">
      <button type="submit" class="btn btn-green"> Save choices </button>
    </div>
  </div>
  <div class="shrink-0 px-[24px] md:px-[32px] relative z-[1]" x-show="!changed" x-collapse="">
    <div class="w-full h-[16px] absolute bottom-full left-0 bg-gradient-to-t from-black"></div>
    <div class="py-[16px] pb-[24px] md:py-[32px] grid grid-cols-2 gap-x-[16px]">
      <button type="button" class="btn btn-green" x-on:click="
                $store.consent.optOut($event);
                $store.consent.optedIn = false;
                $store.consent.optedOut = true;
                $store.consent.show = false;
              "> Reject all </button>
      <button type="button" class="btn btn-green" x-on:click="
                $store.consent.optIn($event);
                $store.consent.optedIn = true;
                $store.consent.optedOut = false;
                $store.consent.show = false;
              "> Allow all </button>
    </div>
  </div>
</form>

Text Content

00 : 00 : 00 : 00

Skip to content
Partners
 * High schools
 * Transfer Credit Network

Outlier
Courses

--------------------------------------------------------------------------------


COURSES

CALCULUS I

The mathematics of change.

INTRO TO STATISTICS

How data describes our world.

PRECALCULUS

Master the building blocks of Calculus.

COMPUTER SCIENCE I

Code the future.

INTRO TO FINANCIAL ACCOUNTING

 Find the story in numbers.

COLLEGE SUCCESS FREE

Don’t catch up. Get ahead.

--------------------------------------------------------------------------------

View all courses

--------------------------------------------------------------------------------




--------------------------------------------------------------------------------

Explore associate degrees

--------------------------------------------------------------------------------




 * Military Students
 * Transfer Students
 * Bachelor’s Seekers
 * Explore Associate Degrees


YOUR CART

--------------------------------------------------------------------------------


Checkout

Log in
Outlier Back

Courses Partners



Log in


DEGREES

--------------------------------------------------------------------------------

Explore associate degrees


COURSES

Calculus I Intro to Statistics Precalculus Computer Science I Intro to Financial
Accounting College Success (Free)

--------------------------------------------------------------------------------

View all courses




Military Students Transfer Students Bachelor’s Seekers

--------------------------------------------------------------------------------

Explore Associate Degrees


PARTNERS

High schools Transfer Credit Network


COURSES

Calculus I Intro to Statistics Precalculus Computer Science I Intro to Financial
Accounting College Success (Free)

--------------------------------------------------------------------------------

View all courses


DEGREES

--------------------------------------------------------------------------------

Explore associate degrees


DUAL ENROLLMENT COURSES FOR HIGH SCHOOL STUDENTS NATIONWIDE

Log in


OUR INSTRUCTORS


 * MONICA THIEU, PH.D.
   
   Columbia University
   
   
   
   Intro to Psychology


 * MICHAEL LEE
   
   Illinois Institute of Technology


 * JIM MOUREY, PH.D.
   
   DePaul University


 * SHAMUS KHAN, PH.D.
   
   Princeton University


 * TIM CHARTIER PH.D.
   
   Davidson College
   
   
   
   Calculus I


 * MICHELLE THALLER PH.D.
   
   NASA
   
   
   
   Intro to Astronomy


 * JOHN KAAG PH.D.
   
   UMASS Lowell
   
   
   
   Intro to Philosophy

Do I Qualify? Apply now


LIFE-CHANGING COLLEGE AND CAREER PREP


COLLEGE COURSES

Save time and money on your degree and earn 3 transferable credits from a top 50
global university.




COLLEGE PREP

Get prepared for college with our free College Success course

Outlier


FALL IN LOVE WITH ONLINE LEARNING

Top-rated instructors. Fun and flexible courses. And personalized support.

Video: Outlier course playing on laptop in bedroom


COURSES

Cinematic courses taught by the world’s most engaging instructors


 * COLLEGE WRITING I
   
   Course
   
   Unlock the power of words.
   Learn more


 * INTRO TO FINANCIAL ACCOUNTING
   
   Course
   
    Find the story in numbers.
   Learn more


 * PROFESSIONAL COMMUNICATION
   
   Course
   
   Comms skills for the real world.
   Learn more


 * PRECALCULUS
   
   Course
   
   Master the building blocks of Calculus.
   Learn more


 * INTRO TO STATISTICS
   
   Course
   
   How data describes our world.
   
   Learn more


 * CALCULUS I
   
   Course
   
   The mathematics of change.
   
   Learn more


 * INTRO TO PSYCHOLOGY
   
   Course
   
   The science of the mind.
   
   Learn more


 * INTRO TO ASTRONOMY
   
   Course
   
   Our universe, explored.
   
   Learn more


 * INTRO TO BUSINESS
   
   Course
   
   The art of creating value.
   Learn more

View catalog




HEAR FROM OUR ALUMNI


 * JACQUELINE W.
   
   “LOVE LOVE LOVE. I’ve taken a lot of online courses over the years and [this]
   blows them all away—in design, teachers, production, content, and
   facilitating learning.”


 * TAIJA P.
   
   “I never thought I'd like an online class this much. I never expected to be
   so engaged, so thoroughly interested in everything I was learning, and to be
   excited about doing an online class.”


 * ELLIOT P.
   
   “The staff was amazing! Not only knowledgeable but very friendly and super
   supportive. I felt the same level of rapport with them as though I was
   attending physical classes and seeing each of them every day.”

 * 
 * 
 * 


FREQUENTLY ASKED QUESTIONS


 * AM I ELIGIBLE TO BE AN OUTLIER?
   
   To enroll in an Outlier course, you must be at least 13 years old and ready
   for the academic rigor of college-level coursework. Carefully consider your
   other responsibilities and your dedication before enrolling.


 * ARE COURSES COMPLETELY ONLINE?
   
   Yes, all Outlier courses are 100% online. That means you can learn with any
   teacher, during any class period—anywhere in the universe with Wi-Fi and a
   laptop or desktop computer. 
   
   You can also stream lectures in our iPhone app, but you'll need a computer to
   complete the rest of your coursework. A full list of technical requirements
   is available in our Help Center.


 * IS OUTLIER ACCREDITED?
   
   We work with trusted partners to offer you accredited college courses worth
   actual college credit. For each Outlier course, you earn 3 credits from the
   University of Pittsburgh, a top 50 global university accredited by the Middle
   States Commission on Higher Education.
   
   Outlier-earned college credits have successfully transferred to hundreds of
   schools, from community colleges to the Ivy League.


 * WHAT IF I NEED ACCOMMODATIONS?
   
   If you have a request for reasonable disability accommodations, contact
   support@outlier.org. Please include specifics regarding the accommodation you
   are seeking. Additionally, if you have a disability accommodations letter,
   you may send that to us as well.
   
   Outlier’s mission is to increase access to education, and we’re committed to
   ensuring that learners with accessibility needs have equal opportunity to
   succeed in our courses.


 * WHAT IS THE TIME COMMITMENT FOR OUTLIER COURSES?
   
   Outlier courses are as academically rigorous as they are engaging. You can
   expect to spend about 45 minutes a day (about 5 hours per week), including
   time at school and at home. We recommend you:
   
    * Have at least 1 class period in your school schedule dedicated to your
      Outlier course
    * Take only 1 Outlier course at a time


 * WHY IS EVERYTHING SO DARK?
   
   Early on in the process of designing Outlier, we found that many students use
   their laptops late at night, and don’t feel like staring into a lightbulb.
   Too much white in the background of videos and active learning would be
   fatiguing and unpleasant. We also think it’s pretty neat that we decided to
   do this before Apple shifted everything to dark mode.


SITEMAP


SITEMAP

 * Catalog
 * About Outlier
 * Student Log In
 * Articles


PARTNERS


PARTNERS

 * High schools
 * Transfer Credit Network


SOCIAL MEDIA

 * Instagram Instagram
 * YouTube YouTube


ADDRESS

Outlier by Savvas Copyright © 2024 Savvas Learning Company LLC. All Rights
Reserved.

Questions? Email us at hello@outlier.org


STAY IN THE KNOW

Be the first to hear about new classes and breaking news.

Sign up

Sorry, your email does not look quite right.

Thank you! You're on the list.

By signing up for our email list, you indicate that you have read and agree to
our Terms of Use. We respect your privacy.

 * Privacy
 * Terms
 * Refunds
 * Jobs
 * Help Center
   Privacy options
   Reset consent

© 2024 OUTLIER.ORG, INC




BRILLIANT.

Here’s your special 2-for-1 promo code: 
Copy
Get Started


YOUR BEST. SEMESTER. EVER! START STRONG WITH 2-FOR-1 COURSES.

Earn 6 credits for ¼ the cost of traditional college and take this semester by
storm!  Backed by our risk-free guarantee. Offer expires soon.

Email address
Submit

That doesn't look like an email address. Please check for typos and try again.

By signing up for our email list, you indicate that you have read and agree to
our Terms of Use and Privacy Policy. 


CALCULATE YOUR CUMULATIVE GPA


YOUR ESTIMATED CUMULATIVE GPA IS

Back to application
Type
Institution Course
Name
# of credits
GPA Letter grade
Select grade A B+ B C+ C D F · Select grade
Cancel Save

credits

·





Edit
+ Add institution or course

Type Name # of credits Letter grade or GPA
Institution Course
Select grade A B+ B C+ C D F · Select grade

Please fill out all fields.

+ Add institution or course Calculate

Calculate Back to application


BRILLIANT.

Here’s your 30% off promo code:
Copy
GET STARTED


BLACK FRIDAY FOR COLLEGE COURSES? YOU READ THAT RIGHT.

Save an extra 30% off online college courses that are already half the national
average. Offer ends Nov. 19.

Email address
Submit

That doesn't look like an email address. Please check for typos and try again.

By signing up for our email list, you indicate that you have read and agree to
our Terms of Use and Privacy Policy. 


BRILLIANT.

Here’s your 30% off promo code:
Copy
GET STARTED


BLACK FRIDAY FOR COLLEGE COURSES? OH YEAH, WE WENT THERE.

Save an extra 40% on online college courses. That’s on top of the regular 50%
savings you get with Outlier vs. traditional college! Offer ends Nov. 28.

Email address
Submit

That doesn't look like an email address. Please check for typos and try again.

Legalese: By signing up for our email list, you indicate that you have read and
agree to our Terms of Use and Privacy Policy.


BRILLIANT.

Here’s your 30% off promo code:
Copy
GET STARTED


IT'S NOT TOO LATE! ENROLL TODAY TO LOCK IN 30% OFF ALL COURSES

Gift yourself the world’s best online college courses and save an extra 30%.
That’s on top of the regular 50% savings you get with Outlier vs. traditional
college! Offer ends Dec. 5.

Email address
Submit

That doesn't look like an email address. Please check for typos and try again.

Legalese: By signing up for our email list, you indicate that you have read and
agree to our Terms of Use and Privacy Policy.


LOCK IN OUR LOWEST TUITION EVER + GET YOUR $0 DEGREE!

Apply by August 17th to start Degrees+ this Fall and guarantee the lowest
tuition ever.

Apply Now


REQUEST FULL SYLLABUS

Please register your email address below to receive an email with the full
course syllabus.

Email address

Sorry, your email does not look quite right.

Thanks, we'll email you the syllabus shortly.

Request syllabus


JOIN THE WAITLIST

Add your details to be notified when this course becomes available.

First name

First name is required.

Email address

Please enter a valid email.

Join the waitlist
Explore available courses

 * Facebook
 * LinkedIn
 * Twitter
 * Email

Copy page URL


--------------------------------------------------------------------------------








undefined


undefined



undefined



undefined





Search for a school


SCHOOL SEARCH RESULTS


SCHOOL SELECTIONS






LET’S TALK COOKIES.

Not the study snacks. The kind that help you enjoy this website. (Our Cookie
Policy explains how.) Want some?

Save choices
Reject all Allow all