Document Text (Pages 341-350) Back to Document

Design of Interventions for Instructional Reform in Software Development Education for Competency Enhancement

by Goel, Sanjay, PhD


Page 341

Seventy-one experts working in thirteen companies with additions like Accenture, Borland
Software, SUN, and TCS responded to our new survey. The responding experts had industrial
experience ranging from 1 year to 22 years, with an average experience of 5.6 years. Data was
analyzed in a similar manner to our earlier SPINE-based study (Appendix A1). For classification
of competencies we added another category at the top to distinguish the topmost
recommendation and termed it as ‘Existential.’ The normalized figure of merit (NFOM_Rj) for
these competencies was ten or very close to ten. Table A3.2 provides the summary of the 2007
results in descending order of the normalized figure of merit.

Table A3.2: Importance of thirty-five competencies as rated by Indian engineers and managers working in Indian
and multi-national software companies (Revised Study 2007)
Category S.No. Competency (SNo as per Appendix A2)
Existential 1 Perseverance, commitment, and hard work (13)
2 Ability to work in teams (1)
Pivotal 3 Ability to apply knowledge (2)
4 Integrity and authenticity (25)
5 Analytical skills (6)
6 Accountability and responsibility (25)
7 Technical competence (31)
8 Problem solving skills (22 and 23)
Critical 9 Listening skills (1)
10 Attention to detail (15)
11 Project planning and management (24)
12 Quality consciousness and pursuit of excellence (25)
13 Critical thinking (26)
14 Readiness for lifelong learning (9)
15 Design skills (11)
Obligatory 16 Communication skills (7)
17 Research skills (28)
18 Adaptability and ability to multi-task (13)
19 “Be the customer” mentality (1)
20 Systems-level perspective (30)
21 Decision making skills (10)
22 Creativity and idea initiation (16)
Desirable 23 Organizational skills (20)
24 Mentoring skills (19)
25 Experimentation skills (14)
26 Numerical ability (26)
27 Constructive criticism skills (8)
28 Persuasion skills (21)
29 Sense of urgency and stress management (13)
30 Ability to assist others through mentoring and philanthropic donations (3)
31 Wealth creation skills (32)
32 Knowledge of contemporary issues (17)
33 Cost consciousness (25)
Complimentary 34 Sensitivity towards global, societal, environmental, moral, and ethical issues
and sustainability (3)
35 Entrepreneurship (13)

313


Page 342

Appendix A4: Mapping of Thirty-five Competencies (Appendix A3) with
Final Set of Twelve Core Competencies

The following tables give the mapping of thirty-five competencies of Table A3.2 (Appendix A3)
with our finally reduced set of twelve competencies given in Table 3.1.

Table A4.1a: Mapping of thirty-five competencies with the Final set of twelve core competencies, part –I
S.No. Core Competencies identified in 2007 Subsuming Twelve Core Competencies
(Table 2.6) (Table 3.1) (S.No as per Table 3.1)
1 Perseverance, commitment, and hard work Reflective thinking (7)
Decision making perspective (10)
Systems-level perspective (11)
2 Ability to work in teams Communication competence (4)
Systems-level perspective (11)
3 Ability to apply knowledge Technical competence (1)
4 Integrity and authenticity Decision making perspective (10)
5 Analytical skills Domain Competence (3)
Computational thinking (2)
Critical thinking (7)
Systems-level perspective (11)
6 Accountability and responsibility Decision making perspective (10)
Systems-level perspective (11)
7 Technical competence Technical competence (1)
8 Problem solving skills Complex problem solving competence (5)
Computational thinking (2)
Domain Competence (3)
Intrinsic motivation to create/improve artifacts (12)
Creativity and Innovation (8)
Systems-level perspective (11)
9 Listening skills Communication competence (4)
Attention to detail (6)
Critical thinking (7)
Systems-level perspective (11)
10 Attention to detail Attention to details (6)
Computational thinking (2)
11 Project planning and management Domain Competence (3)
Decision making perspective (10)
Complex problem solving competence (5)
12 Quality consciousness and pursuit of excellence Attention to detail (6)
Critical and reflective thinking (7)
Systems-level perspective (11)
13 Critical thinking Critical thinking (7)
Computational thinking (2)
14 Readiness for lifelong learning Curiosity (9)
Intrinsic motivation to create/improve artifacts (12)
15 Design skills Technical competence (1)
Domain competence (3)
Computational thinking (2)
Intrinsic motivation to create/improve artifacts (12)
Creativity and Innovation (8)
Reflective thinking (7)
Systems-level perspective (11)

314


Page 343

Table A4.1b: Mapping of thirty-five competencies with the Final set of twelve core competencies, part-II
S.No Core Competencies identified in 2007
(Table 2.6)
Subsuming Twelve Core Competencies
(Table 3.1) (S.No as per Table 3.1)
16 Communication skills Communication competence (4)
17 Research skills Curiosity (9)
Intrinsic motivation to create/improve artifacts (12)
Critical and reflective thinking (7)
Creativity and Innovation (8)
18 Adaptability and ability to multi-task Systems-level perspective (11)
19 “Be the customer” mentality Attention to detail (6)
Curiosity (7)
Domain competence (3)
Communication competence (4)
Systems-level perspective (11)
20 Systems-level perspective Systems-level perspective (11)
21 Decision making skills Decision making perspective (10)
22 Creativity and idea initiation Intrinsic motivation to create/improve artifacts (12)
Creativity and Innovation (8)
Computational thinking (2)
Domain Competence (3)
23 Organizational skills Systems-level perspective (11)
Communication competence (4)
24 Mentoring skills Communication competence (4)
Curiosity (9)
Critical and reflective thinking (7)
25 Experimentation skills Attention to detail (6)
Curiosity (9)
Critical and reflective thinking (7)
Intrinsic motivation to create/improve artifacts (12)
26 Numerical ability Technical competence (1)
27 Constructive criticism skills Critical and reflective thinking (7)
Systems-level perspective (11)
28 Persuasion skills Communication competence (4)
Decision making perspective (10)
29 Sense of urgency and stress management Complex problem solving competence (5)
Decision making perspective (10)
Systems-level perspective (11)
30 Ability to assist others through
mentoring and philanthropic donations
31 Wealth creation skills Dropped
32 Knowledge of contemporary issues Curiosity (9)
33 Cost consciousness Critical thinking (7)
34 Sensitivity towards global, societal,
environmental, moral, and ethical issues and
sustainability

Systems-level perspective (11)
Reflective thinking (7)

Systems-level perspective (11)
Systems-level perspective (11)
Reflective thinking (7)
35 Entrepreneurship Decision making perspective (10)
Intrinsic motivation to create/improve artifacts (11)
Creativity and Innovation (8)
Reflective thinking (7)

315


Page 344
316
Appendix A5: Catalogue of Technical and Technically Oriented Activities
Related to Software Development
1. Overarching Activities:
Technology Entrepreneurship
Program Management
Infrastructure Management and Maintenance
(Operations Management)
Contract Management
Partnership/Outsourcing/Vendor Development
Procurement
Process Quality Assurance and Control
2. Ubiquitous Activities:
Measurement
Technical Documentation and Presentation
Innovation
Research
Presenting Ideas and Insights
Configuration Management
Product Quality Assurance and Control
Knowledge Management
Training and Talent Development
Group Work, People Management, and Leadership
Idea Convergence
3. Client Interface:
Technical Marketing
Consulting
Feasibility Study
Work flow/Process Study and
Modeling
Visualization
Knowledge Elicitation
Requirement Engineering
Migration Assessment
Test assessment
Product/Requirement Definition
and Specification
Business Technology
Alignments
Deployment and roll out
User Acceptance and Usability
Analysis
User interface Design
End User Documentation
Customer Support
Infrastructure planning
4. Design:
Prototyping
Component and interface Design
Component Selection
Algorithm/Computational
Procedure Design
Architecting
Application Design
Service Design
Product Design
System Design
Network Design
Process Design
Infrastructure Design
Security Architecture Design
Process Tailoring
Test Design
Content Design
Standardization
Restructuring
Intellectual Property Management
5. Realization:
Application Customization
Application Development
Component Development
Product Development
Service Development
System Integration
Infrastructure Setup
Process Implementation and Change
Management
Code Analysis
Build and Release Management
Validation and Verification (Testing)
Maintenance, Enhancement, Upgradation,
Porting
Data Migration
Technology Migration
Performance Tuning
System Administration
Database administration
Network administration
Security administration
Service Management
Standards and regulatory Compliance
Program Comprehension and redocumentation
Reconstruction
Code Archaeology
Disaster Recovery
Production Support
6. Planning:
Time to Market Planning
Estimation and Costing
Resource Planning and Management
Project Scheduling
Risk Planning and Mitigation
Staffing and Team Development
Project Monitoring and Control
7. Evaluation:
Application Audit
Process Audit
Technology Audit
Tools and Technology Selection and Evaluation
Architecture Evaluation
Impact Analysis
Value Analysis
Usability Analysis

Page 345

Appendix A6: Taxonomy of Common Software Bugs

Programming Fundamentals related bugs
Data loss bugs, data overflow bugs, operator precedence related bugs, string handling bugs, multi-way branch
related bugs, logical operators related bugs, arithmetical function or operator related bugs, function-like macro
bugs, not checking return value for success or failure, etc.
Operating system related bugs
b1. Memory related Bugs:
b1.1. Stack Corruption: local buffer overrun, returning a pointer to a automatic variable that has gone out of
scope, declaring local storage which exceeds the size of stack of the process, function arguments passed are too
large to be accommodated on the stack, etc.
b1.2. Heap Corruption: dynamically allocated buffer over-run, freeing already freed memory, freeing memory
not allocated dynamically, etc.
b1.3. Invalid Memory Access: NULL pointer access, uninitialized memory access, dereferencing pointer to
freed memory, etc.
b1.4. Memory Leaks: Memory allocated but not freed in all legs of error handling, allocated memory handle
changed, freeing array of pointer holding dynamically allocated memory, etc.
b2. Synchronization related bugs: lack of or inconsistent synchronization, lock acquired but not released in all
scenarios, taking recursive lock which is not supported by OS, taking recursive lock which is supported by OS
but not unlocking correspondingly, blocking call from ISRs etc.
b3. Inter-process or inter-thread related bugs: shared file or socket closed by one thread and being accessed by
other threads or parent process, and heap memory corrupted by one thread result in malfunctioning of some other
thread, priority inversion, etc.
Compiler related bugs
c1. Data Structure padding related bugs: access structure members as raw memory, and structures used for
message communication on different machine, etc.
c2. Source code optimization related bugs: accessing shared memory through pointer, and accessing memory
mapped input/output ports of device, etc.
c3. Object-oriented Language Support related bugs: default constructor construction, default copy constructor for
class with pointer member, constructor for class with compiler generated internal members, erroneous reference
counting due to named return value optimization, initializing a class member with another class member using
member initialization list, lack of virtual destructor in base class, incorrect usage of delete for deleting array of
class objects, throwing exception without proper cleanup, deleting array of derived class objects with base class
pointer, lifetime of compiler generated temporary objects, and throwing an exception from destructor, etc.
Software architecture related bugs
Lack of validation of input parameters, error handling, deadlock, live-lock, reentrant function, concurrency,
parallelism, memory fragmentation, etc.

317


Page 346

Appendix A7: Proposed Curriculum for
Masters in Archaeo-heritage Informatics

In 2005, we also proposed the design of a two year master’s program in Archaeo-heritage
Informatics [177]. We viewed information technology as an enabler to enhance productivity,
quality, efficacy, creativity, and also to facilitate integration of innovative ideas in the
archaeological activities of survey, testing, research, conservation, restoration, dissemination,
and management. The courses included three streams: (a) art, archaeology, anthropology, and
heritage studies, (b) computing and multimedia, and (c) communication and management. In
the specific context of Indian universities, we proposed the scheme given below”

Ist semester: (i) basic computing tools, (ii) digital media, (iii) oriental philosophy and
linguistics, (iv) art, architectural aesthetics, and design, (iv) anthropology, and (vi) learning
methods.

2nd semester: (i) web-enabled content creation, (ii) computer based visualization, (iii) computer
aided qualitative and quantitative analysis, (iv) archaeo-heritage documentation methods, (v)
archaeo-heritage conservation methods, (vi) group project.

3rd semester: we proposed to include (i) GIS and digital field methods for archaeology, (ii)
digital library, (iii) knowledge management, (iv) entrepreneurship, (v) archaeo-heritage research
methods, and (vi) group project.

4th semester: (i) quality and creativity management, (ii) design methods, and (iii) dissertation.

318


Page 347

Appendix A8: Some Suggestions for Breadth Courses

Within the context of many knowledge disciplines in sciences, mathematics, engineering,
management, social sciences, and humanities, a body of knowledge has already been created
around systems and systems thinking. In this context, operations research and mathematical
theory of systems are well developed areas in mathematics. Control systems, system engineering,
and modeling and simulation can be engineering departments’ contribution for this purpose.
Biological subjects are traditionally organized in terms of various systems, and over the last few
years, the area of computational modeling of biological systems has also been well developed.
Topics on statistical physics, complex system physics and nonlinear physics can be considered
for exposing students to think in terms of large complex systems. With reference to social
sciences, humanities, and management, courses on the history of ideas, diversity of human
languages, comparative economic systems, world cultures, world epics, socio-cultural systems
analysis, operations management systems, business process modeling, etc., offer huge potential
to engage students in systems thinking. Richness and diversity of such exposure will reinforce
systems thinking and help in developing the ability to learn new domains.

319


Page 348

Appendix A9: Inadequate Development of Curiosity in
Software Development Education

In 2005, we carried out an empirical study through a detailed questionnaire on nature of
questioning in the class. Twenty-nine undergraduate students of computer science and
engineering and information technology gave their responses. A summary of their responses is
given in Table A9.1.

Table A9.1: A summary of students’ responses on ‘questioning in the class’
1. Learning is a consequence of thinking, and knowing facts is only small part of it.
2. Most students like to depend more on self study than on lecture classes and they attend classes of most

teachers mostly to meet the attendance requirements.
3. Only a few teachers ask sufficient number of questions during lecture classes. Most teachers do not normally

ask more than three questions in a one hour lecture class. However, some teachers may ask even up to eight
questions during the same duration.
4. Only some teachers give sufficient wait-time (at least few seconds) before calling a student to answer their

questions during their lectures.
5. Only a few teachers ask questions that helped them to think and learn. Most questions asked by most teachers

are related to facts, syntax, formula, procedure or recall that do not require deep thinking. They ask questions
to check if students are attentive and are following them, to keep the class interactive, to revise, to create
interest, to boost the morale of students. When most teachers ask questions during their lectures, they usually
have a “right” answer in mind, and they do not want to hear what students think; they just want to hear that
answer only. Very few actually ask questions to provoke the students’ mind to think beyond the point where
the teacher stops in the class.
6. Very few teacher questions enhance creative/analytical thinking, or promote teamwork.
7. Only a few teachers typically wait for at least few seconds before speaking after a student has answered their

questions during their class. Further, only a few teachers typically explain and critique students’ answers.
8. When students give an incorrect answer to a question, only a very few teachers try to find out why students

answered as they did.
9. Very few teachers help students to expand their initial answers through more probing conversations or help

them through cues and clues.

10. Only some students take initiative to ask questions when confused or curious, and very few asked questions

that required thinking and contribute to classroom discussions.

Software developers’ views
Responding to the state of curiosity development in undergraduate computing education, a
software project manager from Romania made the observation, “…neither undergraduate nor
graduate computing education are doing enough for enhancing this curiosity. In order to find
answers, it is best to always have with you a set of questions. The real problem is if he can
generate an interesting set of questions…” A senior software engineer (educated in India,
working in USA) commented, “Curiosity is what you have as your nature. …college education
can absolutely not help you here on it's own. This is a human nature and college is of no help
here...”
320


Page 349

Appendix A10: Survey: “Software developers - (How) Did your college help
you in your development?”

A. Effectiveness of Teaching Methods: Survey of Software Developers (2009)
In 2009, our study on teaching methods (Appendix A1) was further extended and refined by
refining and adding a few more teaching methods. Through the online global community
LinkedIn.com, and online surveying tool surveymonkey.com, we conducted a survey, “Software
developers - (How) Did your college help you in your development?” among working software
professionals.

We asked them to rate various educational experiences of college studies with respect to their
direct/indirect contribution for respondent’s later technical/professional/academic activities in
terms of skill, knowledge, problem solving methodology, mindset, thinking, habits, values, etc.
We received 67 responses out of which 49 also revealed their identity and affiliations. These
respondents are working in many companies and have varied experience levels. Some of them
have more than twenty years of experience. We offered them a list of twelve types of educational
experiences. We asked them to associate each of these experiences with six choices: (i)
extremely useful, (ii) mostly were useful, (iii) many were useful, (iv) some were useful, (v) not
useful, and (vi) rarely/never experienced during college studies. We assigned a decreasing
numeric value ranging from 4-0 to first five of these options, and a zero to the last option. Table
A10.1 shows the results of this survey in the descending order of average rating.

321


Page 350
322
Table A10.1: Effectiveness of educational experiences for competency enhancement of software developers
“Software developers - (How) Did your college help you in your development?”
Extremely
useful (4)
Mostly
were
useful
(3)
Many
were
useful
(2)
Some
were
useful
(1)
Not
useful
(0)
Rarely/never
experienced
during
college
studies
(0)
Rating
Avg
(0-4)
1. Projects 61.2%
(41)
23.9%
(16)
9.0%
(6)
6.0%
(4)
0.0%
(0)
0.0%
(0) 3.40
2. Laboratory work 38.8%
(26)
35.8%
(24)
10.4%
(7)
9.0%
(6)
3.0%
(2)
3.0%
(2) 2.99
3. Discussions with other
students
35.8%
(24)
35.8%
(24)
16.4%
(11)
9.0%
(6)
1.5%
(1)
1.5%
(1) 2.96
4. Teaching peers/juniors 32.8%
(22)
31.3%
(21)
16.4%
(11)
7.5%
(5)
3.0%
(2)
9.0%
(6) 2.84
5. Thinking and work oriented
Lectures
32.8%
(22)
25.4%
(17)
23.9%
(16)
11.9%
(8)
1.5%
(1)
4.5%
(3) 2.76
6. Discussions with Faculty 31.3%
(21)
28.4%
(19)
14.9%
(10)
11.9%
(8)
4.5%
(3)
9.0%
(6) 2.70
7. Industrial Training. 31.3%
(21)
23.9%
(16)
14.9%
(10)
11.9%
(8)
7.5%
(5)
10.4%
(7) 2.60
8. Research Literature survey
oriented assignments
20.9%
(14)
32.8%
(22)
20.9%
(14)
13.4%
(9)
3.0%
(2)
9.0%
(6) 2.55
9. Discussions with others 16.4%
(11)
31.3%
(21)
19.4%
(13)
22.4%
(15)
1.5%
(1)
9.0%
(6) 2.39
10.Homework and Tutorial 13.4%
(9)
20.9%
(14)
26.9%
(18)
20.9%
(14)
14.9%
(10)
3.0%
(2) 1.97
11.Knowledge transmission
oriented Lectures (explain and
follow the textbooks)
10.4%
(7)
14.9%
(10)
29.9%
(20)
35.8%
(24)
4.5%
(3)
4.5%
(3) 1.91
12.Written examinations and
required preparation
10.4%
(7)
14.9%
(10)
28.4%
(19)
32.8%
(22)
9.0%
(6)
4.5%
(3) 1.85
Usually, the traditional educational systems and approach over-emphasize three educational
methods: (i) knowledge transmission oriented lectures, (ii) homework and tutorials, and (iii)
written examination and required preparation. Very interestingly, as shown in Table A10.1,
these most valued methods were found to be the least valuable by our respondents for
contributing to the development of their skill, knowledge, problem solving methodology, mindset,
thinking, habits, values, etc., for their later technical/professional/academic activities. These
were the only three methods that were found to have an average rating of less than 2 on a scale of
0 to 4. That means that a good number of our respondents found only some or none of these

© 2009 OpenThesis.org. All Rights Reserved.