# Durchgefallen bei der Bachelorarbeit



## RezaScript (20. Mrz 2020)

Hallo, ich habe soeben meine Bachelorarbeit geschrieben und bin leider durchgefallen. Bei meiner Arbeit ging es um Algorithmen bei einer Web-Applikation. 

Es gab zwei Gründe, weshalb ich durchgefallen bin:
1. Bei der Verteidigung wurde ich gefragt, ob Tests stattgefunden haben. Meine Antwort: Ja, aber die Tests wurden MANUELL, etwa tausend mal ausgeführt - schlechte Antwort!
2. Es hiess, "Du verkaufst deine Applikation besser als sie eigentlich ist".

Der zweite Grund führte hauptsächlich dazu, dass ich durchfalle, denn ich habe einen Begriff verwendet den ich nicht hätte verwenden sollen und das ist "neuronale Netze". Dabei geht es um ein Feature meiner Applikation (also nicht die hauptsächliche Arbeit). Das Feature heisst AutoFill und kann folgendes: Der Benutzer muss ständig ein Formular mit sehr vielen Feldern ausfüllen. Jedes mal wenn er das Formular ausfüllt, werden die Werte in der Datenbank gespeichert. Insofern ausreichend Daten vorhanden sind, merkt sich das System wie hoch die Wahrscheinlichkeit wäre, dass der Benutzer bei einem Eingabefeld nochmals das gleiche eintippen würde. Die Felder die am wahrscheinlichsten sind werden automatisch ausgefüllt.
Beispiel: Bei einem Feld muss ein Land eingegeben werden. 6 Mal hat der Benutzer Deutschland eingegeben und einmal Kanada, einmal Italien, einmal Japan und einmal Frankreich. Die Wahrscheinlichkeit liegt also bei 60%, dass er nochmals Deutschland eintippen würde. 

Ich habe nun die Möglichkeit meine Arbeit nochmals durchzugehen. Es reicht leider nicht mehr für die beste Note aber ich möchte gerne das Maximum herausholen wo ich nur kann. 

Meine Fragen:
1. Durch welche Art und Weise lassen sich Algorithmen testen? Ich habe sie bis jetzt nur manuell über Postman getestet. 
2. Wie könnte ich denn mein Feature so optimieren, dass es doch irgendetwas mit neuronale Netze zu tun hat?


----------



## M.L. (21. Mrz 2020)

Man hätte ja vorher fragen können welche Methoden angewendet werden soll(t)en. Stichworte z.B. automatisierte Tests oder Machine Learning


----------



## kneitzel (21. Mrz 2020)

Zu 1.: so die Applikation ordentlich geschrieben wurde, hat Du den Business-Logik Part mit Unit Tests getestet und für die Oberfläche hast Du UI Tests.
Dann hast Du evtl. noch Last-Test, die zeigen, dass die Applikation auch viele gleichzeitige Anfragen bearbeiten kann. Und dann hast Du ggf. noch Testpläne für manuelle Tests die all das Enthalten, was du nicht automatisch testen konntest.

Zu 2: Wie kommt man dazu, Begriffe zu nutzen, die man nicht kennt? Du meintest evtl. KI. Da würdest Du von einigen zwar auch einen Shitstorm bekommen, weil man da drunter doch etwas mehr versteht. Aber KI wird heute ja auf alles angewendet vom Markt. Ein erweitertes Hello World Programm, welches nach dem Namen fragt und merkt und dann "Hallo " + name schreibt und ggf. noch ein " (zum " + count.get(Name) + " Mal!") ausgibt, ist halt künstliche Intelligenz, denn es ist ein "selbstlernendes System". Es merkt sich halt, wen es schon wie oft begrüßt hat. An der Uni wird man dich auslachen, aber so läuft es doch tatsächlich. Jede Applikation wirbt im Marketing schon damit....
Neuronale Netze umschreibt aber eine konkrete Lösungsidee. Es werden eine Art Neuronen abgebildet / simuliert, die vernetzt sind und die dann trainiert werden  um dann nach einem Training das gelernte anwenden können. War damals mal top im Bereich Bilderkennung. Dann haben die "herkömmlichen" Algorithmen nachgezogen und damit sind die NN eigentlich fast in der Bedeutungslosigkeit verschwunden. Oder gibt es da wirklich noch wirkliche Anwendungen? @Tobias-nrw kann dazu evtl. etwas sagen. (Ich habe mich damals (so um 97) intensiv damit beschäftigt. Da gab es dann auch Spezialrechner, die in der Lage waren, große Matrizen sehr schnell zu verarbeiten. Siemens hatte da einen entsprechenden Rechner und das gab es dann in "klein" auch für den PC als Steckkarte. So ein Teil wurde der Uni / mir damals dann auch einmal leihweise überlassen. Das war damals dann aber schon überbewertet fand ich. Hat sich auch nicht auf dem Markt durchsetzen können....)

Aber Bachelor Arbeit im Bereich Software Entwicklung und die Übersicht beim Testing fehlt? Das muss da doch behandelt worden sein, denn du wirst da doch in Richtung Anwendungsentwicklung studiert haben! Also im Augenblick habe ich Probleme, das nachzuvollziehen....


----------



## thecain (21. Mrz 2020)

Neuronale Netze sind durchaus wieder im Trend. Mit den neuen möglichkeiten der starken Grafikkarten ist viel mehr möglich, als noch '97. Aber das Thema ist riesig und nicht so husch husch einzubauen. Ich habe z.B meine ganze Thesis nur über CNNs geschrieben.
Zudem sehe ich jetzt den Use Case für das Formular nicht wirklich. Da ist der aktuelle Ansatz mMn simpler und passender.

Die Tests müssten mit dem nötigen Aufwand gut zu machen sein.
Unit Tests, ein paar Integration Tests, für Tests der schnittstelle könntest du sogar die Postman Tests automatisieren. Dazu gibts Ansätze online. Und am ende dann je nach dem vll noch Gui Tests mit Selenium o.ä. Ist nicht unbedingt kompliziert, aber halt Aufwand.


----------



## Xyz1 (21. Mrz 2020)

JustNobody hat gesagt.:


> @Tobias-nrw kann dazu evtl. etwas sagen


Ich wurde erwähnt.  Also aktuell erkenne ich mit künstlichen neuronalen Fließkomma-Netzen Schachbretter und die aktuelle Ausgangslage. (Also die Figurenstellung). Das funktioniert alles in allem in unter 50ms.

Aber allgemein... KI/machine learning ist ein riesiges Feld... Handschrifterkennung, Mustererkennung, Gestik/Mimik/Gesichtserkennung, Verhaltensweisenerkennung... um nur ein paar Beispiele zu nennen. Aber ohne wenigstens _eine_ KI-Vorlesung gehört zu haben, würde ich das eigentlich nicht in der BA verwenden. :/

Btw. wie viele Versuche hat man?


----------



## kneitzel (21. Mrz 2020)

@thecain / @Tobias-nrw Danke für eure Sichtweisen. Dann ist evtl. meine Erinnerung doch etwas falsch oder die letzten 20 Jahre hat sich noch einiges mehr getan. Daher sind eure "aktuelleren" Sichten auf diese Thematik gut und wichtig.


----------



## White_Fox (21. Mrz 2020)

RezaScript hat gesagt.:


> Es gab zwei Gründe, weshalb ich durchgefallen bin:
> 1. Bei der Verteidigung wurde ich gefragt, ob Tests stattgefunden haben. Meine Antwort: Ja, aber die Tests wurden MANUELL, etwa tausend mal ausgeführt - schlechte Antwort!
> 2. Es hiess, "Du verkaufst deine Applikation besser als sie eigentlich ist".


Sicher, daß das alles ist? Ich bin kein Softwareentwickler, aber aus dem Bauch heraus bin ich verwundert daß das reicht, um jemanden durch eine BA rasseln zu lassen. Einen Begriff zu verwenden von dem man eigentlich keine Ahnung hat ist natürlich saudämlich, aber deswegen fällt man nicht durch eine BA.
Und daß viele Tests fehlen (Was sind eigentlich Integrationstests?) ist sicher ein gewaltiger Makel, aber
a) hätte das eigentlich bei der Festlegung der Arbeitsziele schon feststehen müssen, daß diese Tests dazugehören
b) erscheint mir auch das nicht auszureichen um durch eine BA durchzufallen

In der Regel, so kenne ich das jedenfalls, werden Abschlußarbeiten eher wohlwollend bewertet und bei der Verteidigung muß man eigentlich schon mutwillig abwesend sein um durchzufallen. Pünktliches Erscheinen reicht dagegen für eine vier.

An deiner Stelle solltest du mit einem Professor nochmal sprechen und dir am Besten aufschreibe, was ihm da nicht gefallen hat.

Ohne daß das jetzt böse gemeint ist, mutmaße ich einfach mal folgendes:
Du hast dir ein Thema gesucht, das keinerlei Ansprüche stellt und absolut langweilig ist. Vom fachlichen Niveau her würde das jeder Abiturient nach ein paar Tutorials auch irgendwie bearbeiten können.
Und zu allem Überfluß hast du das nichtmal sauber nach Lehrbuch abgearbeitet, sondern dich faul und lernunwillig gezeigt. Das klingt hier zumindest so ein bisschen durch:


RezaScript hat gesagt.:


> 2. Es hiess, "Du verkaufst deine Applikation besser als sie eigentlich ist".



Sofern ich damit Recht habe, kann ich das Nichtbestehen nachvollziehen. Aber dann würde ich dir etwas anderes raten: Vergiß das alte Thema und stecke da nicht noch mehr Zeit rein. Beiß lieber in den sauren Apfel, und suche dir ein Thema für daß du dich begeistern kannst. Etwas, was dich interessiert und was du sowieso schon lange mal wissen wolltest. Auch wenn und gerade dann, wenn es schwerer ist.
Dann kannst du hinterher wie ein Gockel aus der Uni stolzieren und sagen "Seht her, was ich kann", und das ist weitaus mehr wert als die Abschlußnote.
Und eine Abschlußarbeit, wo sich der Student einen abreißt, zeigt das er mehr drauf hat als in den Vorlesungen dran war, sich ein gewisses _Verständnis selber erarbeitet hat_ und mehr kann als nur die großen Meister daherzuzitieren, so eine Arbeit ist eigentlich automatisch bestanden sofern sie fristgerecht abgegeben wurde. Aber wie gesagt, nur sofern ich im vorherigen Absatz richtig liege. Falls ich es nicht schon geschrieben habe: Ich will dir hier nicht auf die Füße treten. Aber du hast um Rat gefragt (was ja prinzipiell nie verkehrt ist), und ich denke ehrlicher Rat dient dir am Besten.

Und das hier:


RezaScript hat gesagt.:


> 2. Wie könnte ich denn mein Feature so optimieren, dass es doch irgendetwas mit neuronale Netze zu tun hat?


Davon würde ich dir dringend abraten, tu das in deinem eigenen Interesse nicht. Einerseits ist das Thema NN nichts, was man mal in drei Monaten erschließt. Andererseits zeichnet sich gute Entwicklung neben Einfachheit durch eine geeignete Wahl der Mittel und Wege aus. Es gibt nur ein einziges Szenario, das Kanonen ein geeignetes Mittel sind um Spatzen zu schießen: Man hat nur Kanonen. Oder anders gesagt: Wer nur einen Hammer kennt, sieht in jedem Problem einen Nagel.

Dein Thema hast du ja ganz offensichtlich ohne NN bearbeiten können. Deine Problemstellung so hinzubiegen, daß du da was mit NN machen kannst, konterkariert alles was gute Entwicklung ausmacht. Und dafür würdest du zu Recht durchfallen.


----------

