{"id":2179,"date":"2025-07-07T10:21:56","date_gmt":"2025-07-07T10:21:56","guid":{"rendered":"https:\/\/interactivehpc.dk\/?p=2179"},"modified":"2025-08-12T09:00:11","modified_gmt":"2025-08-12T09:00:11","slug":"workshop-recording-ucloud-courses-hands-on","status":"publish","type":"post","link":"https:\/\/interactivehpc.dk\/?p=2179","title":{"rendered":"Webinar recording:  UCloud courses hands-on"},"content":{"rendered":"\n<p class=\"gp-gutenbergpro-23f9f\"><\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/interactivehpc.dk\/wp-content\/uploads\/2025\/08\/Workshop_recording_SUB.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"gp-gutenbergpro-ef063\">In this video we will go through the process of developing a course on UCloud, using UCloud Courses \u2013 a tool for hosting and managing university courses on UCloud. Want to know more about this new feature, check out our <a href=\"https:\/\/interactivehpc.dk\/?p=2099\" data-type=\"post\" data-id=\"2099\">webinar recording introducing UCloud Courses.<\/a><\/p>\n\n\n\n<h6 class=\"wp-block-heading gp-gutenbergpro-9b4a0\"><strong>Introduction<\/strong><\/h6>\n\n\n\n<p class=\"gp-gutenbergpro-11a4d\">00:00 &#8211; Outline of the workshop agenda<br>03:10 &#8211; Introduction to the UCloud Courses concept<br>04:23 &#8211; Advantages of using UCloud Courses<br>05:56 &#8211; Outline of the steps involved in developing a UCloud Course<br>09:54 &#8211; Requesting and planning a UCloud Course<br>10:20 &#8211; Example of the planning and structuring of an existing UCloud Course<\/p>\n\n\n\n<h6 class=\"wp-block-heading gp-gutenbergpro-e7e6d\"><strong>Developing a UCloud Course step by step<\/strong><\/h6>\n\n\n\n<p class=\"gp-gutenbergpro-16b36\"><strong>Setting up the environment<\/strong><br>15:53 &#8211; Preliminary remarks<br>17:15 &#8211; Showing the existing UCloud Course that will be re-developed in the workshop<br>18:02 &#8211; Showing the UCloud-Courses GitHub repository<br>18:40 &#8211; Software requirements and -recommendations<br>20:22 &#8211; Short introduction to Git and GitHub<br>24:27 &#8211; Cloning the repository<br>25:15 &#8211; Creating a working branch<br>26:12 &#8211; What should go in the UCloud-Courses repository and what shouldn&#8217;t<br>27:24 &#8211; Installing the required dependencies<\/p>\n\n\n\n<p class=\"gp-gutenbergpro-96336\"><strong>Creating a new UCloud Course and modifying the templates <\/strong><br>28:00 &#8211; Creating a UCloud Course using a prepared script<br>30:31 &#8211; Walk-through of the different auto-generated files\/folders in the course folder<br>33:35 &#8211; Short introduction to Docker<br>38:15 &#8211; Modifying the Dockerfile<br>42:32 &#8211; What should go in the UCloud-Courses repository and what shouldn&#8217;t<br>45:28 &#8211; Building the Docker image locally using a prepared script<br>47:54 &#8211; Modifying the starting script<br>01:00:50 &#8211; What can, shouldn&#8217;t, and mustn&#8217;t be changed while the course is running<\/p>\n\n\n\n<p class=\"gp-gutenbergpro-caeaf\"><strong>Building and testing the course locally<\/strong><br>01:05:00 &#8211; Re-building the Docker image locally using a prepared script<br>01:05:25 &#8211; Running a Docker container locally using a prepared script<br>01:10:58 &#8211; Opening the JupyterLab interface on localhost<\/p>\n\n\n\n<p class=\"gp-gutenbergpro-038b6\"><strong>Finalising the course app<\/strong><br>01:12:48 &#8211; Opening a pull request and requesting code review<br>01:19:44 &#8211; Testing the course app on UCloud before it&#8217;s deployed<\/p>\n\n\n\n<h6 class=\"wp-block-heading gp-gutenbergpro-73a36\">Closing remarks<\/h6>\n\n\n\n<p class=\"gp-gutenbergpro-bcaf1\">01:25:44 &#8211; Reusing\/updating an existing UCloud course<br>01:28:19 &#8211; The financial model in brief<br>01:29:38 &#8211; Useful links and resources<\/p>\n\n\n\n<p class=\"gp-gutenbergpro-99450\"><\/p>\n\n\n\n<p class=\"gp-gutenbergpro-9067b\">UCloud-Courses GitHub repository:<br><a href=\"https:\/\/github.com\/SDU-eScience\/UCloud-Courses\">https:\/\/github.com\/SDU-eScience\/UCloud-Courses<\/a><\/p>\n\n\n\n<p class=\"gp-gutenbergpro-193d0\">README in the UCloud-Courses GitHub repository:<br><a href=\"https:\/\/github.com\/SDU-eScience\/UCloud-Courses\/blob\/main\/README.md\">https:\/\/github.com\/SDU-eScience\/UCloud-Courses\/blob\/main\/README.md<\/a><\/p>\n\n\n\n<p class=\"gp-gutenbergpro-9e4e6\">Wiki page in the UCloud-Courses GitHub repository:<br><a href=\"https:\/\/github.com\/SDU-eScience\/UCloud-Courses\/wiki\">https:\/\/github.com\/SDU-eScience\/UCloud-Courses\/wiki<\/a><\/p>\n\n\n\n<p class=\"gp-gutenbergpro-9c435\">The UCloud course app redeveloped in the workshop (UCloud login required):<br><a href=\"https:\/\/cloud.sdu.dk\/app\/jobs\/create?app=nlp-demo-course_147222U005\">https:\/\/cloud.sdu.dk\/app\/jobs\/create?app=nlp-demo-course_147222U005<\/a><\/p>\n\n\n\n<p class=\"gp-gutenbergpro-715ab\">eScience Servicedesk (point of first contact):<br><a href=\"https:\/\/support.escience.sdu.dk\/\">https:\/\/support.escience.sdu.dk\/<\/a><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this video we will go through the process of developing a course on UCloud, using UCloud Courses \u2013 a tool for hosting and managing university courses on UCloud. Want to know more about this new feature, check out our webinar recording introducing UCloud Courses. Introduction 00:00 &#8211; Outline of the workshop agenda03:10 &#8211; Introduction [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2181,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"gtp_columnspro_styling":"{}","gtp_paragraph_styling":"{\"715ab508-f895-4137-bd00-21263151f1b0\":\" .gp-gutenbergpro-715ab { background-position-x: 50%;\\nbackground-position-y: 50%;\\nbackground-size: cover;\\nheight: px; }\"}","gtp_heading_styling":"{\"73a36f0e-93a7-4cfa-9d52-e985d49f19df\":\" .gp-gutenbergpro-73a36 { background-position-x: 50%;\\nbackground-position-y: 50%;\\nbackground-size: cover;\\nletter-spacing: 0px !important;\\ntext-shadow: 0px 0px 0px ;\\nfont-family:  !important; }\"}","gtp_spacer_styling":"{}","gtp_video_styling":"{}","gtp_group_styling":"{}","gtp_cover_styling":"{}","footnotes":""},"categories":[314,40,38,12,10,353],"tags":[],"class_list":["post-2179","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application___en","category-interactive-hpc","category-supercomputing","category-teaching","category-tutorial","category-webinars-and-tutorials-video"],"lang":"en","translations":{"en":2179,"da":2189},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/posts\/2179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2179"}],"version-history":[{"count":8,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/posts\/2179\/revisions"}],"predecessor-version":[{"id":2225,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/posts\/2179\/revisions\/2225"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=\/wp\/v2\/media\/2181"}],"wp:attachment":[{"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interactivehpc.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}