Sollten Software Engineering und Informatik getrennte Hauptfächer sein? [geschlossen]

19

Jahrzehntelang hieß der anerkannte Abschluss zum Softwareentwickler "Compter Science".
Wir hatten bereits einige Fragen, ob dieser Abschluss die Studenten wirklich auf die Entwicklung von Software vorbereitet.

Einige Schulen haben in den letzten 8 Jahren damit begonnen, verschiedene Hauptfächer in der Programmierung anzubieten. Verwendung des Lehrplans meiner Schule:

  • Informatik , die im ersten Jahr mit einigen Einführungskursen zum Programmieren beginnt und sich dann auf theoretische Informatik, Algorithmen und ein bisschen OS-Material konzentriert. Die meisten Klassen bestehen aus mehreren kleineren Projekten und Hausaufgaben, die alleine oder zu zweit durchgeführt werden.
  • Das Software-Engineering , das mit denselben Einführungskursen in die Programmierung beginnt, umfasst einige theoretische Fächer und befasst sich dann mit Softwareentwicklungspraktiken (Testen, Prozessmethoden, Software-Metriken, Erfassung von Anforderungen) und Software-Design (Entwurf verteilter Systeme, Entwurf von Informationssystemen) , Echtzeit- / Embedded-Design, Subsystem-Design usw.)

Verschiedene Schulen machen es anders, daher ist das oben Genannte nur ein Beispiel aus der Praxis, mit dem ich vertraut bin. Was ich frage ist: Gibt es eine Notwendigkeit für unterschiedliche Schwerpunkte in der Programmierung?

Fischtoaster
quelle
1
Nicht wirklich. Der Weg, diese Fähigkeiten zu erlernen, besteht nicht darin, einen Kurs über sie zu unterrichten, sondern ihnen tatsächliche Projektarbeit zu geben
Casebash,
Was lässt dich denken, dass sie es nicht sind? RIT bietet beides als Abschluss an.
Andy
Andy: Ich weiß, ich bin zu RIT gegangen und habe einen SE-Abschluss. Ich habe gefragt, ob sie getrennt sein sollen, nicht, ob sie es derzeit sind. :)
Fishtoaster

Antworten:

28

Ja, das sollten sie sein.

Das Verhältnis zwischen Informatik und Softwaretechnik ist das gleiche wie das Verhältnis zwischen Physik und Maschinenbau. Einer liefert den theoretischen Hintergrund, während der andere diese Theorien zusammen mit guten Konstruktionsprinzipien auf den Entwurf und die Implementierung von Software anwendet.

Sie brauchen beides, um neue und bessere Software zu produzieren. Eine gute Informatikausbildung schult die Menschen darin, neue und bessere Algorithmen, Datenstrukturen, Programmiersprachen und -paradigmen, Compiler und eine Reihe anderer Dinge zu erstellen, die zur Verbesserung von Softwaresystemen verwendet werden können. Eine gute Ausbildung in Software-Engineering schult Sie andererseits darin, diese Tools und Kenntnisse zu nutzen, die Sie durch eine wissenschaftliche Untersuchung der Berechnung erhalten haben, zusammen mit Kenntnissen über den Lebenszyklus und die Prozessmodelle der Softwareentwicklung, um das vom Kunden gewünschte und benötigte System tatsächlich aufzubauen .

Thomas Owens
quelle
2
Die Analogie zwischen Physik und Technik ist eine, die ich sehr oft benutze. Wir stellen keine Physiker ein, um Brücken zu entwerfen und zu bauen. Warum stellen wir Informatiker ein, um Programme zu entwerfen und zu bauen?
HerbN
1
Weil Informatik-Programme ein bisschen mehr darüber lehren, wie man Programme erstellt als ein typisches Physik-Programm;)
Wayne Werner
2
@ Wayne Werner: Nein, sie wirklich, wirklich nicht.
DeadMG
3

Es ist allgemein bekannt, dass ein typischer CS-Lehrplan einen nicht so gut auf die Branche vorbereitet, wie er es ohnehin wünscht. Also ja, es besteht ein Bedarf an einem Software-Engineering-Hauptfach, und die beiden sollten sich unterscheiden, wenn auch definitiv in derselben Fakultät.

EpsilonVector
quelle
1

Es sollte sich um verschiedene Disziplinen handeln, jedoch nicht um Bachelor-Disziplinen. Ich verstehe nur nicht, wie sie all das, was für Software-Engineering benötigt wird, in einem Bachelor-Studiengang zusammenbringen können. Genauso wenig sehen wir Bachelor-Abschlüsse im Bereich Systems Engineering (wo Menschen nach einem Abschluss in EE, CE, Mechanical Eng oder CS einen MS-Abschluss erwerben). Ähnliches gilt für Software Engineering.

Es ist ein multidisziplinärer Ansatz, der stark auf Informatik und / oder MIS basiert. Menschen werden in der Praxis (und nicht nur im Titel) zu Software-Ingenieuren, nachdem sie fortgeschrittene Kursarbeiten und / oder Berufserfahrungen in diesem Bereich absolviert haben, vorausgesetzt, diese werden in Umgebungen durchgeführt, in denen Software-Engineering durchgeführt wird.

Die meisten Leute haben Titel der Softwareentwicklung, sind aber nicht wirklich über das Codieren hinausgekommen. Dies ist kein Nachteil, sondern eine Beobachtung - sie wurden nicht ausreichend mit der Art von Arbeit konfrontiert, die ihnen helfen würde, Arbeitserfahrung über das Codieren hinaus zu sammeln. Schlimmer noch, die meisten Jobs und Organisationen werden schrecklich betrieben und führen keine ordnungsgemäße Softwareentwicklung durch.

Darüber hinaus wird Software-Engineering-Material ohne etwas Arbeit oder schulische Reife einfach über die Köpfe der meisten Studenten fliegen.

luis.espinal
quelle
Wenn Sie wissen möchten, wie sie "alles, was für Software Engineering benötigt wird, auf ein Grundstudium komprimieren
Thomas Owens
Sofern ich nichts vermisse, haben sie es nicht verkrampft. Sie erstellten einfach einen erweiterten Lehrplan mit 192 Credits. Dies ist jenseits des in CS und MIS üblichen Grundstudienplans von 60 bis 80 Kreditpunkten - es werden hier viel mehr Kurse angeboten, die vergleichbar sind mit dem Erwerb eines Double Majors (oder eines Grundstudiums und eines Hochschulabschlusses). Ich mag den Fluss und die Integration anderer Ingenieurdisziplinen im letzten Jahr. Es ist ein perfekter Lehrplan, dem man folgen kann. Aber es beweist einfach, dass man mit der typischen Grundausbildung allein keine SE bekommen kann.
Luis.espinal
Und eine Einschränkung, die ich hier sehen würde, ist, dass Sie sich so viel Mühe geben und einfach einen einzigen undegradierten Abschluss erwerben (im Gegensatz zum Abschluss eines ähnlichen Kurses, um Double Majors oder einen Undergrad- und Grad-Abschluss zu erhalten). Schaffell spielt leider eine Rolle. Vielleicht ist diese Sorge weniger wichtig, sobald sich solche SE-Grade weiter verbreitet haben.
Luis.espinal
Es ist ein Viertelsystem, was bedeutet, dass es genau die gleiche Arbeitsbelastung wie ein CS-Abschluss (oder ein anderer Bachelor-Abschluss) derselben Universität ist. Am Ende sind es 4 Jahre Unterricht (10 Wochen Unterricht, 1 Woche Prüfungen pro Quartal, 3 Viertel pro Jahr), 1 Jahr Koop.
Thomas Owens
Nicht wirklich. Es ist nicht äquivalent, wenn es um Arbeitsbelastung geht. Ich absolviere derzeit einen zweiten Master (CE + EE) am WPI, der einem ähnlichen Format folgt (3 Viertel, 10 Wochen Unterricht + 1 Woche für Prüfungen). Aus Erfahrung sind solche Programme strenger und decken mehr als den typischen Bachelor-Abschluss von 60 bis 80 ab. Es ist wohlgemerkt keine Kritik am Programm . Ich denke, es ist notwendig, das Software-Engineering im Grundstudium wirklich zu behandeln. Ein ähnlicher Ansatz sollte auch für CS erforderlich sein (da das typische CS heutzutage nicht mehr genügend praktisches, multidisziplinäres Praktikum
abdeckt