4.1 Introduction
The discipline of Software Engineering focuses on producing graduates who are ready to develop and maintain quality software systems of scale for organizations and businesses within the constraints of time, budget and other requirements. In addition to its core computer science technical foundation, Software Engineering also involves human processes that are harder to formalize than the logical abstraction of computer science. The discipline therefore borrows and adapts from traditional engineering practice as well as from the field of project management. A focus of a Software Engineering specific curriculum must be able to develop students into software engineers through course work, practical’s and applied project experience.
4.2 Philosophy
Nigeria (and indeed sub-Saharan Africa) represents virgin territory for the software industry and the field, in turn, presents huge opportunities for the region within the context of an expanding global economy. It is well known that the software industry is the only one that wealth can be created from zero or near-zero capital – only intellectual capital is needed. There is therefore the need for Nigeria to grow its crop of software engineers as a force for sustainable socio-economic development. The Philosophy and Mission Statement underlying the programmes in Software Engineering is achieving the goals and objectives of the National Policy on Industrialisation and Self-Reliance. This is to be achieved through:
- Broad-based foundation in Computing, Science and Engineering and Technology as well as specialized knowledge and practice in Software Engineering.
- Practical exposure to the application of Software Engineering to problem-solving.
- Adequate training in human and organisational behaviour and management in the software development life-cycle.
- Developing in the students’ entrepreneurial knowledge, a sense of public responsibility and a spirit of self-reliance.
- Nurturing of a partnership between the institution and the software industry for effective programme delivery.
- Creating awareness and understanding of the moral, ethical, legal, and professional obligations needed to function as part of the computing ecosystem while protecting human health and welfare and the environment in a global society.
- Creating awareness and understanding of the need to develop leadership and team-building skills to maximize the benefits of Software Engineering education and its application to solving problems.
The general philosophy, therefore, is to produce graduates with high academic and ethical standards and adequate practical exposure for self-employment as well as being of immediate value to the software industry and the community in general.
4.3 Aim and Objectives
The general goal and objectives of Software Engineering education and training should align with the realization of national needs and aspirations vis-à-vis industrial development and technological emancipation. The graduates must therefore be resourceful, creative, knowledgeable and able to perform the following functions:
- To appreciate the importance of computer science (as a base) in such areas as principles of programming, algorithm, data structures, databases and programming languages
- To develop and utilize the practical skills acquired in software architecture and design, software metrics, verification and validation, requirements and analysis and the software engineering process for the production of software-based systems
- To develop expertise in programming in several different languages with emphasis on the production of robust, reliable, cost-effective and secure codes that are based on sound design and development principles adapted to the needs of a developing and emerging economy such as Nigeria in a technically professional manner
- To be able to exercise original thought, have good professional judgment and be able to take responsibility for the execution of important tasks as programmers, system analysts, software developers, web developers, software consultants, system administrators, IT project managers, system engineers and entrepreneurs, etc.
- To be able to produce and manage high-quality software-based solutions with long life-cycles, especially for large or complex systems
- To develop the understanding, engineering and entrepreneurial skills needed to become the architects and project leaders building systems in which software plays a critical role
- To leverage on Software Engineering as the driving force behind the new technologies that are transforming the way we live and work
- To have the requisite knowledge and skill base for further academic and professional development in Software Engineering
The programme in Software Engineering will focus on imparting the knowledge and practical skills to enable students to understand the principles and practice of software systems design, development and maintenance. This should enable them to be able to balance software system design and development with safety, reliability, cost and schedule, especially for large scale systems.