Rückverfolgung von Silizium in einem Hackathon-Format. Ohne physisches Design kein iPhone



Haben alle den Dude-Film über Silicon Valley-Startups gesehen? Wissen Sie, welches Startup des Tals 1977 das meiste Silikon war? Es war Silicon Valley Research, auch bekannt als SVR und Silvar-Lisco. Das Startup erstellte Programme, die Transistoren automatisch auf der Chip-Site platzierten und sie mit Spuren verbanden. Das Startup ging an die Börse und lebte sogar bis ins 21. Jahrhundert , konnte aber nicht mit den neuen Führungskräften konkurrieren - zuerst Daisy / Mentor / Valid, dann Synopsys und Cadence.

Die Programme, die SVR durchgeführt hat, wurden in English Place & Route - P & R als Placement- und Tracing-Programme bezeichnet. Sie haben die Arbeitsproduktivität der Ingenieure erheblich gesteigert - vor P & R-Programmen wurden Chipmaskenzeichnungen aus Farbkarton (Intel 4004) geklebt, mit Bleistiften auf Papier gezeichnet oder der Cursor auf dem Textbildschirm bewegt und Elementarblöcke verbunden, die durch Sterne mit Vor- und Nachteilen dargestellt werden (so wurden die Chips in IBM entworfen / 370-kompatible Amdahl-Computer, fortgeschrittene Verwandte sowjetischer EU-Computer).

SVR wurde von Stanford-Professor Bill van Klimpat gegründet , den ich persönlich kannte, da er ein Angel-Investor und Mitglied des Board of Directors meines eigenen Startups war. Bill erzog mich regelmäßig wegen schlechten Benehmens bei Besprechungen und Aufschub und erzählte auch Geschichten über Patentgerichte, bei denen er ständig als Sachverständiger auftrat.

Als ich in Kasan Innopolis gebeten wurde, ein Projekt zu ihrem Hackathon für Studenten von CASE Tools zu organisieren, erinnerte ich mich an Bill und schlug vor, ein minimales Routing-Programm für den Hackathon zu erstellen. Dieser Beitrag ist ein Bericht über die Ergebnisse dieses experimentellen Hackathons. Sie sind wahrscheinlich auch eine Diskussion wert auf der Zoom-Konferenz in Innopolis über Open Source-Projekte, die in einer Woche stattfinden wird .



Das Verständnis der physikalischen Entwurfsalgorithmen von Mikrochips ist eine Kernkompetenz. In allen Chip-Designteams von Apple, NVidia, Intel, AMD, Cisco, Juniper, Huawei, Samsung, Tesla, Google, MediaTek und Broadcom gibt es eine PD-Teamgruppe (Physical Design Team), die mit Tools von Synopsys und Cadence arbeitet. wer macht das Darüber hinaus sind diese Tools komplex, sie haben mehr als tausend Teams und Hunderte von Subsystemen und kosten jedes Unternehmen Millionen oder Dutzende Millionen Dollar pro Jahr. Ohne die Anwesenheit von mehr PD-Spezialisten (sowohl auf Benutzerebene als auch auf der Ebene der Entwickler kundenspezifischer PD-Tools) hat Russland keinerlei Chance, auf dem internationalen Markt für Mikrochips in Smartphones, KI-Beschleunigern und selbstfahrenden Autos von Bedeutung zu werden. So etwas wie ein afrikanisches Land, in dem Biochemie nicht an Universitäten gelehrt wird.Es gibt im Allgemeinen keine Chance, führend bei Arzneimitteln (Prothesehemmern) gegen Coronavirus zu werden.

Diskussionen und Einwände


Wir diskutierten die Idee des P & R-Hackathons auf der Mailingliste für Silizium-Russland , wo wir mit vorsichtiger Skepsis behandelt wurden. Insbesondere Mikhail Shupletsov, der sich an der VMK Moscow State University mit EDA-Algorithmen (Electronic Design Automation) beschäftigt, hat Einwände gegen mich erhoben:
Mikhail Shupletsov: „Es besteht Zweifel, dass das Hackathon-Format für solche Aufgaben geeignet ist. Ein gutes Ergebnis bei Problemen mit der Designautomatisierung kann nur erzielt werden, wenn der Wettbewerb schon lange andauert (mindestens 6 Monate). Im vorgeschlagenen Format wird es meiner Meinung nach nur möglich sein, vorgefertigte Tools auszuführen, aber keine neue Lösung zu erstellen. “
worauf ich antwortete:
: « , , capacity ( ) features ( ASIC libraries) . , ! 20 , floorplanning maze router. Tcl/Tk. , EDA. + .»

« — »


Die Aufgabe interessierte drei Studenten von Innopolis. Die Hauptintrige bestand darin, den Wortlaut der Aufgabe so zu kürzen, dass es wirklich möglich war, sie in zwei Wochen Vorbereitung und vier Stunden Hackathon schnell zu erledigen. Die ursprüngliche Erklärung des Problems sah so aus . Es bestand aus drei Teilen:

  1. Analysieren einer Textdatei in einer abgespeckten Teilmenge der Verilog-Hardwarebeschreibungssprache.
  2. Anwendungen des alten Lee-Wave-Tracing-Algorithmus.
  3. Grafische Ausgabe des Ergebnisses.

Nach einer Diskussion mit den Studenten haben wir beschlossen, die Verliog-Analyse durch eine vereinfachte Eingabe von Zellkoordinaten aus einer Textdatei zu ersetzen . Dann haben die Schüler Verantwortlichkeiten und darunter zugewiesen - ihre drei Berichte über das Experiment.

Parallel zu den Studenten habe ich beschlossen, selbst eine Lösung zu schreiben, um herauszufinden, wie lange es für eine Person dauern würde. Die Schüler schrieben ihre Entscheidung mit objektorientierten Client-Server-Frameworks in Java und Webgrafiken. Ich habe gerade ein C-Programm geschrieben, das Daten aus einem initialisierten statischen Array entnimmt und das Ergebnis druckt, indem es ein Bild mit Sternchen und Punkten druckt, wie in den Programmen der 1970er Jahre. Ich habe viereinhalb Stunden gebraucht.

Code meines (Nicht-Studenten-) Programms.
Vollständige Ergebnisse.



Jetzt geben wir den Studenten das Wort:



Bericht von Sofia Ermolaeva


Der Hackathon fand am 19. Oktober 2019 unter Studenten der Innopolis University statt.

Es wurde eine Auswahl von 11 Fällen vorgestellt, von denen jeder 3 auswählen und von den am meisten bevorzugten zu den am wenigsten bevorzugten priorisieren musste.

Entsprechend unseren Vorlieben und der Anzahl der Personen, die jeden Fall ausgewählt haben, bildeten die Organisatoren Teams.

Eine Woche vor dem Hackathon wurden ich und zwei andere Studenten von MIPS BU für das Projekt eingesetzt.

Bild 1. Fall von MIPS BU auf der Hackathon-Website



Unser Team war das kleinste, im Vergleich waren die anderen Teams 5-7 Personen. Dementsprechend wurde uns sofort klar, dass es unwahrscheinlich ist, dass wir die für die Ausführung festgelegten Aufgaben innerhalb von 8 Stunden meistern. Die Schwierigkeit bestand darin, dass wir die einzigen mit einem entfernten Kunden und sogar mit einem Zeitunterschied von 10 Stunden waren.

Nach den Regeln des Hackathons durfte nach der Verteilung der Teams eine Reihe von Besprechungen mit dem Kunden abgehalten werden, um die Anforderungen zu klären und sich mit den Technologien vertraut zu machen, wenn sie den Teams nicht vertraut waren (was für unser Team zutraf).

Wir haben uns am 11. Oktober 2019 zum ersten Mal mit dem Kunden getroffen. Für das Meeting haben wir Fragen für das Elicitation-Interview vorbereitet (selbst während der Vorbereitung der Fragen haben wir verstanden, dass wir überhaupt nicht verstanden haben, wie die Aufgabe zu erledigen ist, aber das war noch interessanter). Die erste Liste der Fragen ist in Bild 2 dargestellt. Ich musste viel Wolle im Internet finden, um einen Kenntnisstand zu diesem Thema zu erlangen.

Bild 2. Fragen zum Elicitation-Interview.



Während des Meetings hatten wir detailliertere Fragen zur Lösung (siehe Bild 3).

Bild 3. Probleme im Zusammenhang mit der Implementierung.



Als Ergebnis des Treffens haben wir herausgefunden, dass wir die Anforderungen und ihre Prioritäten gesammelt haben, damit klar ist, wie der Umfang reduziert werden kann (siehe Abbildung 4).

Bild 4. Anforderungen und ihre Prioritäten, die während des ersten Treffens gesammelt wurden.



Das Gefühl, dass wir drei 8 Stunden lang keine Zeit hatten, ließ uns nicht los, wir teilten unsere Erfahrungen mit dem Kunden. Es stellte sich heraus, dass er das Limit von 8 Stunden nicht kannte. Deshalb haben wir gemeinsam darüber nachgedacht, die Aufgabe zu vereinfachen und einen Prototyp zu entwickeln.

Die Vereinfachungen betrafen hauptsächlich die Funktionsanforderung Nr. 1 (siehe Abbildung 4). In unserem endgültigen Anforderungsdokument sind die Prototypanforderungen nach Funktionen unterteilt: Dateireader (siehe Bild 5), Platzierung (siehe Bild 6), Routing (siehe Bild 7), grafische Darstellung (siehe Bild 8). Gemäß den Regeln musste das Anforderungsdokument mit der Unterschrift des Kunden beglaubigt werden. Da unser Kunde jedoch eine Remote-Bestätigung hatte, haben wir beschlossen, ein Foto zu machen (siehe Bild 9).

Bild 5. Anforderungen an das Dateireaderbild



6. Anforderungen an das Platzierungsbild



7. Anforderungen an das Routing des



Bildes 8. Anforderungen an die grafische Darstellung



[Bild 9. Bestätigung der Anforderungen durch den Kunden.]

Nachdem wir die Anforderungen gesammelt hatten, begannen wir, Implementierungsfunktionen und Technologieoptionen zu überdenken. Es ist erwähnenswert, dass unser Team aus 1 C # -Entwickler (Michael), 1 Python-Entwickler (Maxim) und 1 Frontent-Entwickler (Sofia) bestand. Für die Anzeige haben wir uns für React.js entschieden, da ich genug Vertrauen hatte, dass ich die Anzeige mit dieser Technologie in kurzer Zeit implementieren könnte. Für den Rest der Komponenten war es schwierig, eine Technologie auszuwählen, da die Kenntnisse sehr unterschiedlich waren. Wir haben uns auf Java geeinigt, da jeder mindestens minimale Erfahrung in dieser Sprache hatte.

Wir haben die Verantwortung wie folgt geteilt:

  • Display, Back- und Front-Linking, Präsentationsvorbereitung, Teammanagement - Sofia,
  • Platzierung und Routing - Michael
  • Dateireader - Maxim.

Während des Hackathons mussten Kunden Fälle präsentieren, aber aufgrund des Zeitunterschieds (wir hatten ihn früher am Morgen und der Kunde hatte spät in der Nacht) zeigten wir ein vom Kunden vorbereitetes Video.


Nach den Präsentationen haben wir unsere Lösung codiert. Wir saßen zusammen, aber jeder arbeitete seinerseits (siehe Bild 10). Natürlich haben wir vor dem Hackathon trainiert, den Lee-Algorithmus zu schreiben, um zu verstehen, wie er funktioniert.

[Bild 10. Mikhail und ich arbeiten an einer Lösung für das Problem (Maxim ist nicht in den Rahmen gekommen, aber er hat auch in der Nähe gearbeitet).]

Ich habe Spring gewählt, um die Vorder- und Rückseite zu kommunizieren. Um die Lösung zu testen, haben wir mehrere Beispiele für einfache Eingabedateien vorbereitet (ein Beispiel für solche Dateien ist in Abbildung 11 dargestellt).

Bild 11. Eingehende Datei und ihre Anzeige.





Das Testen einfacher Dateien funktionierte wie erwartet. Probleme traten auf, als wir beschlossen, ein Beispiel für ein schönes Bild auf Dias komplizierter zu gestalten. Ich habe ein Beispiel in Bild 12 gefunden. Aus uns unbekannten Gründen ging der Algorithmus in eine Endlosschleife. Es war eine Stunde bis zum Ende des Hackathons. Wir haben bereits hart an der Präsentation gearbeitet, da sie auch für eine qualitativ hochwertige Präsentation weggefahren werden musste. Während ich an der Präsentation arbeitete, stellten meine Teamkollegen fest, dass das Programm nicht jedes Mal in einer Endlosschleife endet, dh wenn es mit derselben Datei startet, funktioniert das Programm manchmal immer noch. Wir haben festgestellt, dass unsere Lösung nicht stabil ist. Aber es war keine Zeit zu korrigieren. Die Bestätigung der Instabilität des Algorithmus war auch die Tatsache, dass der Aufbau der Schaltung für dieselbe Datei unterschiedlich war (siehe Abbildung 13).

Bild 12. Ein Beispiel, das während des Hackathons erfunden wurde, um die Funktionsweise des Algorithmus zu demonstrieren.



Bild 13. Fazit für das zweite Beispiel (während des Hackathons und nach dem Hackathon).





Hackathon haben wir nicht gewonnen. Es ist erwähnenswert, dass sich die verbleibenden Fälle auf Qualitätsanalysen und Produkttests bezogen, während wir die Lösung von Grund auf neu implementiert haben. Wir waren Krähen auf einem Hackathon. In Wahrheit freue ich mich sehr darüber, da die gesammelten Erfahrungen sehr nützlich waren.

[Bild 14. Präsentation unserer Lösung beim Hackathon.]
[Bild 15. Unser Team mit Teilnahmebescheinigungen.]
[Bild 16. Unser Team beteiligt sich an der Bewertung anderer Fälle.]

Post mortem

Nach dem Hackathon haben wir unsere Entscheidung als Referenz an den Git an den Kunden gesendet .

Am 4. November erhielt ich einen Brief vom Kunden, in dem er erklärte, dass er unser Projekt nicht starten konnte. Das Problem war, dass wir unter MacOS bzw. Windows entwickelt haben. Außerdem haben wir Anweisungen geschrieben, die darauf basieren, wie wir auf unseren Plattformen ausgeführt wurden.

Bild 17. Die erste Anweisung zum Starten der Anwendung.



Der Kunde hat versucht, die Konsole zu durchlaufen, und die folgende Fehlermeldung erhalten:

Bild 18. Fehler Nr. 1.



Es wurden alle Fehler reproduziert und das Problem bestand darin, dass zum Starten des Projekts über die Konsole als JAR eine Manifestdatei hinzugefügt werden musste, damit Maven wusste, welche der Dateien die Hauptklasse ist. Also habe ich die Konfigurationsdateien hinzugefügt und das Update an den Kunden gesendet.

Der nächste Brief des Kunden kam am 15. April 2020. Der Kunde hat während der Montage des Projekts folgenden Fehler erhalten:

Bild 19. Fehler Nr. 2.



Ich musste mich wieder mit dem Projekt befassen. Nach mehreren Stunden Versuch und Irrtum gelang es mir immer noch, das Problem herauszufinden. Es stellte sich heraus, dass javafx.util.Pair auch dann nicht zum Projekt hinzugefügt wird, wenn die Bibliothek javafx.util als Abhängigkeit in pom.xml während der Assemblierung hinzugefügt wird. Nach dem Googeln stellte sich heraus, dass alle Benutzer dieser Bibliothek ein solches Problem haben. Zuerst habe ich versucht, dieses Problem auf verschiedene Arten zu lösen, aber als Ergebnis stellte sich heraus, dass es einfacher war, die Klasse manuell zu implementieren. Es stellte sich heraus, dass in Python (nämlich dem Python-Entwickler aus unserem Team, der an diesem Teil gearbeitet hat) ähnliche Klassen als Standardlösung verwendet werden, aber in Java gibt es viele andere Datenstrukturen zum Speichern von Schlüsselwerten (HashMap usw.). Infolgedessen lautete mein Code für Pair, der zur Behebung aller Probleme beitrug, wie folgt:

Image 20. Implementierung von Pair.



Nachdem ich den Fehler behoben hatte, beschloss ich, detaillierte Anweisungen zum Starten der Anwendung über die Konsole zu schreiben. Nach dem Testen der Anweisungen. Wir haben den Kunden angerufen und das Projekt gestartet. Nach 5 Monaten konnte der Kunde die Früchte unserer Arbeit sehen.

Bild 21. Die letzte Anweisung zum Starten des Projekts.



Die erste Version des Projekts befindet sich im Github-Repository.

Die endgültige Version des Projekts befindet sich in meinem Github-Repository.



Bericht von Maxim Kostin

Nachdem wir alle Anforderungen für das Projekt untersucht hatten, teilten wir die Aufgabe in drei Hauptteile auf.

Ich war dafür verantwortlich, die Eingabedatei zu verarbeiten und sie in einem geeigneten Format für die weitere Verarbeitung zu verpacken. Meiner Meinung nach kann der Graph als die offensichtlichste und bequemste Datenstruktur für diese Aufgabe angesehen werden (wir stellen die Elemente als Eckpunkte und die Kanten der Verbindung zwischen ihnen dar).

Sie können ein Diagramm auf verschiedene Arten implementieren, aber für dieses Problem habe ich die Option zum Implementieren eines Diagramms in Listen gewählt (das Implementieren eines Diagramms in einer Adjazenzmatrix würde sich als ziemlich entladen herausstellen und mehr Speicher verbrauchen, obwohl das Diagramm in Listen mit Geschwindigkeit beim Hinzufügen von Kantenoperationen umgangen wird).

Ursprünglich war geplant, Eingabedateien zu verarbeiten, die mit der Verilog-Syntax geschrieben wurden. Später haben wir diesen Aspekt jedoch weggelassen und ein vereinfachtes Eingabedatenformat verwendet.

Wir haben auch eine Reihe von Vereinfachungen (aufgrund der Beschränkung der Hackathon-Zeit) der Größe der Elemente vorgenommen (wir haben alle Elemente als gleich groß angesehen), eine vollständige Vereinfachung der physikalischen Natur der Elemente (Signalverzögerungen, Einfluss benachbarter Zellen, Energieverbrauch - auf einige Elemente dickere Spuren und mehr).

Im Allgemeinen gab es keine kritischen Fehler bei der Implementierung des Diagramms selbst, aber beim Parsen der Datei trat eine Reihe von Fehlern unaufmerksam auf, z. B. wurden für das NOT-Element zunächst zwei Eingaben erstellt (offensichtlich stürzte das Programm ab).

Beim Kombinieren mit Michaels Code (Mikhail war an der Platzierung von Diagrammelementen auf dem Substrat und der Verfolgung beteiligt) traten auch einige kleinere Fehler auf (die Größe des Substrats wurde falsch angegeben), aber im Allgemeinen wurde alles "schnell und schmerzlos" entschieden. Michael schrieb einen sehr guten Code, der es ihm ermöglichte, sich dem Ziel sehr schnell zu nähern.

Aber Michael und ich hätten es nicht geschafft, wenn es nicht in unserem Team Sofia gewesen wäre. Sie hatte keine Angst und übernahm den wichtigsten Teil - die Visualisierung der Ergebnisse (etwas, ohne das unser Projekt praktisch keine Bedeutung hätte), und sie bewältigte die Aufgabe.

Im Allgemeinen habe ich während der Arbeit an dem Projekt viele neue und nützliche Informationen darüber erhalten, wie Leiterplatten und SoC erstellt werden und welche Algorithmen und Personen dahinter stehen. Ich bin mir sicher, dass diese Fähigkeit in Zukunft für mich nützlich sein kann, weil Ich beschäftige mich gelegentlich mit Elektronik und sammle manchmal alle Arten von Prototypen. Jetzt kann ich mit unserem Programm eine Spur der Tracks erstellen und sehen, wie es in der Realität aussehen könnte.



Bericht von Michael Scheinberg


Der Grund für meine Wahl dieses Projekts war die Verbindung mit dem Beispiel aus dem Buch von Eric Evans „Objektorientierte Programmierung“, das ich damals las. Obwohl ich mit Blick auf die Zukunft sagen kann, dass mein Wissen über DDD und die Erfahrungen aus dem Beispiel des Buches beim Hackathon nicht ernsthaft angewendet wurden, denke ich, dass die beim Hackathon gesammelten Erfahrungen für mich nützlich und interessant waren.

Nachdem wir alle Anforderungen für das Projekt untersucht hatten, teilten wir die Aufgabe in drei Hauptteile auf.

Ich war für die Erstellung des Schemas verantwortlich, Maxim übernahm das Schreiben des Parsers und Sofia übernahm die Verantwortung für die Visualisierung der Ergebnisse.

Gemeinsam mit dem Team und dem Kunden haben wir den Floyd-Algorithmus für die optimale Platzierung von Drähten auf der Schaltung ausgewählt. Um das konstruierte Schema zu speichern, wurde eine dreidimensionale Matrix verwendet, bei der die vertikale Koordinate die Ebenennummer war. Zusammen mit dem Team wurde eine Vereinfachung angenommen - jedes Element des Schemas erhielt die Größe von 5 × 5 Zellen und der Abstand zwischen den Elementen betrug 3 Zellen. Akzeptierte Vereinfachungen waren mit der Zeit des Hackathons (es war begrenzt) und der Einschränkung der Freizeit vor dem Start des Hackathons verbunden (in der Hackathon-Wunde gab es eine Reihe großer Zahlungen, die ebenfalls durchgeführt werden mussten).

Bei der Kombination der Ergebnisse meiner Arbeit mit den Ergebnissen von Maxim's Arbeit traten aufgrund der mit der begrenzten Zeit verbundenen Eile und Nachlässigkeit einige ärgerliche Probleme auf, die glücklicherweise schnell entdeckt und beseitigt wurden.

Unabhängig davon möchte ich die Qualität der von Sofia durchgeführten Visualisierung erwähnen. Sein Teil funktionierte fehlerfrei und lieferte gutes Material für eine informative Präsentation der Ergebnisse.

Im Allgemeinen habe ich während der Arbeit an dem Projekt viele neue und nützliche Informationen darüber erhalten, wie der Prozess des Aufbaus von Mikroschaltungen und die in diesem Bereich verwendeten Algorithmen, die ich in Zukunft anwenden kann, angeordnet sind.



Anhang A: Einspruch von Mikhail Shupletsov von der Moskauer Staatsuniversität (Bild links)

Das Team Mikhail Shupletsov von der Moskauer Staatsuniversität gewann den renommierten internationalen Wettbewerb IC-CAD 2015 , und selbst der ehemalige US-Botschafter in Russland, Michael McFaul, erhielt eine emotionale Reaktion .

Aus der Diskussion auf der Silizium-Russland-Mailingliste .

: , . , :

1. http://iccad-contest.org
2. http://www.ispd.cc/?page=contests

( , ). , :

1. https://arxiv.org/pdf/1810.01078.pdf
2. https://github.com/jinwookjungs/datc_robust_design_flow

Ich glaube, dass die Initiative, Wettbewerbe zur Entwicklung von Algorithmen zur Designautomatisierung abzuhalten, sehr nützlich ist. Ich selbst habe Erfahrung in der Leitung von Teams, die an solchen Wettbewerben teilgenommen haben. Ich selbst wäre daran interessiert, als Veranstalter solcher Wettbewerbe teilzunehmen.

Das einzige, was ein wenig verärgert war, war, dass der Beitrag über die Veranstaltung in Innopolis erschien, nachdem die Registrierung für die Veranstaltung beendet war. Es besteht auch Zweifel, dass das Hackathon-Format für solche Aufgaben geeignet ist. Ein gutes Ergebnis bei Problemen mit der Designautomatisierung kann nur erzielt werden, wenn der Wettbewerb schon lange andauert (mindestens 6 Monate). Im vorgeschlagenen Format wird es meiner Meinung nach nur möglich sein, vorgefertigte Tools auszuführen, aber keine neue Lösung zu erstellen.

Und der zweite:

!

. . , . , ( ) , .

, , .

. . , , EDA - . , EDA , ICCAD ISPD. , ( ). , ICCAD ISPD , , (http://www.mes-conference.ru/) , EDA.

,


Anhang B: Anweisungen von Sofia Ermolaeva zur Reproduktion der Ergebnisse

Required:

    Maven
    Npm 

Clone repository

    git clone https://github.com/keepYourHairOn/HackathonProject.git 

In the repository folder:

    cd edap
    cd ASICdrawer
    npm install
    npm start 

In the browser open:

    localhost:8008 

In the new tab of the command line (because node should stay working).

To build new jar:

    cd edap
    mvn package
    Copy input.txt file from {repository folder}/edap/input.txt and paste a file into: edap/target 

To run the existing jar:

    cd target
    java -jar edap-1.0-SNAPSHOT.jar

Verweise

  1. Erklärung des Problems in einem früheren Beitrag über Habré.

  2. Das Dokument, das wir mit den Studenten verfasst haben.

  3. Preprint eines Artikels von Hackathons als Teil der Software Engineering Education: CASE in Tools Beispiel von Andrey Sadovykh, Maria Naumcheva, Mansur Khazeev, Innopolis University.

  4. PDF-Artikel von Hackathons als Teil der Software Engineering-Ausbildung: CASE in Tools Beispiel von Andrey Sadovykh, Maria Naumcheva, Mansur Khazeev, Innopolis University.

  5. Fotos vom Hackathon.



Die Sonne geht über dem Silicon Valley unter und geht über Innopolis auf, worauf ich meine Rede stoppe. Was denken Sie?


All Articles