anchor.diff:          course_offerings: {lms_course_num: params[:custom_canvas_course_id]}
         ).first
       </pre>
  -    After that it calls 'lti_authorize!' endpoint to validate the request
  -    received.<br><br>
  +    After that OpenDSA calls the <em>'lti_authorize!'</em> method to validate
  +    the request received.<br><br>
       <pre>
         render('error') and return unless lti_authorize!
       </pre>
   
  -    Within lti_authorize endpoint, it creates a tool provider object from the
  -    authentication object created above. If a key and secret does not match, it
  -    throws an error and return.<br><br>
  +    Within the lti_authorize endpoint, OpenDSA creates a tool provider object
  +    from the authentication object created above and throws an error and return
  +    in case the key and secret does not match.<br><br>
   
       <pre>
         def lti_authorize!
  
positive.code:       end
      </pre>
  
      Once the request has been validated, it returns to launch_ex endpoint and in
      the next step it calls 'ensure_user'.<br><br>
      <pre>
        ensure_user()
      </pre>
  
      Within 'ensure_user' it first checks if a user with a same email exists and
      creates a new user it that email is not found and finally signs in that
      user to start his session.<br><br>
      <pre>
        def ensure_user
          email = params[:lis_person_contact_email_primary]
  
negative.code:       end
      </pre>
  
      In this tutorial, we will first cover launch_ex endpoint <strong> that
      handles standalone exercises</strong>. To add standalone graded
      exercises in your course follow the steps mentioned
      <%= link_to "here", lti_instructions_opendsa_path %>. Furthermore, to read
      how OpenDSA handles LTI requests for a book instance exercise, click
      <%= link_to "here", lti_opendsa_bookinstance_path %>. <br><br>
  
      <h3>LTI in stand-alone exercise</h3><br><br>
  
      When a student clicks on an assignment/exercise, first steps that are
      performed are that OpenDSA fetches the credentials (the unique secret) from
      the public authentication key received in the request and finds the course
      offering to which assignment belongs.<br><br>
      <pre>
      def launch_ex
        require 'oauth/request_proxy/rack_request'
  