For many years Computer Science has been heavily influenced by short innovation cycles. Products with high software percentage have been created, developed and launched on the market at short intervals. At work and in our personal lives there is scarcely any area which has not been heavily affected by IT products. Infotainment systems in vehicles, mobile communication and digital photography are only the tip of the iceberg of a dramatic change caused by new hardware/software solutions.
The software development processes which realize such solutions have also changed significantly. There is a whole range of new methods, technologies and tools for the planning, design, realization, maintenance and quality assurance of the development processes and the software products. New programming paradigms and development environments have been created in order to meet the changed demands and for the establishment of complex software systems.
Open Source Software
The use of open source software is encouraged at the Faculty of Computer Science. All staff and students should have access to an infrastructure for software projects for teaching and research which has the following attributes:
- distributed version administration with Git
- project administration based on Redmine
- a continuous integration server based on Jenkins
- quality assurance and code analysis using SonarQube
Setting up this infrastructure has been a project since 2013. With the help of students, missing integration modules have been added in order to form a complete system from the individual open source components.
Welcome to science
In the "Professional Software Engineering for Students on the Basis of a continuous Tool Chain" project, financed for 3 years by the Baden-Württemberg Ministry of Education, Research and the Arts a focus was put on further areas of Software Engineering at the Faculty of Computer Science. The research assistant sponsored through the project first designed a continuous tool chain for software engineering customized to the specific demands of teaching. On the basis of this tool chain, students were introduced early on, on the one hand generally to scientific principles of comprehensive software production, and on the other hand were included in current research projects. Duration: 1 August 2013 - 31 July 2016, Funding amount: €216,000.
Service qualities in SOA infrastructures (QoS/SOA)
The Federal Ministry of Education and Research sponsored project aimed to prepare technology and tool support for the set up of SOA services with service qualities and their use in an industrial environment. The basis for this was the specifications, standards and application server. Industry relevant products such as JBoss, Glassfish, Axis2 and .NET/WCF were used as application servers which provided the technical infrastructure to run the SOA services. Duration: 1 September 2009 - 30 November 2012, Funding: €219,000.
A Computer Science degree programme must take into account continuous change in the setting up of application systems. Coming trends, which will be used in industry in the future should be identified and offered to students early on, for example in the form of electives. In the case of a topic which becomes relevant in the long-term, this will be added to the standard curriculum and the relevant changes made to the Study and Examinations regulations.
In the Faculty of Computer Science bachelor's and master's programmes, the following software engineering topics are currently covered:
- Programming languages, including Java, C# und C++
- Object-oriented analysis and drafting
- Modeling of software systems
- Requirements Engineering
- Configuration, build and release management
- Project management
- Software quality
- Software architecture
- Software ergonomy
- Software product lines
- Model-based software development
Students are given a comprehensive view of Software Engineering through further modules such as project work. The focus is on project work with practical, workplace-relevant tasks carried out in groups of approximately 5 students. In this way, various roles can be assigned (project leader, requirements engineer, software architect, GUI programmer, etc.) and teamwork can be practiced. Students gain an integrative viewpoint which is vitally necessary in professional software development.