diff --git a/exercises/cloze_exercise.php b/exercises/cloze_exercise.php
index 213a38146011f5c2533cc2fcc06c47750b40f545..27ca064fcdb0cd276932d1a2d465bba22c896c99 100644
--- a/exercises/cloze_exercise.php
+++ b/exercises/cloze_exercise.php
@@ -236,7 +236,7 @@ class cloze_exercise extends Exercise
     public function availableAnswers($solution)
     {
         $answers = [];
-        $response = $solution->response ?: [];
+        $response = !empty($solution->response) ? $solution->response : [];
 
         foreach ($this->task['answers'] as $answer) {
             foreach ($answer as $option) {
diff --git a/exercises/lt_exercise.php b/exercises/lt_exercise.php
index c658134fa94286f654705739ac223679ead486c2..a60b69a3bbe2fe95ebdad640d46e16abd321a916 100644
--- a/exercises/lt_exercise.php
+++ b/exercises/lt_exercise.php
@@ -81,36 +81,38 @@ class lt_exercise extends Exercise
 
             if ($musterLoesung === $studentSolution) {
                 $similarity_temp = 1;
-            } else if ($this->task['compare'] === 'levenshtein') {  // Levenshtein-Distanz
-                $string1 = mb_substr($studentSolution, 0, 255);
-                $string2 = mb_substr($musterLoesung, 0, 255);
-                $divisor = max(mb_strlen($string1), mb_strlen($string2));
-
-                $levenshtein = vips_levenshtein($string1, $string2) / $divisor;
-                $similarity_temp = 1 - $levenshtein;
-            } else if ($this->task['compare'] === 'soundex') {  // Soundex-Aussprache
-                $levenshtein = levenshtein(soundex($musterLoesung), soundex($studentSolution));
-
-                if ($levenshtein == 0) {
-                    $similarity_temp = 0.8;
-                } else if ($levenshtein == 1) {
-                    $similarity_temp = 0.6;
-                } else if ($levenshtein == 2) {
-                    $similarity_temp = 0.4;
-                } else if ($levenshtein == 3) {
-                    $similarity_temp = 0.2;
-                } else {// $levenshtein == 4
-                    $similarity_temp = 0;
-                }
-            } else if ($this->task['compare'] === 'numeric') {
-                $correct = normalizeFloat($answer['text'], $correct_unit);
-                $student = normalizeFloat($response[0], $student_unit);
-
-                if ($correct_unit === $student_unit) {
-                    if (abs($correct - $student) <= abs($correct * $this->task['epsilon'])) {
-                        $similarity_temp = 1;
-                    } else {
-                        $safe = true;
+            } else if (isset($this->task['compare'])) {
+                if ($this->task['compare'] === 'levenshtein') {  // Levenshtein-Distanz
+                    $string1 = mb_substr($studentSolution, 0, 255);
+                    $string2 = mb_substr($musterLoesung, 0, 255);
+                    $divisor = max(mb_strlen($string1), mb_strlen($string2));
+
+                    $levenshtein = vips_levenshtein($string1, $string2) / $divisor;
+                    $similarity_temp = 1 - $levenshtein;
+                } else if ($this->task['compare'] === 'soundex') {  // Soundex-Aussprache
+                    $levenshtein = levenshtein(soundex($musterLoesung), soundex($studentSolution));
+
+                    if ($levenshtein == 0) {
+                        $similarity_temp = 0.8;
+                    } else if ($levenshtein == 1) {
+                        $similarity_temp = 0.6;
+                    } else if ($levenshtein == 2) {
+                        $similarity_temp = 0.4;
+                    } else if ($levenshtein == 3) {
+                        $similarity_temp = 0.2;
+                    } else {// $levenshtein == 4
+                        $similarity_temp = 0;
+                    }
+                } else if ($this->task['compare'] === 'numeric') {
+                    $correct = normalizeFloat($answer['text'], $correct_unit);
+                    $student = normalizeFloat($response[0], $student_unit);
+
+                    if ($correct_unit === $student_unit) {
+                        if (abs($correct - $student) <= abs($correct * $this->task['epsilon'])) {
+                            $similarity_temp = 1;
+                        } else {
+                            $safe = true;
+                        }
                     }
                 }
             }
diff --git a/exercises/mc_exercise.php b/exercises/mc_exercise.php
index c7ff99aa52005a7e948f764bb1eb84e8ce000236..d40c84d05e1bde1d6a060a63206ae641e940b50b 100644
--- a/exercises/mc_exercise.php
+++ b/exercises/mc_exercise.php
@@ -42,7 +42,7 @@ class mc_exercise extends Exercise
             if (trim($answer) != '') {
                 $this->task['answers'][] = [
                     'text'  => trim($answer),
-                    'score' => (int) $request['correct'][$i]
+                    'score' => isset($request['correct'][$i]) ? (int) $request['correct'][$i] : 0
                 ];
             }
         }
diff --git a/exercises/tb_exercise.php b/exercises/tb_exercise.php
index de245ffc75a3362231fbf4c32d7f4e1ea590519b..443f7f34eb3818891fa5f77b195fe5c84d87cc84 100644
--- a/exercises/tb_exercise.php
+++ b/exercises/tb_exercise.php
@@ -156,7 +156,7 @@ class tb_exercise extends Exercise
     public function getSolutionFromRequest($request, $files = null)
     {
         $solution = parent::getSolutionFromRequest($request, $files);
-        $upload = $files['upload'] ?: ['name' => []];
+        $upload = isset($files['upload']) ? $files['upload'] : ['name' => []];
         $uploads = [];
         $solution_files = [];
 
diff --git a/views/exercises/cloze_exercise/solve.php b/views/exercises/cloze_exercise/solve.php
index a2243d708e4a33257ee3d3a8ca127bf773c359c7..6f7ef239ab8b780ceb7ce1209c4cc5b7b0c9506a 100644
--- a/views/exercises/cloze_exercise/solve.php
+++ b/views/exercises/cloze_exercise/solve.php
@@ -16,14 +16,14 @@
                         <option value="">&#160;</option>
                     <? endif ?>
                     <? foreach ($exercise->task['answers'][$blank] as $option): ?>
-                        <option value="<?= htmlReady($option['text']) ?>" <?= trim($option['text']) === $response[$blank] ? ' selected' : '' ?>>
+                        <option value="<?= htmlReady($option['text']) ?>" <?= isset($response[$blank]) && trim($option['text']) === $response[$blank] ? ' selected' : '' ?>>
                             <?= htmlReady($option['text']) ?>
                         </option>
                     <? endforeach ?>
                 </select><!--
             <? else: ?>
              --><input type="text" class="character_input cloze_input" name="answer[<?= $blank ?>]"
-                       style="width: <?= $exercise->getInputWidth($blank) ?>em;" value="<?= htmlReady($response[$blank]) ?>"><!--
+                       style="width: <?= $exercise->getInputWidth($blank) ?>em;" value="<?= htmlReady(isset($response[$blank]) ? $response[$blank] : '') ?>"><!--
             <? endif ?>
         <? endif ?>
     <? endforeach ?>
diff --git a/views/exercises/courseware_block.php b/views/exercises/courseware_block.php
index 31534558cb4a88ddf82a46bd0630b647509cb513..fe518682dc2fcc6638d14c0a3952af3517056923 100644
--- a/views/exercises/courseware_block.php
+++ b/views/exercises/courseware_block.php
@@ -59,7 +59,7 @@
     <? if (!empty($exercise->options['comment'])): ?>
         <label>
             <?= _vips('Bemerkungen zur Lösung (optional)') ?>
-            <textarea name="student_comment"><?= htmlReady($solution->student_comment) ?></textarea>
+            <textarea name="student_comment"><?= htmlReady(isset($solution->student_comment) ? $solution->student_comment : '') ?></textarea>
         </label>
     <? endif ?>
 <? endif ?>
diff --git a/views/exercises/lt_exercise/solve.php b/views/exercises/lt_exercise/solve.php
index 9d82fcf87807bafb1fe7ab8743479461a96a12cc..9959a71738374d382a44554b10a35cd8e7ad4c6e 100644
--- a/views/exercises/lt_exercise/solve.php
+++ b/views/exercises/lt_exercise/solve.php
@@ -1,4 +1,4 @@
 <label>
     <?= _vips('Antwort') ?>
-    <input type="text" class="character_input" name="answer[0]" value="<?= htmlReady($response[0]) ?>">
+    <input type="text" class="character_input" name="answer[0]" value="<?= htmlReady(isset($response[0]) ? $response[0] : '') ?>">
 </label>
diff --git a/views/exercises/tb_exercise/correct.php b/views/exercises/tb_exercise/correct.php
index 644c2644e944740bb048915a151baa05ead4d763..181c556a072cecd995ef0d5a1c82e0e1400a7c40 100644
--- a/views/exercises/tb_exercise/correct.php
+++ b/views/exercises/tb_exercise/correct.php
@@ -21,7 +21,7 @@
         </ul>
 
         <div id="commented-<?= $exercise->id ?>">
-            <? if ($edit_solution): ?>
+            <? if (!empty($edit_solution)): ?>
                 <? if ($exercise->getLayout() === 'markup'): ?>
                     <? $answer = $response[0] ?>
                 <? elseif ($exercise->getLayout() === 'code'): ?>
@@ -66,7 +66,7 @@
                 <? endif ?>
             </div>
 
-            <? if ($edit_solution): ?>
+            <? if (!empty($edit_solution)): ?>
                 <?= Studip\Button::create(_vips('Lösung bearbeiten'), 'edit_solution', ['class' => 'edit_solution']) ?>
 
                 <? if ($exercise->getLayout() === 'code'): ?>
diff --git a/views/exercises/tb_exercise/solve.php b/views/exercises/tb_exercise/solve.php
index bdb807dc9b4468cc2061a690b3b22071f4813600..84c3b69050188643a1d9349e70c8f0530b9cd21a 100644
--- a/views/exercises/tb_exercise/solve.php
+++ b/views/exercises/tb_exercise/solve.php
@@ -1,5 +1,5 @@
 <? if ($exercise->getLayout() !== 'none'): ?>
-    <? if ($exercise->task['template'] != ''): ?>
+    <? if (!empty($exercise->task['template'])): ?>
         <div class="vips_tabs">
             <ul>
                 <li>
@@ -20,7 +20,7 @@
 
             <? /* student answer */ ?>
             <div id="solution-<?= $exercise->id ?>">
-                <? $answer = isset($response) ? $response[0] : $exercise->task['template'] ?>
+                <? $answer = isset($response) ? $response[0] : (isset($exercise->task['template']) ? $exercise->task['template'] : '') ?>
                 <? if ($exercise->getLayout() === 'markup'): ?>
                     <textarea name="answer[0]" class="character_input size-l wysiwyg" data-editor="removePlugins=studip-quote,studip-upload,ImageUpload" rows="20"><?= wysiwygReady($answer) ?></textarea>
                 <? elseif ($exercise->getLayout() === 'code'): ?>
@@ -35,7 +35,7 @@
                 <? endif ?>
             </div>
 
-    <? if ($exercise->task['template'] == ''): ?>
+    <? if (empty($exercise->task['template'])): ?>
         </label>
     <? else: ?>
             <? /* default answer */ ?>