Courses/ASE 24WS: Difference between revisions

(Create page + add first queries and text)
 
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<div style="font-size:35px; font-weight:bold"> Kurs Advanced Software Engineering, Wintersemester 24/25 </div> <!--so it doesn't show up in TOC-->
<div style="font-size:35px; font-weight:bold"> Kurs Advanced Software Engineering, Wintersemester 24/25 </div> <!--so it doesn't show up in TOC-->
M.Sc. Medieninformatik, Universität Regensburg.
M.Sc. Medieninformatik, Universität Regensburg.
Imagemap?


<div style="float:right; width:25em;">__TOC__</div>  
<div style="float:right; width:25em;">__TOC__</div>  
Line 11: Line 7:
<!-- Links to important/official resources -->
<!-- Links to important/official resources -->
<div style="width:40em; padding-bottom: 7px; background-color:#fff2e5; border: solid 2px #ffcc99">
<div style="width:40em; padding-bottom: 7px; background-color:#fff2e5; border: solid 2px #ffcc99">
* Der Kurs in [... GRIPS] (TODO)
* Der Kurs in [https://elearning.uni-regensburg.de/course/view.php?id=68743 GRIPS]
* Der Kurs in [https://campusportal.uni-regensburg.de:443/qisserver/pages/startFlow.xhtml?_flowId=detailView-flow&unitId=22990&periodId=426&navigationPosition=studiesOffered,courseoverviewShow SPUR]
* Der Kurs in [https://campusportal.uni-regensburg.de:443/qisserver/pages/startFlow.xhtml?_flowId=detailView-flow&unitId=22990&periodId=426&navigationPosition=studiesOffered,courseoverviewShow SPUR]
* Das GraphIT-Item für den Kurs: [[Item:Q1022]]
* Das GraphIT-Item für den Kurs: [[Item:Q1022]]
* [https://wiki.mi.ur.de/lehre/ws24/ase_24ws/start Tutorials] used in the Practice Sessions
</div>
</div>


== Overview ==
== Overview ==
The course gives an overview of current issues in Software Engineering. <!-- ein kurzer Satz über den Kurs -->
The course gives an overview of current issues and trends in Software Engineering. <!-- ein kurzer Satz über den Kurs -->
 


<!-- Floated Table that contains the big topics of the course note(32.5em)-->
<!-- Floated Table that contains the big topics of the course note(32.5em)-->
Line 41: Line 40:
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
}
| height=20em
| height=15em
}}
}}
|-
|-
Line 48: Line 47:


<!-- Rest der Beschreibung -->
<!-- Rest der Beschreibung -->
* Übung
It discusses strategies, patterns and automations to help develop and maintain complex software.
* Leistungsnachweis
 
 
The course includes bi-weekly practice sessions to teach the students practical skills using excercises and examples.
 
At the end of the semester each student has to turn in a project, in which they use their new found skills in developing a small contained application.




<blockquote>
<blockquote>
For a graph showing the full course click [https://tinyurl.com/23vz49ul here].
For a graph showing the full course click [https://tinyurl.com/23vz49ul here].
For a graph showing the goals of the course and their immediate prerequisites click [https://tinyurl.com/29qlmvzd here].
</blockquote>
</blockquote>
<!-- Table that contains simple/fast queries for the beggining & ending nodes of a course -->
{| class="wikitable"
! '''Required Knowledge''' !! '''Goals'''
|-
<!-- Linke Spalte -->
| style="width: 50%" | {{#widget:SPARQLquery|code=
#defaultView:Table
# Prerequsisite=outside -depends on-> Course-Topic=inside
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct
?Vorwissen ?VorwissenLabel
where {
  wd:Q1022 wdt:P14/wdt:P14 ?item. # get all items in course
 
  ?item wdt:P1 ?Vorwissen. # get the prerequsites
  MINUS { wd:Q1022 wdt:P14/wdt:P14 ?Vorwissen. } # filter out all prereqs that are included in the course
  service wikibase:label { bd:serviceParam wikibase:language "en".}
} LIMIT 30
|caption= Items, not part of the Course, but that are required knowledge
|height=20vh
}}
<!-- Rechte Spalte -->
| style="width: 50%" | {{#widget:SPARQLquery|code=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?ZielLabel ?Ziel
where {
  wd:Q1022 wdt:P36 ?Ziel.
  service wikibase:label { bd:serviceParam wikibase:language "en".}
} LIMIT 20
|caption=Items, marked as goals
|height=20vh
}}
|-
<!-- Linke Spalte -->
| [https://tinyurl.com/25gbeeea Full screen view of the Query]
<!-- Rechte Spalte -->
| [https://tinyurl.com/2c2qgg48 Full screen view of the Query]
|}
=== Timetable ===
<div style="border: solid 5px #d2d6e0; background-color:#eaecf0;">
{{#widget:SPARQLquery|code=
#defaultView:Timeline
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?Datum ?Session ?SessionLabel # ?Inhalte ?InhalteLabel
where {
  # todo. change Q:468 to current course
  wd:Q1022 wdt:P14 ?Session.
  ?Session wdt:P3 wd:Q427.
  ?Session wdt:P19 ?Datum.
  # OPTIONAL {?Session wdt:P14 ?Inhalte.}
 
  # re-get the alias as ?SessionLabel (for the links)
  ?Session skos:altLabel ?SessionLabel.
  FILTER (LANG(?SessionLabel) = "de").
 
  # Filter out all descriptive alias (aka. don't use a "[Course] - 01a"-type label)
  OPTIONAL {
    ?Session skos:altLabel ?alt.
    FILTER (!regex(?alt, "ASE", "i"))
    FILTER (LANG(?alt) = "en")  # Ensure the alias is in English
  } # and save them in a different var
 
  # Default to the normal alias, but use the descriptiv one if it exists
  BIND(IF (?aliasCount > 1, ?alt, ?alias) as ?SessionLabel)
 
  service wikibase:label { bd:serviceParam wikibase:language "en".}
} ORDER BY ASC(?Datum)
LIMIT 50
| height=38em
| caption=Planned Sessions
}}
</div>
=== Interests & Knowledge ===
A graph showing the items students have marked as "interesting" or "known".
<div style="border: solid 5px #d2d6e0; background-color:#eaecf0;">
{{#widget:SPARQLquery| code=
#defaultView:SwarmScatterChart
PREFIX wd: <https://graphit.ur.de/entity/>
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
SELECT DISTINCT ?known ?interests ?itemLabel # ?known ?interests ?item ?itemLabel
WHERE {
  wd:Q1022 wdt:P14* ?item.
  OPTIONAL {
    SELECT ?item ?itemLabel (COUNT(DISTINCT ?student) as ?known) WHERE {
      ?student wdt:P25 wd:Q1022.
      ?student wdt:P12 ?item.
    } GROUP BY ?item ?itemLabel
  }
  OPTIONAL {
    SELECT ?item ?itemLabel (COUNT(DISTINCT ?student) as ?interests) WHERE {
      ?student wdt:P25 wd:Q1022.
      ?student wdt:P23 ?item.
    } GROUP BY ?item ?itemLabel
  }.
  BIND (IF(!BOUND(?interests), 0, ?interest) as ?interests).
  BIND (IF(!BOUND(?known), 0, ?known) as ?known).
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
}}
</div>
=== Preview ===
A list of things to be discussed in the upcoming session.
<div style="border: solid 5px #d2d6e0; background-color:#eaecf0;">
{{#widget:SPARQLquery| code=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?today ?sessionDate ?interested ?completed
?item ?itemLabel
?resource ?resourceLabel ?url ?type ?typeLabel
where {
  { # subquery: get the session for next week
    SELECT ?session  ?today ?sessionDate
    WHERE {
      # get all sessions, that are "bigger" than today
      # BIND("2024-04-29"^^xsd:dateTime as ?today) # for test
      BIND(now() as ?today) # for real
 
      wd:Q1022 wdt:P14 ?session.
      ?session wdt:P3 wd:Q427.
      ?session wdt:P19 ?sessionDate.
      # FILTER(?sessionDate > ?today).
      FILTER(xsd:date(?sessionDate) >= xsd:date(?today)).
    } ORDER BY ASC(?sessionDate)
    LIMIT 1 # limit to 1 session
  } # end of subquery
 
  # limit to 1 session (from subquery)
  ?session wdt:P14 ?item.
  OPTIONAL {?item wdt:P21 ?resource.
            ?resource wdt:P20 ?url.
            ?resource wdt:P3 ?type}
 
    { # start of union
      {  # get all items user is interested in
      SELECT ?item ?itemLabel
      WHERE {
          ?user rdfs:label "{{#username:Max Mustermann}}"@en.
          ?user wdt:P23 ?item.
      } }
      BIND(IF(BOUND(?item), "true", "false") as ?interested)
  } UNION {
      { # get all items user has completed
      SELECT ?item ?itemLabel
      WHERE {
          ?user rdfs:label "{{#username:Max Mustermann}}"@en.
          ?user wdt:P12 ?item.
      } }
      BIND(IF(BOUND(?item), "true", "false") as ?completed)
  } UNION { # union: get all other items
      ?session wdt:P14 ?item.
      ?user rdfs:label "{{#username:Max Mustermann}}"@en.
      # Remove all item user is interested in / has completed -> otherwise duplicates
      MINUS {?user wdt:P23 ?item}
      MINUS {?user wdt:P12 ?item}
  } # end of union
 
  service wikibase:label { bd:serviceParam wikibase:language "en".}
} ORDER BY DESC(?resource)
LIMIT 80
| caption=A Todolist for {{#username:Max Mustermann}}
| height=30em
}}
</div>
=== Additional Learning ===
Items, that are part of the course, but are not [[Property:P14|included]] in a Session. Meaning that they either weren't discussed, or weren't discussed in depth.
{{#widget:SPARQLquery|code=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct
?category ?categoryLabel
?item ?itemLabel
where {
  # get all items in categories
  wd:Q1022 wdt:P14 ?category.
  ?category wdt:P3 wd:Q169.
  ?category wdt:P14 ?item.
 
  MINUS {
    # Remove all items that are included in Sessions
    wd:Q1022 wdt:P14 ?session.
    ?session wdt:P3 wd:Q427.
    ?item ^wdt:P14 ?session.
  }
  service wikibase:label { bd:serviceParam wikibase:language "en".}
} LIMIT 200
| caption=Items not "included in" a Session of the course.
}}
<small>Or they haven't been added yet.</small>
==Erste Schritte mit GraphIT==
[https://graphit.ur.de/wiki/First_Steps Hier] kann man sich eine Anleitung für die ersten Schritte mit GraphIT anschauen.

Latest revision as of 10:11, 10 August 2026

Kurs Advanced Software Engineering, Wintersemester 24/25

M.Sc. Medieninformatik, Universität Regensburg.



Overview

The course gives an overview of current issues and trends in Software Engineering.


Important Topics

Full Query

It discusses strategies, patterns and automations to help develop and maintain complex software.


The course includes bi-weekly practice sessions to teach the students practical skills using excercises and examples.

At the end of the semester each student has to turn in a project, in which they use their new found skills in developing a small contained application.


For a graph showing the full course click here.

For a graph showing the goals of the course and their immediate prerequisites click here.

Required Knowledge Goals

Items, not part of the Course, but that are required knowledge

Items, marked as goals

Full screen view of the Query Full screen view of the Query


Timetable

Planned Sessions

Interests & Knowledge

A graph showing the items students have marked as "interesting" or "known".

Preview

A list of things to be discussed in the upcoming session.

A Todolist for Max Mustermann

Additional Learning

Items, that are part of the course, but are not included in a Session. Meaning that they either weren't discussed, or weren't discussed in depth.

Items not "included in" a Session of the course.

Or they haven't been added yet.


Erste Schritte mit GraphIT

Hier kann man sich eine Anleitung für die ersten Schritte mit GraphIT anschauen.