diff --git a/app/controllers/admin/ilias_interface.php b/app/controllers/admin/ilias_interface.php
index 9399a63f554cbe7f455568eefbc9111330e26cb5..543324ec9ca1c6465055043ed96843365fbdcdaa 100644
--- a/app/controllers/admin/ilias_interface.php
+++ b/app/controllers/admin/ilias_interface.php
@@ -95,12 +95,13 @@ class Admin_IliasInterfaceController extends AuthenticatedController
     public function save_interface_settings_action()
     {
         if (Request::submitted('submit')) {
-            $this->ilias_interface_config['edit_moduletitle'] = (boolean)Request::get('ilias_interface_edit_moduletitle');
-            $this->ilias_interface_config['show_offline'] = (boolean)Request::get('ilias_interface_show_offline');
-            $this->ilias_interface_config['search_active'] = (boolean)Request::get('ilias_interface_search_active');
-            $this->ilias_interface_config['show_tools_page'] = (boolean)Request::get('ilias_interface_show_tools_page');
-            $this->ilias_interface_config['add_statusgroups'] = (boolean)Request::get('ilias_interface_add_statusgroups');
-            $this->ilias_interface_config['cache'] = (boolean)Request::get('ilias_interface_cache');
+            $this->ilias_interface_config['edit_moduletitle'] = Request::bool('ilias_interface_edit_moduletitle', false);
+            $this->ilias_interface_config['show_offline'] = Request::bool('ilias_interface_show_offline', false);
+            $this->ilias_interface_config['search_active'] = Request::bool('ilias_interface_search_active', false);
+            $this->ilias_interface_config['show_course_paths'] = Request::bool('ilias_interface_show_course_paths', false);
+            $this->ilias_interface_config['show_tools_page'] = Request::bool('ilias_interface_show_tools_page', false);
+            $this->ilias_interface_config['add_statusgroups'] = Request::bool('ilias_interface_add_statusgroups', false);
+            $this->ilias_interface_config['cache'] = Request::bool('ilias_interface_cache', false);
             $this->ilias_interface_config['allow_change_course'] = Request::get('ilias_interface_allow_change_course');
             $this->ilias_interface_config['allow_add_own_course'] = Request::get('ilias_interface_allow_add_own_course');
 
diff --git a/app/controllers/my_ilias_accounts.php b/app/controllers/my_ilias_accounts.php
index 84060acf9b50f87a2c6b623c9456fab0046ca563..2501382be4876704f0fd0eceb1b3c86061fb623b 100644
--- a/app/controllers/my_ilias_accounts.php
+++ b/app/controllers/my_ilias_accounts.php
@@ -44,9 +44,9 @@ class MyIliasAccountsController extends AuthenticatedController
      */
     public function index_action()
     {
-        Navigation::activateItem('/contents/my_ilias_accounts');
+        Navigation::activateItem('/contents/my_ilias_accounts/my_accounts');
 
-        PageLayout::setTitle(_('ILIAS-Schnittstelle'));
+        PageLayout::setTitle(_('Meine Lernobjekte und Accounts'));
 
         $this->ilias_list = [];
         foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) {
@@ -71,6 +71,111 @@ class MyIliasAccountsController extends AuthenticatedController
         $this->sidebar->addWidget($widget);
     }
 
+    /**
+     * Shows ilias courses for active user
+     */
+    public function my_courses_action()
+    {
+        Navigation::activateItem('/contents/my_ilias_accounts/my_courses');
+
+        PageLayout::setTitle(_('Meine ILIAS-Kurse'));
+
+        if (Semester::exists(Request::option('sem_select'))) {
+            $this->selected_semester = Request::option('sem_select');
+        } else {
+            $this->selected_semester = '';
+        }
+
+        // set up connected ilias classes
+        $this->ilias_list = [];
+        foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) {
+            if ($ilias_config['is_active']) {
+                $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index);
+                $this->ilias_list[$ilias_index]->checkUser();
+                $this->ilias_list[$ilias_index]->soap_client->clearCache();
+            }
+        }
+
+        if (Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_course_paths']) {
+            // get semesters and set up filter widget
+            $semesters = new SimpleCollection(Semester::getAll());
+            $semesters = $semesters->orderBy('beginn desc');
+            $current_semester = Semester::findCurrent()->id;
+
+            $widget = new SelectWidget(_('Semesterfilter'), $this->url_for('my_ilias_accounts/my_courses'), 'sem_select');
+            $widget->setMaxLength(50);
+
+            $sem_entries = [
+                $current_semester => _('Aktuelles Semester'),
+                ''                => _('Alle Semester')
+            ];
+            foreach ($sem_entries as $key => $label) {
+                $widget->addElement(new SelectElement($key, $label, $this->selected_semester === $key));
+            }
+
+            foreach ($semesters as $key => $semester_entry) {
+                $widget->addElement(new SelectElement($key, $semester_entry->name, $this->selected_semester === $key));
+            }
+            $this->sidebar->addWidget($widget);
+        }
+
+        $widget = new ActionsWidget();
+        foreach ($this->ilias_list as $ilias_list_index => $ilias) {
+            if ($GLOBALS['perm']->have_perm('autor')) {
+                $widget->addLink(
+                    sprintf(_('Zur %s-Startseite'), $ilias->getName()),
+                    $this->url_for('my_ilias_accounts/redirect/' . $ilias_list_index . '/login'),
+                    Icon::create('link-extern'),
+                    ['target' => '_blank', 'rel' => 'noopener noreferrer']
+                );
+
+                // fetch connected course ids for user
+                $this->connected_courses_list[$ilias_list_index] = $ilias->getConnectedCoursesForUser($ilias->user->studip_id);
+
+                // fetch ilias courses for user
+                $member_courses = $ilias->soap_client->getCoursesForUserStatus($ilias->user->id, 1);
+                $tutor_courses = $ilias->soap_client->getCoursesForUserStatus($ilias->user->id, 2);
+                $admin_courses = $ilias->soap_client->getCoursesForUserStatus($ilias->user->id, 4);
+                $this->courses_list[$ilias_list_index] = $member_courses + $tutor_courses + $admin_courses;
+
+                // add paths and studip objects
+                foreach ($this->courses_list[$ilias_list_index] as $crs_id => $course_data) {
+                    $this->courses_list[$ilias_index][$crs_id]['studip_object'] = '';
+                    if (
+                        array_key_exists($ilias_list_index, $this->connected_courses_list)
+                        && array_key_exists($crs_id, $this->connected_courses_list[$ilias_list_index])
+                    ) {
+                        $this->courses_list[$ilias_index][$crs_id]['studip_object'] = $this->connected_courses_list[$ilias_list_index][$crs_id];
+                    }
+                    
+                    // filter offline courses for mere members
+                    if (
+                        !Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_offline']
+                        && !$course_data['online']
+                        && !in_array($course_data['status'], [2, 4])
+                    ) {
+                        unset($this->courses_list[$ilias_list_index][$crs_id]);
+                    }
+                    
+                    // filter by semester
+                    if (Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_course_paths']) {
+                        $this->courses_list[$ilias_list_index][$crs_id]['path'] = $ilias->soap_client->getPath($crs_id);
+                        if (
+                            $this->selected_semester
+                            && !str_contains(
+                                $this->courses_list[$ilias_list_index][$crs_id]['path'],
+                                Semester::find($this->selected_semester)->name
+                            )
+                        ) {
+                            unset($this->courses_list[$ilias_list_index][$crs_id]);
+                        }
+                    }
+                }
+            }
+        }
+        $this->sidebar->addWidget($widget);
+    }
+
     /**
      * View ILIAS module Details
      * @param $index Index of ILIAS installation
@@ -89,6 +194,24 @@ class MyIliasAccountsController extends AuthenticatedController
         }
     }
 
+    /**
+     * View ILIAS course details
+     * @param $index Index of ILIAS installation
+     * @param $crs_id course ID
+     */
+    public function view_course_action($index, $crs_id)
+    {
+        $this->ilias = new ConnectedIlias($index);
+        if ($this->ilias->isActive()) {
+            $this->module = $this->ilias->getModule($crs_id);
+            $this->module->module_type_name = _('ILIAS-Kurs');
+            PageLayout::setTitle($this->module->getTitle());
+            $this->ilias_index = $index;
+        } else {
+            PageLayout::postError(_('Diese ILIAS-Installation ist nicht aktiv.'));
+        }
+    }
+
     /**
      * Add module to ILIAS installation
      * @param $index Index of ILIAS installation
diff --git a/app/views/admin/ilias_interface/edit_interface_settings.php b/app/views/admin/ilias_interface/edit_interface_settings.php
index 0e273bcf71a3807f80698c10f19bf5fecf5bb9f9..5936d5e7c958e0203a0232f9ccb2b124ecb91243 100644
--- a/app/views/admin/ilias_interface/edit_interface_settings.php
+++ b/app/views/admin/ilias_interface/edit_interface_settings.php
@@ -31,9 +31,13 @@
         <input type="checkbox" name="ilias_interface_allow_add_own_course" value="1" <?= !empty($ilias_interface_config['allow_add_own_course']) ? 'checked' : '' ?>>
         <span><?= _('Lehrende können einen eigenen ILIAS-Kurs verknüpfen, der noch nicht mit Stud.IP verbunden ist') ?></span>
     </label>
+    <label>
+        <input type="checkbox" name="ilias_interface_show_course_paths" value="1" <?= !empty($ilias_interface_config['show_course_paths']) ? 'checked' : '' ?>>
+        <span><?= _('Die Kursübersicht auf dem Arbeitsplatz zeigt die Magazinpfade der Kurse in ILIAS und erlaubt das Filtern nach Semesternamen') ?></span>
+    </label>
     <label>
         <input type="checkbox" name="ilias_interface_show_tools_page" value="1" <?= !empty($ilias_interface_config['show_tools_page']) ? 'checked' : '' ?>>
-        <span><?= _('Account-Seite im Tools-Bereich ist für alle Nutzenden (auch für Studierende ohne Berechtigung zum Anlegen von Lernobjekten) sichtbar') ?></span>
+        <span><?= _('Die Accountübersicht auf dem Arbeitsplatz ist für alle Nutzenden (auch für Studierende ohne Berechtigung zum Anlegen von Lernobjekten) sichtbar') ?></span>
     </label>
     <label>
         <input type="checkbox" name="ilias_interface_search_active" value="1" <?= !empty($ilias_interface_config['search_active']) ? 'checked' : '' ?>>
diff --git a/app/views/my_ilias_accounts/my_courses.php b/app/views/my_ilias_accounts/my_courses.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b4eb805377e07e35cedc84e49411b809b924e82
--- /dev/null
+++ b/app/views/my_ilias_accounts/my_courses.php
@@ -0,0 +1,62 @@
+<form method="post">
+<? foreach ($ilias_list as $ilias_index => $ilias) : ?>
+    <table class="default">
+        <caption>
+            <?= sprintf(_('Meine Kurse in %s'), htmlReady($ilias->getName())) ?>
+        </caption>
+        <colgroup>
+            <col style="width: 2%">
+            <col>
+            <col style="width: 15%">
+            <col style="width: 15%">
+            <? if (Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_course_paths']) : ?>
+                <col style="width: 30%">
+            <? endif ?>
+        </colgroup>
+        <thead>
+            <th></th>
+            <th><?= _('Name') ?></th>
+            <th><?= _('Stud.IP-Veranstaltung') ?></th>
+            <th><?= _('Status') ?></th>
+            <? if (Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_course_paths']) : ?>
+                <th><?= _('Pfad') ?></th>
+            <? endif ?>
+        </thead>
+    <? if (array_key_exists($ilias_index, $courses_list) && count($courses_list[$ilias_index]) > 0) : ?>
+        <? foreach ($courses_list[$ilias_index] as $crs_id => $course) : ?>
+            <tr>
+                <td><?= Icon::create('learnmodule', Icon::ROLE_INFO)->asImg(['title' => _('ILIAS-Kurs')]) ?></td>
+                <td>
+                    <? if ($course['online'] || in_array($course['status'], [2, 4])) : ?>
+                        <a href="<?= URLHelper::getLink("dispatch.php/my_ilias_accounts/view_course/{$ilias_index}/{$crs_id}")?>" data-dialog=""><?= htmlReady($course['title']) ?></a>
+                    <? else : ?>
+                        <?= htmlReady($course['title']) ?>
+                    <? endif ?>
+                    <?= !$course['online'] ? '(' . _('offline') . ')' : '' ?>
+                </td>
+                <td>
+                    <? if ($course['studip_object']) : ?>
+                        <a href="<?= URLHelper::getLink('dispatch.php/course/basicdata/view', ['cid' => $course['studip_object']]) ?>">
+                            <?= Icon::create('seminar')->asImg(['title' => Course::find($course['studip_object'])->Name]) ?>
+                        </a>
+                    <? endif ?>
+                </td>
+                <td><?= htmlReady($course['status_text'] ?: _('unbekannt')) ?></td>
+                <? if (Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS['show_course_paths']) : ?>
+                    <td><?= htmlReady($course['path']) ?></td>
+                <? endif ?>
+            </tr>
+        <? endforeach ?>
+    <? else : ?>
+        <tr>
+            <td colspan="5">
+                 <?= sprintf(
+                     $selected_semester ? _('Keine Kurse im System %s zum gewählten Filter gefunden.') : _('Sie nehmen im System %s an keinen Kurs teil.'),
+                     htmlReady($ilias->getName())
+                 )?>
+            </td>
+        </tr>
+   <? endif ?>
+   </table>
+<? endforeach ?>
+</form>
\ No newline at end of file
diff --git a/app/views/my_ilias_accounts/view_course.php b/app/views/my_ilias_accounts/view_course.php
new file mode 100644
index 0000000000000000000000000000000000000000..168589728fde4c87624add818ae21bd9c16b049f
--- /dev/null
+++ b/app/views/my_ilias_accounts/view_course.php
@@ -0,0 +1,11 @@
+<form class="default" action="<?= $controller->link_for($module->getRoute('view_tools')) ?>" method="post" target="_blank">
+    <?= CSRFProtection::tokenTag() ?>
+    <?= $this->render_partial('my_ilias_accounts/_ilias_module.php') ?>
+    <footer data-dialog-button>
+    <? if ($ilias->isActive()) : ?>
+        <?= $module->isAllowed('start') ? Studip\LinkButton::create(_('Zum Kurs in ILIAS'), $controller->url_for($module->getRoute('start')), ['target' => '_blank', 'rel' => 'noopener noreferrer']) :'' ?>
+        <?= $module->isAllowed('edit') ? Studip\LinkButton::create(_('Kurs bearbeiten'), $controller->url_for($module->getRoute('edit')), ['target' => '_blank', 'rel' => 'noopener noreferrer']) :'' ?>
+    <? endif ?>
+        <?= Studip\Button::createCancel(_('Schließen'), 'cancel', ['data-dialog' => 'close']) ?>
+    </footer>
+</form>
\ No newline at end of file
diff --git a/lib/ilias_interface/ConnectedIlias.php b/lib/ilias_interface/ConnectedIlias.php
index 0dc172375b25275898adb73b1b438391b9e94e08..a917e1a797ee63b3e26c69624aab4e581a7976d3 100644
--- a/lib/ilias_interface/ConnectedIlias.php
+++ b/lib/ilias_interface/ConnectedIlias.php
@@ -606,6 +606,27 @@ class ConnectedIlias
         return $this->soap_client->getUserFullname($user_id);
     }
 
+    /**
+     * get connected studip courses list for given user
+     *
+     * @param string $user_id Stud.IP user id
+     * @return array course id array
+     */
+    public function getConnectedCoursesForUser(string $user_id): array
+    {
+        $query = 'SELECT module_id, object_id
+                  FROM object_contentmodules 
+                  JOIN seminar_user ON object_contentmodules.object_id = seminar_user.Seminar_id
+                  WHERE seminar_user.user_id = ? 
+                    AND system_type = ?
+                    AND module_type = ?';
+        return DBManager::get()->fetchPairs($query, [
+            $user_id,
+            $this->index,
+            'crs'
+        ]);
+    }
+
     /**
      * get ILIAS path
      *
diff --git a/lib/ilias_interface/IliasSoap.php b/lib/ilias_interface/IliasSoap.php
index 585595b3d88fb6f1fdd47a0b4600d5921310a47f..916819550205d6ee896226792dde788cdf65b4fa 100644
--- a/lib/ilias_interface/IliasSoap.php
+++ b/lib/ilias_interface/IliasSoap.php
@@ -28,7 +28,7 @@ class IliasSoap extends StudipSoapClient
     private $user_sid;
     private $user_type;
     private $soap_cache;
-    private $separator_string;
+    public $separator_string;
     private $caching_active = false;
 
 
@@ -1170,8 +1170,7 @@ class IliasSoap extends StudipSoapClient
      *
      * returns repository-path to ilias-object
      * @access public
-     * @param string source_id reference-id
-     * @param string target_id reference-id
+     * @param string ref_id reference id
      * @return string result
      */
     function getPath($ref_id)
@@ -1202,8 +1201,7 @@ class IliasSoap extends StudipSoapClient
      * returns repository-path to ilias-object
      *
      * @access public
-     * @param string source_id reference-id
-     * @param string target_id reference-id
+     * @param string ref_id reference id
      * @return string result
      */
     function getRawPath($ref_id)
@@ -1679,6 +1677,72 @@ class IliasSoap extends StudipSoapClient
         }
     }
 
+    /**
+    * get courses for given user by status
+    *
+    * gets course array for given course data
+    * @access public
+    * @param string $user_id ilias user id
+    * @param string $status MEMBER = 1, TUTOR = 2, ADMIN = 4, OWNER = 8
+    * @return array course array
+    */
+    public function getCoursesForUserStatus(string $user_id, string $status): array
+    {
+        $courses = [];
+        $xmlrs = '<?xml version="1.0" encoding="utf-8"?>
+        <result>
+            <colspecs>
+                <colspec idx="0" name="user_id"/>
+                <colspec idx="1" name="status"/>
+            </colspecs>
+            <rows>
+                <row>
+                    <column>'.$user_id.'</column>
+                    <column>'.$status.'</column>
+                </row>
+            </rows>
+        </result>';
+        $param = [
+            'sid' => $this->getSID(),
+            'parameters' => $xmlrs
+        ];
+        $result = $this->call('getCoursesForUser', $param);
+
+        if ($result) {
+            $s = simplexml_load_string($result);
+            foreach ($s->rows->row as $row) {
+                $ref_id = (string)$row->column[0];
+                $courses[$ref_id] = [];
+                $courses[$ref_id]['title'] = (string)$row->column[2];
+                $s2 = simplexml_load_string((string)$row->column[1]);
+                $courses[$ref_id]['title'] = trim((string)$s2->MetaData->General->Title);
+                $courses[$ref_id]['description'] = trim((string)$s2->MetaData->General->Description);
+                $courses[$ref_id]['status_text'] = '';
+                $courses[$ref_id]['status'] = $status;
+                switch ($status) {
+                    case 1:
+                        $courses[$ref_id]['status_text'] = _('Kursmitglied');
+                        break;
+                    case 2:
+                        $courses[$ref_id]['status_text'] = _('Kurstutor/-in');
+                        break;
+                    case 4:
+                        $courses[$ref_id]['status_text'] = _('Kursadministrator/-in');
+                        break;
+                }
+                if (isset($s2->Settings->Availability->Unlimited)) {
+                    $courses[$ref_id]['online'] = 1;
+                } elseif (isset($s2->Settings->Availability->NotAvailable)) {
+                    $courses[$ref_id]['online'] = 0;
+                } else {
+                    $courses[$ref_id]['online'] = 1;
+                }
+                $courses[$ref_id]['availability'] = $s2->Settings->Availability;
+            }
+        }
+        return $courses;
+    }
+
     /**
     * check reference by title
     *
diff --git a/lib/ilias_interface/studip_referrer_7x.php b/lib/ilias_interface/studip_referrer_7x.php
index e3675692cbf8c65be022b11006785ccad021ac40..fd62820f2d95c2463e1891552549febefec55a7b 100644
--- a/lib/ilias_interface/studip_referrer_7x.php
+++ b/lib/ilias_interface/studip_referrer_7x.php
@@ -107,6 +107,10 @@ if(file_exists("./ilias.ini.php")){
         case 'exc':
             $base_url = "ilias.php?baseClass=ilExerciseHandlerGUI";
             break;
+        case 'cat':
+        case 'crs':
+            $base_url= "ilias.php?baseClass=ilrepositorygui&cmd=edit";
+            break;
         case 'webr':
             $base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI";
             break;
diff --git a/lib/ilias_interface/studip_referrer_8x.php b/lib/ilias_interface/studip_referrer_8x.php
index f7552afb46fabcd358d99f98da70c45d85e1c7ba..fc9f66dc1710d069437d1a24e6f769ce4e02f87f 100644
--- a/lib/ilias_interface/studip_referrer_8x.php
+++ b/lib/ilias_interface/studip_referrer_8x.php
@@ -107,6 +107,10 @@ if(file_exists("./ilias.ini.php")){
         case 'exc':
             $base_url = "ilias.php?baseClass=ilExerciseHandlerGUI";
             break;
+        case 'cat':
+        case 'crs':
+            $base_url= "ilias.php?baseClass=ilrepositorygui&cmd=edit";
+            break;
         case 'webr':
             $base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI";
             break;
diff --git a/lib/modules/IliasInterfaceModule.php b/lib/modules/IliasInterfaceModule.php
index 2ab82ad1bb1614284f249d4cdbf7ed2a6a176c45..54a49169b9cc761871cb7718a6aeb490f29e7848 100644
--- a/lib/modules/IliasInterfaceModule.php
+++ b/lib/modules/IliasInterfaceModule.php
@@ -19,10 +19,20 @@ class IliasInterfaceModule extends CorePlugin implements StudipModule, SystemPlu
                 Navigation::addItem('/admin/config/ilias_interface',
                     new Navigation(_('ILIAS-Schnittstelle'), 'dispatch.php/admin/ilias_interface'));
             }
-            if (Seminar_Perm::get()->have_perm('tutor') || (Seminar_Perm::get()->have_perm('autor') && array_key_exists('show_tools_page', $ilias_interface_config) && $ilias_interface_config['show_tools_page'])) {
-                $ilias = new Navigation(_('ILIAS'), 'dispatch.php/my_ilias_accounts');
+            if (Seminar_Perm::get()->have_perm('tutor') || Seminar_Perm::get()->have_perm('autor')) {
+                $ilias = new Navigation(_('ILIAS'), 'dispatch.php/my_ilias_accounts/my_courses');
                 $ilias->setImage(Icon::create('ilias'));
                 $ilias->setDescription(_('Schnittstelle zu ILIAS'));
+                $ilias->addSubNavigation(
+                    'my_courses',
+                    new Navigation(_('Meine Kurse'), 'dispatch.php/my_ilias_accounts/my_courses')
+                );
+                if (!empty($ilias_interface_config['show_tools_page'])) {
+                    $ilias->addSubNavigation(
+                        'my_accounts',
+                        new Navigation(_('Meine Lernobjekte und Accounts'), 'dispatch.php/my_ilias_accounts')
+                    );
+                }
                 Navigation::addItem('/contents/my_ilias_accounts', $ilias);
             }
         }