navigation

Softwareentwicklung

Entwicklungsverfahren und Methodologie
  • Objektorientiertes Design, 'design patterns'
  • Generische Programmierung
  • Test basierte Entwicklung, 'agile development'
  • Kompetenz in der Einarbeitung in fremde Projekte (insbesondere verschiedene OpenSource Projekte)
Entwicklungsumgebung
  • Intensive Kenntnisse verschiedener Entwicklungstools: gcc/g++, make, CVS, Subversion, git, SCons, Jam, autoconf u.a.
  • Weitreichende Erfahrung in der Automatisierung sich wiederholender Prozesse: Erstellung komplexer Makefiles, Scripting, reguläre Ausdrücke

Programmiersprachen

C++
  • Das C++ Objektmodell und Objektlayout. Polymorphie und mehrfache Vererbung, virtuelle Basisklassen u.s.w.
  • Templates: Templates allgemein, Spezialisierung, partielle Spezialisierung. 'template meta programming'.
  • Kompetenz in der Abbildung allgemeiner abstrakter Probleme auf die verschiedenen Paradigmen der C++ Entwicklung.
  • Detaillierte Kenntnisse der Standardbibliothek und der zugehörigen Konzepte. Weiter detaillierte Kentnisse wichtiger Bibliotheken und Protokolle (Boost Libraries, CORBA u.a.)
  • Multithreading (pthread, Boost.Thread), Entwicklung paralleler Algorithmen
  • Profiling und Laufzeitoptimierung
Python
  • Objektorientierte Entwicklung in Python, überladene Operatoren, Iteratoren, Generatoren, spezielle Methoden u.s.w.
  • Entwicklung von Spracherweiterungen in C++
  • Breites Wissen der verschiedensten Bibliotheken
Java
  • Das Java Objektmodell, Vererbung, Interfaces u.s.w.
  • Verschiedene Bibliotheken: Grafikbearbeitung, Netzwerkentwicklung, Java-3D
  • IPC mit Corba (insbesondere C++ Kommunikation)
weitere Sprachen
  • weitere Kenntnisse, zum Teil sehr detailliert in folgenden Sprachen: Perl, bash, Lisp, TeX, MetaFont/MetaPost, JavaScript, XSLT u.a.