Fachschaft Informatik

Prüfungsprotokolle


Prüfungsprotokolle lesen



Protokolle (3 gefunden)

Nr.PrüferFach
990 Mendling, Jan Prof. Dr. Conceptual Modeling

Protokoll

= Datum der Prüfung  
18.07.2022

= Benötigte Lernzeit als Empfehlung 
ich habe 4 Tage gelernt, war aber auch in den meisten VL und Übungen

= Verwendete Materialien (Bücher, Skripte etc...)
Vorlesungsfolien und dazugehörige Paper, Übungsfolien. Ich kann wirklich empfehlen in die Paper reinzulesen (Introduction und Conclusion reicht oft), die geben oft eine bessere Erklärung als die Folien und handeln meist um genau das gleiche.

= "Atmosphäre" der Prüfung / Verhalten der Beisitzer
Klassische In person Klausur. Wurde allerdings in 2 Räumen geschrieben und in einem wurde auf die minute genau pünktlich angefangen, in dem anderen in Ruhe der Prozess erklärt. Wir hatten 60 min Zeit für 6 Fragen, dadurch definitiv ein bisschen Zeitstress.

= Prüfungsfragen
Task 1: Multiple Choice (10.5 points)
Multiple answers, we had to check the correct ones. 

A bit about Ontology und Petri nets, events, Representation theory (which definition is true and then something about construct redundancy, overload, …), reading cardinalities (from the example in the lecture), …

Task 2: Diagram (9.5 points)
a)	What is a diagram? How does it help? Name five elements a diagram has and give an example.
b)	Somehow apply cognitive theories to the use of diagram? (Something like dual coding)

Task 3: Events (10 points)
a)	Explain event structure according to Wand and Weber (Paper about Events)
b)	Given two events: “Brad Pitt is getting married”, “the marrige of Jennifer and Brad”. Are those the same event? Argue with the help of Wand and Weber.

Task 4: BPMN (10 points)
Create a BPMN Model for an order system with two lanes for sale and warehouse, where the order is either in stock or the raw materials have to be ordered and order needs to be produced. Then the invoice is send, wait for payment, while the order is shipped, then order archived. 
(little bit more complex with that with getting data from database or something and written in a long text that took about 3 min to understand and was obviously designed to confuse as, as chronological processes were not explained chronologically)

Task 5: UML in Practice (10 points)
8 true/false MC questions about the content of the paper "UML in practice " 

Task 6: Class Diagram (10 points)
a)	Create a class diagram for the entities: Mall, Customer, Store, Department, Store Manager, Employee, Salesperson, Store website, Store Magazine, Merchandise. 
b)	Define Complexity Management and name the two approaches to dealing with them and give an example how they could be applied here. 

= Note (Optional)
1.3, der Schnitt lag aber irgendwo im 3er Bereich. Durchgefallen sind aber kaum welche unfreiwillig.

= Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...)
Man hat bei der Klausur sehr eindeutig gemerkt welche Aufgaben aus der Vorlesung und der Übung kamen. Allgemein waren die Fragen sehr offen geschrieben, sodass glaube ich viele unterschiedliche Interpretationen möglich waren. Man hat auch nicht zu lange Zeit über die Fragen nachzudenken. Hier hilft es einfach was hinzuschreiben, auch wenn man nicht weiß ob es sich auf das richtige bezieht, da ich das Gefühl hatte, dass richtige Aussagen, auch wenn leicht am Thema vorbei trotzdem gewertet werden. 

Nr.PrüferFach
1021 Mendling, Jan Prof. Dr. Grundlagen der Programmierung

Protokoll

= Datum der Prüfung: 22.02.2024
= Benötigte Lernzeit als Empfehlung: Für diejenigen, die Programmieren neulich gelernt haben: 1-2 Wochen
= Verwendete Materialien: Übungsfolien, Prüfungsprotokolle, Repetetorium, https://www.rapidtables.com/convert/number/base-converter.html, https://www.h-schmidt.net/FloatConverter/IEEE754.html
= "Atmosphäre" der Prüfung / Verhalten der Beisitzer: Angenehm, die Fragen wurden deutlich beantwortet
= Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...): Faire Prüfung



1. Grundlagen (ca. 5+6+4 p von insgesamt 90 p)
<0> Ausgabe des Programms angeben für n = 5, n = 15/7, n = -3 und n = 11
public static void mystery (int n) {
    for (int i = 3; i <= n; i++) {
        if (i % 2 == 0) {
            continue;
        }

        boolean b = true;

        for (int k = 3; k*k <= i; k += 2) {
            if (i % k == 0) {
                b = false;
                break;
            }
        }

        if (b) { System.out.println(i+" "); }
    }
}

<1> Innere for-Schleife über k aus <0> in do-while-Schleife umwandeln

<2> Bedingungsoperatoren: Ausgabe der folgenden Zeile (Zeile in der Arbeit war vermutlich leicht anders) mit verschiedenen a, b, c.
System.out.println(a > b ? a < c ? a : c : b > c ? b : c)
1: Ausgabe mit a = 3, b = 2, c = 1
2: Ausgabe mit a = 1, b = -2, c = 3
3: Ausgabe mit ....





2. Zahlen umrechnen (ca. 4+4+6+4 p)
<0> Zahlen

    2024_10 in Basis 2 und 8 angeben

    1018_14 in Basis 16  (es gab eine Hilfstabelle 10x10_16)

<1> Mehr Zahlen

    512_6 + 1024_6

    FACE_16 & BABE_16

    DEAD_16 - C0DE_16

<2> Floating Point IEEE Darstellung

    Gegebene Zahl:    0 10000001 00000000000000000000000

    1) Das vierfache der gegebenen Zahl.

    2) Gegebene Zahl + 2.

    3) -4,75 als 32 Bit Floating Point Number.




3. Prozedurale Programmierung (ca. 15+6 p)
<0> Programm schreiben, das eine beliebige positive Zahl n zur Basis b (2-32) als Binärzahl ausgibt. Gegeben war der Tipp, sich am Horner-Schema zu orientieren, und folgendes:

    char[] keys = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();

    public static String toBase(int n, int b){ /* Your code goes here */ }


<1> Arrays: Ausgabe bzw. compile oder runtime error jeder Zeile angeben (ungefähre Zahlen und Aufrufe)

    int[][] x = {{},{1,2,5,6,2,7,9},{5,3,9,5}};


    System.out.println(x[1][0]);

    x[0] = new int[0];

    System.out.println(x[0][0];

    x[0] = new int []{2,6,3,6,2};

    System.out.println(x[1][1]);

    System.out.println (x[2][1].length);




4. Rekursion (ca. 5+13 p)
<0> Ausgabewerte zweier Funktionen angeben, die sich gegenseitig aufrufen.
public static boolean foo(int n) {
    if (n == 0) {
        return true;
    } else {
        return( bar( n - 1 ) );
    }
}

public static boolean bar(int n) {
    if (n == 0) {
        return false;
    } else {
        return ( foo( n - 1 ) );
    }
}

a:  Rückgabe für foo(2)
b:  Rückgabe für foo(5)
c:  Rückgabe für foo(-1)
d:  Wie oft wird bar mit foo(2800) aufgerufen?
e:  Was berechnet foo im Allgemeinen für positive ganze Zahlen?

<1> Binary Search Suchalgorithmus (findet Position eines Values in einem Array) von rekursiver Implementierung in Schleifen-Form umwandeln.




5. OOP (ca. 13+5 p)
<0> Gegeben: Klasse "Rectangle":
public class Rectangle{
    double length;
    double width;
    static int c;

    public Rectangle(double length, double width){
        this.length = length;
        this.width = width;
    }

    public double calculateArea(){
        c++;
        return this.length * this.width;
    }

    public boolean isBiggerThan(Rectangle otherRectangle){
        c += 2;
        return calculateArea() > otherRectangle.calculateArea();
    }

    public static void main(String args[]){
        Rectangle r1 = new Rectangle(5.0, 3.0);
        Rectangle r2 = new Rectangle(4.0, 4.0);
        System.out.println(r1.length);
        System.out.println(c);
        System.out.println(r2.calculateArea());
        System.out.println(r1.isBiggerThan(r2));
        System.out.println(c);
    }
}

a: Was geben die 5 System.out.println() aus main() aus?
b: Einen zweiten Konstruktor mit anderer Signatur anlegen.

<1> Gegeben: Interfaces, abstrakte Klassen und Klassen A, B, C, D welche voneinander erben/ sich implementieren.
Es werden neue Instanzmethoden/ Objekte etc. geschaffen, man muss angeben, welche zulässig oder nicht zulässig sind (Per Boxen zum Ankreuzen) (5 Punkte)

Nr.PrüferFach
1037 Mendling, Jan Prof. Dr. Grundlagen der Programmierung

Protokoll

= 2. Prüfungstermin 02.04.2024
= Benötigte Lernzeit als Empfehlung: 2-3 Wochen eher intensiv, nachdem ich wegen fehlender Vorerfahrung und Übung die erste Prüfung noch durchgefallen war.
= Verwendete Materialien: Bücher waren kaum hilfeich, viel mit Youtube-Videos und Google-Suche, auch die Vorlesungsfolien haben teilweise gute Illustrationen - vllt hätte auch die verstärkte Nutzung von GPT hilfreich sein können.
= Fazit: Die Prüfungen sind vom Schwierigkeitsgrad tendenziell nur mit guter Erfahrung oder Vorbereitung machbar. Es macht einen wichtigen Unterschied, zu wissen, wie viel zu lernen ist. Die beiden Protokolle von 2024 müssten einen guten Eindruck geben.


Protokoll

1 Kontrollstrukturen
1. Verschachtelte for-Schleifen auslesen, für 8, 3, -3, 13, 11...

    static void mystery(int n){
        System.out.println(n+": ");
        for (int i = 1; i < n; i++){
         if (i % 2 != 0) continue;

         int q = i;

?      for (int s; q > 9; s--){

ca.         for (s = 1; q != 0; q /=10){
                s = q % 10;
         }
?       }
        if (q == 0 || q == 3 || q == 6 || q == 9)
        System.out.print(q+" ");
        }
    }
    
2. Die zwei inneren Schleifen in (do-)while umwandeln.

3. Bedingungsoperator mit Ausgabe für int a, b, c (1,2,3; -1,-2,-3; ...) (ungefähr:)
 return a<c?a>b?b:a:c<b?b:c ;


2  Rekursion
1. Rekursive Funktionen die sich gegenseitig aufrufen.
static int tic(int n){
if (n==0) return 0;
return tac(n-1);
} 
static int tac(int n){
if (n==0) return 1;
return toc(n-1);
} 
static int toc(intn){
if (n==0) return 3;
return tic(n-1);
}
Ausgabe für tic(n)
3, 5, 10, 2700
Bei 2700, wie oft wird toc() gerufen?
Was geben die Funktionen im Allgemeinen aus?

2. Rekursive Funktion die das kleinste gemeinsame Vielfache ausgibt. 
      static int kgV(int a, int b, int as, int ts){
        int t = a%b;
  ?     if (t == 0) return as*b /ts;
  ?     return (b, t, as*a, ts*t);  
  }
   Umwandeln in (do-)while Schleife. 'as' und 'ts' sind Hilfsvariablen mit dem Anfangswert 1.
int kgV(int a, int b){ ...


3 Zahlen
1. xxxx_8 umwandeln in Basis 2 und Basis 16
2. xxx_11 umwandeln in Basis ?9
    subtraktion xxxx-xxxx_9
    addition xxxx+xxx_7
    multiplikation 1100*1001
3. Float 32-Bit 0 1000 0011 00000...
    a Dezimalwert
    b Wert geteilt durch 2
 -0.125 als 32-bit Fließkommadarstellung


4 Prozedurale Programmierung
1. Schreibe ein Programm zur ?Binärausgabe der Zahlen aus einem char[] Array zur Basis n (2-36). 
Der Zahlenwert von char(a) darf über die Funktion von Aufgabe 2 gerufen werden.
static ?String toBin(char[]a, int n) { ... 

2. Schreibe eine Funktion die für char(c) '1-10' und 'A-Z' (10-36) den entsprechenden Zahlenwert zurückgibt.
static int toInt(char c) { ...


5 Objektorientierung
1. Was wird für die unten stehenden Aufrufe ausgegeben? (ungefähr:)
class Body{
    public static int k = 0;

    public double volume() {
        return 0;
    }
    public boolean compare(Body b){
        return this.volume() > b.volume();
}
class Cuboid extends Body{
    double a, b, c;
   public Cuboid (double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    public double volume(){
        k++;
        return a*b*c;
    }
}
public class demo {
    public static void main(String[] args) {
        Cuboid r1 = new Cuboid(2, 3, 2);
        Body r2 = new Cuboid(3, 1, 5);

        System.out.println(r1.volume());
        System.out.println(r2.volume());
        System.out.println(r1.compare(r2));
        System.out.println(Body.k);
    }
 }

2. Deklaration einer Subklasse Cube die mit passenden Konstruktoren Cuboid erweitert.

3. Schreibe eine Methode die den größtmöglichen Kreisradius zurückgibt der in einen Quader passt.
(Innerhalb des Klassenkontexts von Cuboid)
       
       double radMax(? ){ ...

4. Überladung - Welche Funktion wird gerufen? (ungefähr:)

static void test(Cube, Body){} //1
static void test(Body, Cube){} //2
static void test(Cube, Cube){} //3

public static void main(String[] args) {
        Cube c = new Cube();
        Body b = new Body();
        Body d = c;

        test(c, d);
        test(c, b);
        test(b, c);
        test(d, b);