Editor’s Note: There is a role reversal when industry becomes the center for research and academic institutions become followers rather than leaders. This paper from Najib Kofahi and N. Srinivas in Saudi Arabia analyses the relationship between software companies and organizations that have academic majors in Computer Science. It discovers ways to better serve the software industry and respond to rapidly changing needs. It suggests ways to collaborate more effectively in research and in training.
Computer Science Teaching and its Impact on
the Booming Software Industry
Najib A. Kofahi and N. Srinivas
This paper emphasizes the importance of computer science teaching. It mentions ingredients for strategic computer science teaching vital to cope up with rapidly changing technology within the software development organizations. It discusses present day computer science curricula and makes specific recommendations to fit curricula to current software industry needs.
Key words: Computer Science; Computer Science and Automation; Computer Science Teaching; Curricula; Distance Education; Education; Knowledge; Knowledge Acquisition; Knowledge Analysis; Knowledge Presentation; SEI CMM; Software Development; Software Industry; Technology;
PC-sized computers, cellular telephones, and fax machines are becoming as ubiquitous as radios and televisions. Microprocessors control household appliances such as washing machines, dishwashers and ovens. Modern information and communication technology [2, 5, 7] is playing a pivotal role in the economic well-being of many nations. This raises questions:
How does the academic community react to this new reality?
Are curricula keeping up with current changes and challenges?
Does this influence the way we teach computer science?
How does computer science teaching influence growth of software industry?
In response to rapid changes in computer technology, a new discipline is emerging that we call Computer Science and Automation (CSA). Apart from rapid pace of developments in this area [4, 6, 12], other important forces are at work that promote a need for frequent CSA curricula revisions. Change of CSA teaching style is needed [1, 3, 4, 6, 9, 12] to gain momentum to meet the competitive (software) job market.
Employers needs and required knowledge and skills for CSA careers continues to change rapidly. Preparation and motivation of students also faces major changes. These phenomena are not entirely new, nor are they confined to CSA. Educators faced such changes in the past and routinely responded with recommendations for model curricula for undergraduate and graduate programs [1, 8, 9]. Modification to CSA curricula/teaching is required to fit industry needs [3, 9]. Creating ‘on-site training programs’ for the (under) graduates in Software Development Organizations (SDOs) can show students the practical world while they are on learning curve.
This article explores 1) how to focus CSA teaching and curriculum to support SDOs growth, 2) the main ingredients involved in CSA teaching, 3) a vision of CSA teaching along with its associated directions, 4) the nature of work in the SDOs, and 5) effective CSA teaching to fit software industrial needs.
The Main Ingredients of CSA Teaching
It is difficult to enumerate all the ingredients underlying the CSA education. In this section we list some of the issues that have a major impact on the CSA education that influence the software industrial growth:
To improve the CSA education, we specify knowledge acquisition (KA) from the students/faculty perspective, The KA focus for faculty is to improve relevance and quality of education in academic institutions. Emphasis from the student point-of-view is biased towards the job market. At this junction we do not stress creation of a research environment in academic institutions because of the small percentage of students who choose this option. Developing awareness of research among students is a bottleneck because research and innovation are focused in industry, not academic institutions. Industry research is cloaked in secrecy in the race to be first to market and secure a handsome return on investment. The academic/industrial relationship to share research information is becoming a no-man’s map.
The dream of academic institutions is to lead surrounding industries through consultancy, new methodologies, quality control, and easy maintenance techniques. This scenario is not possible unless academic institutions update their KA process to gear up to the speed of industry. Knowledge available in textbooks and journals lags behind the requirements of industry. Courses must focus on application of current software tools and advanced techniques such as Object Oriented Programming (OOP). And they must be accessible through distance education and web based learning. For certain topics, such as e-marketing and tele-drafting, the KA should come from senior industrialists rather than advanced academicians and researchers. Partnership with industry is essential to ensure a vital and relevant curriculum.
Due to the rapid change in the field of computer sciences, the KA is changing its direction according to the industry needs. As a result, the learning curve in academic institutions varies dynamically. Teaching methodologies must also vary to achieve a consistent map between academia and industry. For example, course materials in CSA are focused towards programming concepts rather than the design methodologies. Replacement of the C programming language with Java in most academic institutions shows adaptation of leading edge technology. Electronic knowledge storage media and KA continue to change, and are replacing traditional approaches to learning based on text materials.
Knowledge Analysis and Presentation
Generally speaking, knowledge is a true justified belief. In the present context we look for the knowledge analysis from two different perspectives, viz., knowledge that supports the individual career and acquired knowledge that supports his/her application development. In both cases one needs the art and idea behind its representation.
In the first perspective, it is natural to think about it in a self-motivated way, where the knowledge is purely personal and narrow and initially absorbed as theory of “book learning”.
The second perspective is more practical by nature, where application of one’s learned knowledge matters a lot (usage for the real world application), rather than how much he or she has learned (quantity). Emphasis is moved from regurgitation of knowledge to applying this knowledge to real world situations in the form of physical objects.
The next phase of analysis of this knowledge is to determine its usefulness for software industrial growth. In teaching CSA, every teacher should know:
What depth he/she should go in explaining the details.
What applications are relevant, with exemplary case studies?
Criteria for assigning grades.
Effective instruction at school/university is helpful to software industrial growth in several ways:
Quality perspective: The software is first generated (in the form of a conceptual vision) in the developers mind. Software is application oriented and requires quality consciousness. Thus, quality of a software product is directly related to effective teaching of CSA in the school/university.
Productivity perspective: Software organizational productivity is based on practical application and utilization of knowledge gained in the academic institution as a result of effective teaching. Thus, we strongly recommend emphasis on practical aspects of CSA to maximize software industrial growth.
Cycle time: Focus on a particular software engineering process to minimize developmental life-cycle of each product and reduce overall cost.
Knowledge analysis should be two-fold:
Impact on ‘fundamental concepts’. This examines the educational base to ensure it is comprehensive, relevant, and efficient. This enables the software industry to generate compact products with low maintenance cost.
Examine ‘application to the real world problems’. This helps software industries to generate high quality projects with proper planning and estimation. It produces computer science and automation professionals to meet changing requirements of the job market.
We strongly believe that knowledge representation is of major importance for prospective software developers/leaders/managers. Academic institutions often stress knowledge chunks without improving the knowledge representation aspect. Lack of practical knowledge and experience makes it extremely difficult for students to apply what they have learned in a practical situation.
Higher education institutions can contribute to the software industrial growth by teaching:
Ways to determine market demand: Product oriented
Ways of defining the market field: Process oriented
Educational programs for interdisciplinary students: Specialization oriented
It is difficult to retain motivated students for CSA research in universities due to the immense attraction/demand of the software industry. In some countries it is a balance between the monthly paid scholarship and the relevant research domain. Lack of advanced research tools and motivated supervision causes CSA research to focus on extension of certain techniques rather than new innovations.
It is vital for CSA curricula to motivate students towards research programs and to continue research even after he/she leaves the academic institution. By continuation of research in the industry, this make him/her more productive:.
Direct research to an application domain such as applet programming, quantum computing and certain computational aspects of Biotechnology.
Develop applications of e-business to various applied domains.
Generate new software engineering (SE) tools for code compression, design and testing.
The essence of CSA research and curricula in academic institutions should focus towards the following few seminal points 
Integration of technology into the strategic objectives of the software firm.
This focuses attention on growth and industrial maturity
Ways to get into and out of technologies faster and more efficiently
A methodology for evaluating technology more efficiently
A strategic way for minimizing the product development time
An intelligent way to manage large, complex and interdisciplinary projects
Software industrial growth depends on motivated, skilled and dedicated people who work in collaboration. Emphasis is on team skills. Those with higher educational qualifications often collaborate in technological research rather than software product development. Technological research progress should be directed towards software industrial needs in product development (e.g., coding standards), SE process development (e.g., CMM model), techniques for minimizing the SE life cycle (e.g., steps for improving speed of peer/technical reviews), improving quality of product, improving reuse potential, motivating developers, code compression techniques and other innovative technologies. To meet these needs we need to integrate research and education.
Society has grown ever more dependent on computing technology. Many sectors of science and industry anticipate ongoing shortages of well-trained computer scientists and engineers. The problem is compounded by a shortage qualified and motivated CSA teachers to integrate their research with the educational program. For example, there is a shortage of teachers of object-oriented programming languages. CSA programs should combine courses in reliability and security with object-oriented programming languages to produce conceptual models to simplify production of reliable and reusable software components.
CSA Teaching: A systematic Approach
In the literature there are many models of teaching and learning in the IT age    . Researchers are scrutinizing systematic approaches for teaching CSA to respond to dynamic and rapid changes in software industrial growth. Here we present a systematic approach for teaching CSA from two different perspectives:
Proposed Directions in CSA Education
Problem solving and theory are two corner stones of CSA; its disciplines possess a rich set of phenomena open to the researchers. An important strength of the CSA education is willingness to experiment with diverse models of education. For the current purpose, we classify educational systems into three broad categories: low-level, intermediate level, and senior level.
At the low level (school level), it is not reasonable to expect students to design good experiments. Instead, focus should be on exposing them to use experiments to study and analyze systems. Through experimentation, students can study and solve interesting problems even before they have developed programming skills. Experiments include ways to use operating systems such as MS DOS, UNIX and Windows. Educational institutions have different priorities in setting up educational levels for industry driven needs, general education and literacy. Due to these differences, it is not possible to come up with a common model that applies to all educational institutions. However, there should be designated curriculum standards to facilitate transition to the higher educational levels. Key elements include:
Theoretical knowledge concepts with relevant physical examples
Mathematical structures underlying the each physical concept.
Experiments to provide a practical foundation for the competitive world of industry.
The intermediate level is college level education. It is intermediate between school and university educational systems and should focus on specialization and current and future trends. Having exposure to experimental methods at low level, students require fewer infrastructures and will be able to design and conduct small experiments on their own. This not only improves the intellectual caliber but also improves self-confidence. It is crucial for the candidate to apply theoretical knowledge to practical situations, and to verify and validate results through experiments. The outcome will resolve two questions:
Ultimately, this leads the student to determine his/her professional role such as scientist (researcher), academician, or a technician. Elements in that decision include:
Emphasis on practical implementation of the learned knowledge.
Penetrating vision towards research and theory.
Specialization (data structures, programming languages, etc) or the aggregation world (general CS topics).
Concentration in a specialized topic for advancement within that topic.
The senior level is a mature level - a university level. Every individual representative of a specialized topic and stands for its advancement. We call this post-graduate education. Having developed their experimental skills incrementally through open-ended experiments at the graduate level. Students at this level of the curriculum are better prepared to design experiments on their own. This helps the individual to build his or her career, and also cultivates understanding software industrial applications for their specialization.
A crescendo of criticism from industry warned that young software developers were not well equipped with needed skills for the world of work. Fledgling graduates were unpracticed in working as teams and incompetent at communicating with co-workers and managers, both orally and in writing.
The Art of Teaching and Needed Actions
The following needs were identified based on deficiencies in today’s teaching of CSA:
Focus on industry driven needs, which are often of short duration.
Augment computer programming skills with other aspects of programming such as code compression techniques, reusable design techniques, and testing techniques.
Involve leading edge technology in courses on design of intelligent systems; reduce emphasis on design/usage of simple automation tools.
Implement faculty improvement programs to upgrade their caliber and learn new technologies based on suggestions of leading software industrialists.
Narrow the gap between research directions in the academic institutions and software industrial needs.
Specific improvements to support fast software industrial growth include:
Combine programming skill courses with certain heuristic aid for designing reusable code modules.
Design automated tools for recognizing number of units for unit testing of a certain piece of code. Design of effective verification and validation tools.
Develop computer aided tools, based on human psychology and cognitive psychology, to improve the developers’ motivation.
Affect the following improvements in CSA teaching practices:
Emphasise practical aspects based on experience, in the form of a documentation, such as small prototype projects, and certain advanced simulation techniques
Refocus evaluation schemes (class assignments, tests, etc.) toward practical experiences.
Integrate technological advancements from Internet and World Wide Web (WWW) for their practicality with the theoretical aspects.
Improve teamwork and effectiveness by designing experiences to learn best practices in collaborative methods, communication, documentation, coding standards, and reporting. Incorporate individual and group teaching that simulates the culture and psychological environment of industry.
Software Development Organization: The Very Idea
By closely examining SDOs we realize they produce a "product" known as "software", using a well-defined "process". This process is mainly supported by some "tools" . In the past, the work culture in SDO used to be effected by a single person. This is due to a belief that, boss knows the best. The engineering process and the quality of the final product are more influenced by the boss opinions/views, rather than sticking to any standards. Hence, the cost associated with maintainability used to be too high, when compared to the actual cost of the product.
The present generation has a work culture designed and developed using standard SEP software. For example, the software engineering institute capability maturity model (SEI CMM)  is a best possible model for such a process. Therefore, it is realized that the main credibility of a software product lies in the quality of the process through which it is generated. Therefore, we stress that there is a vital need to include the SE process in any CSA curricula.
The Nature of Work
The nature of work in an SDO can be categorized based on two groups of people: The first group includes the people who do the work and the second group includes the people who organize it. The quality carrying properties of the first group includes:
Collaborate and support good inter-group coordination,
Recognize and close communication gaps,
Distribute work equally,
Attend weekly meetings, submit weekly work reports, and
Participate in regular peer/technical reviews.
The quality carrying properties of the second group include:
Keep track of customer communication/feedback,
Buffer sudden impacts like injection/deletion/replacement of group members for various technical/non technical reasons, and finally,
Manage people, programs, and materiel. For example, concurrently balancing personnel relationships, a sudden tool purchase, metrics collection, and software evaluation.
Management plays a vital role in the SDO and should be integral to IT and CS curricula. Mutual cooperation between these two categories of people play a major role in determining productivity of an organization. Any piece of ‘work’ in SDO will always have a ‘rework’ slot mainly for refinement/modification as follows:
Based on the literature, cost of maintenance is about 70% that of the cost of the product, and occurs primarily in the rework slots. Effective teaching methods and the concise IT and CS syllabi at the university level should help to minimize rework in industry.
The Impact of Teaching
Here we list some open questions faced by SDOs and the remedy with effective teaching of CSA:
How to Retain the Talented People?
One of the major issues in an SDO is to retain talented people. The internal training unit is an effective way for a developer to keep abreast of advanced technologies such as new language paradigms and design/coding/testing techniques. It is also effective for developing team skills and more effective work patterns.
How to Improve the Developers’ Motivation?
It is impossible to give an exhaustive list of reasons to support this question. Based on our past experience, developers benefit from establishing a quality improvement facility (QIP). Apart from internal problems, software industries face the following problems as result of poor teaching at the respective academic institutions:
Poor thinking, poor communication, lack of clear objectives.
Unable to deliver code in optimum number of lines.
Inefficient structures for reusable (code/design) modules.
Lack of proper documentation capabilities.
Poor inter-group coordination.
Some issues can be tackled with the effective teaching of CSA subjects at the university level. The following are remedial steps suggested by the respondents to the above queries.
Industry Academia Relation
The academia-industry relationship can assist in bridging the gap between the software industrial needs by directing personnel to the right jobs. The following improve/maintain relationships:
Recruitment and Campus Interviews: Software industrial recruitment should occur in an academic institution. That is, the academic institute should provide such a seminal environment with in their campus for industrialists to select prospective employees.
Transfer of Ideas: Each academician should play a prominent role in transferring the latest leading edge technology (derived from referred journals/periodicals/documents) to industry on a weekly/monthly basis.
Learning Organization: Groups of academicians should form a training unit in each software industry to educate engineers/developers from time-to-time on pertinent topics of their on going projects.
Planned Transition: Industry should allow final year students to visit software industries to realize the practicality of their theoretical and laboratory learned topics.
The Success Behind the SDOs
The most prominent aspect CSA teaching that contribute to success of SDOs can be visualized from two different angles viz., comfort level of the courses offered at the EI and the level of mathematics background in built in the curriculum . The comfort level of the course is mainly useful in the implementation of the following vital properties useful for SDOs:
Implementing the interpersonal communication.
Implementing the sequenced instruction
Implementing the diagnostic evaluation
The mathematics background in built in CSA curriculum will have the positive effect on the SDO growth in the following ways:
Improving motivational techniques
Creating intellectual levels.
Enhancing software design skills, such as data flow diagrams, object oriented design and user interface design
As a whole the first four of these attributes contribute to the software engineering process improvement proposed by the SEI CMM. This is mainly helpful in the quality and reliability of the software products. The attributes like 5, 6 and 7 will further contribute to the organizational process maturity to cross the SEI CMM Level 5.
In this work we attempted to point out features vital for software industrial growth. Emphasis is concentrated on impact of computer science teaching on the software industrial growth.
We conclude that the growth of the software industry in any nation is proportional to the motivation and skills delivered by an academic institute, especially from the following viewpoints.
Give ongoing and continuous feedback on leading edge technology
Meet the job market with a future vision for establishing a competitive base
Refinement is needed to establish quality CSA programs in educational institutions. We believe there is an acute need for educational programs to change synergistically with SDO growth. It is important fto develop concomitant communication skills and inter-group coordination techniques vital for SDOs.
An ACM Response: “The scope and direction of Computer Science,” CACM, Vol. 34, No. 10, December 1991.
Asim ur Rehman Khan and Misbahuddin Mirza, “Challenges of Information Technology,” Int’l Workshop on the Frontiers of Information Technology, Islamabad–Pakistan, December 23-24, 2003.
Barr R.B., and Tagg J., “From teaching to learning – A new paradigm for undergraduate education,” Change, Vol. 27, No. 6, December 1995.
Chu, Bill, Venu Dasigi, John Gorgone, David Spooner, “Information Technology Curriculum Development,” SIGCSE Bulletin (33,1) March 2001, 400-401.
Fawad Mahmood and Muhammad Aamir, “Future Information/Communication Networks: Major Trend and Projections for developing countries,” Int’l Workshop on the Frontiers of Information Technology, Islamabad–Pakistan, December 23-24, 2003.
Golshani, F. “A comprehensive curriculum for IT education and workforce development: an engineering approach,” Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education, Charlotte, North Carolina, United States, 2001, pp. 238 - 242
Junaid Ahmed Zubairi, “Networking for Tomorrow,” Int’l Workshop on the Frontiers of Information Technology, Islamabad–Pakistan, December 23-24, 2003.
Le Bold W.K., et al. Programming perceptions and computer literacy of students enrolled in computer-related curricula, IEEE Trans. On Education, Vol. E-30, No. 4, November 1987.
Lee E.A., and Messerschmitt D.G., Engineering and education for the future, IEEE Computer January 1998.
Mogee M. E., Educating Innovative Managers: Strategic Issues for Business and Higher education, IEEE Tr. Engg. Management, Vol 40, No. 4, November 1993.
Parnas D.L., Education for computing professionals, IEEE Computer, January 1990.
Piner, Mary-Louise, Ed, “Defining Computing Curricula for the Modern Age,” Computer (34,6) June 2001, 75-77.
Shoniregun, C. A. and S-J. Gray, “Is E-learning Really the Future or a Risk,” Ubiquity, 4(10), 2003.
Wilson, B.C, and Shrock, S., “Contributing to success in an introductory CS course: A study of twelve factors,” SIGCSE bulletin, Vol. 33, No. 1, March 2001.
About the Authors
Najib Abdel Karim Kofahi is an Associate Professor of Computer Science. He received his Ph.D. from University of Missouri-Rolla USA in 1987. He is a faculty member in the department of Computer Sciences at Yarmouk University – Jordan since 1987. He is on sabbatical leave from Yarmouk University for the academic year 2003-2004 and working as a visiting associate professor at King Fahd University of Petroleum and Minerals (KFUPM). He worked extensively in computer science curriculum development at Yarmouk University since his appointment and at Philadelphia University-Jordan in the academic year 1993-1994 while he worked as the chairman of Science Department, at Philadelphia University, 1993/1994 while on his first sabbatical leave from Yarmouk University. He worked as Chairman of the Computer Science Department at Yarmouk University in the years 1990 -1992. Currently he is leading an online course development team to develop online course material for Algorithms course at KFUPM. He has several international journal and conference research publications.
Contact Najib at email@example.com
Najib A. Kofahi
Department of Information and Computer Science
King Fahd University of Petroleum and Minerals
Dhahran, Saudi Arabia
Nowduri Srinivas is currently working as an associate professor in department of Computer Science and Engineering at Birla Institute of Technology International Center. Dr. Srinivas main area of research primarily includes artificial intelligence and software engineering. He has published several papers in the area of ‘artificial intelligence’ (in particular to uncertainty handling) and ‘software engineering’ (in particular to software engineering process). Dr. Srinivas has given presentations at several international conferences and workshops. Dr. Srinivas has reviewed papers for IEEE transactions on software engineering. Dr. Srinivas is presently investigating the various ways of measuring and capturing uncertainty that arise in software engineering life cycle, while improving the engineering process.
Contact Nowduri at firstname.lastname@example.org
Department of Computer Science and Engineering,
Birla Institute of Technology International Centre,