Project-centric Evolutionary Teaching in Software Development Education

Posted on March 15, 2011

0


Author:  Sanjay Goel, http://in.linkedin.com/in/sgoel

________________________________________

Numerous studies and our own surveys have shown that projects are the most effective teaching methods with respect to enhancing various competencies relevant to software development. Semester-long project experience helps in developing multidimensional competencies in all the dimensions. Hence, semester-long projects have the potential to facilitate deeper learning in many significant ways. However, projects are usually conceived as a culmination activity of learning something. It is assumed that only after completion of conceptual learning and acquiring practical skills, some project can be attempted. Usually in Indian universities, semester-long project work is not included as part of the regular computing courses. This limits the effect of the courses in terms of developing their competencies.

The constructivist paradigm of project-inclusive teaching challenges this assumption. Rather than viewing a project as the culmination activity, it is viewed as the instrument of creating richer context for learning the subject matter.  It also opens many new challenges for the faculty. They have to guide the students in formulating and completing their projects. Simultaneously, they also have to manage the learning process. Hence, project-inclusive teaching also offers a higher level of creative opportunity for the faculty as well.

However, as the traditional textbooks are normally not written with this objective in mind, the project- inclusive course teaching requires a change in delivery strategy. We have tried to enhance the quality of several undergraduate computing courses by project inclusion. This attempt has given us the confidence that that it is usually possible to plan and deliver the courses with a central focus on the semester-long project work of the students.  Two different models, viz., project-centric evolutionary instruction and project-oriented instruction, have been developed and applied for achieving this goal.  In this article, I am  discussing only the first of these two models.   

Project centric evolutionary teaching offers active, integrative, reflective as well as collaborative engagements. In project-centric teaching, we reverse the traditional teaching methodology in which conceptual learning is followed by practice assignments, and only sometimes project work. In our scheme, at the beginning of the course, the teachers first help and guide the students to formulate the initial project problem. Examples and templates are used to complete this task. Since it is not possible for the teacher to discuss every project in the large class, the instructor then selects some of these projects to forward the subsequent classroom discussions. They try to define the initial and simplistic project scoping and specification for one or two projects through classroom discussion. The students follow a similar process to complete these tasks for their projects. Teacher guide the students to incrementally enhance their project scope later in the semester, essentially to create the context for the forthcoming concepts and topics of the subject matter. They refine the project scope before introducing any new topic.

The teacher has to bring in the concepts after setting the context. Conceptually, this model has some similarity to zero inventory manufacturing practice. The learners are not given a large inventory of unused concepts. The concepts are introduced only after creating the need for its use with reference to students’ semester-long project.

We have developed the conceptual schema for defining the main characteristics of student projects’ evolution in project-centric evolutionary teaching of object-oriented programming, software engineering, database management systems, web application engineering, enterprise software development,  information systems, and object oriented systems and programming.  All these schemas have also been tried in real courses by concerned faculty members at JIIT.   The evolutionary stages of the defining characteristics of student projects in some computing courses developed in collaboration with the concerned teachers are given below:

A. Object-oriented Programming:

(Developed in Collaboration with: Sandeep K Singh, T.K. Tewari, Manish K Thakur, and Manisha Rathi)

  1. Single application: single class, single function
  2. Single application: single class, multiple functions
  3. Single application: multiple classes, multiple functions, simple relation
  4. Single application: multiple classes, multiple functions, complex relation (association)
  5. Single application: multiple classes, multiple functions, complex relation (aggregation, composition)
  6. Single application: multiple classes, multiple functions, complex relation (inheritance)
  7. Single application: multiple classes, multiple functions, complex relation (polymorphism)
  8. Secure single application: multiple classes, Multiple functions, complex relations
  9. Robust (exception handling) and secure single application: multiple class, multiple function, complex relation
  10. Robust and secure multiple applications: multiple classes, multiple functions, complex relations

B. Database Management Systems:

(Developed in Collaboration with: Indu Chawla)

Simple database applications : Single-user, Multi-user, Multiple type multi-user

  1. Web-enabled database applications
  2. Robust Web-enabled database applications
  3. Robust Web-enabled database applications with a large no. of concurrent users
  4. Secure Robust Web-enabled database applications with a large no. of concurrent users
  5. Secured Robust Web-enabled database applications with multimedia user interface and database
  6. Mobile accessible Secure  Robust Web-enabled database applications

C. Web Application Engineering:

(Developed in Collaboration with: Jolly Shah)

  1. Single Thin Client Web Application
  2. Single Thick Client Web Application
  3. Multiple Thick Client Web Application
  4. Multiple Rich Client Web Application
  5. Multiple Rich Client Web Application with automated database population
  6. Secure Multiple Rich Client Web Application with automated database population
  7. Mobile enabled Secure Multiple Rich Client Web Application with automated database population

D. Enterprise Application Development:

(Developed in Collaboration with: Ritu Arora)

  1. Single Thin Client Web Application
  2. Multiple Thin Client Web Application
  3. Multiple Thick Client Web Application
  4. Multiple Rich Client Web Application
  5. Modular Multiple Rich Client Web Application
  6. Modular Multiple Rich Client Web Application with multiple GUI support
  7. Secure Modular Multiple Rich Client Web Application with multiple GUI support
  8. Secure Modular Multiple Rich Client Web Application with distributed access
  9. Mobile enabled Secure Modular Multiple Rich Client Web Application with distributed access

E. Software Engineering:

(Developed in Collaboration with: Manisha Rathi)

  1. Initial, direct, independent and well-defined requirements
  2. Initial, direct, independent and ill-defined requirements
  3. Initial, direct, inter-dependent and ill-defined requirements
  4. Initial, derived, inter-dependent and ill-defined requirements
  5. Evolutionary, derived, inter-dependent and ill-defined requirements

F. Information Systems:

(Developed in Collaboration with: Jolly Shah)

  1. Building IS using Single Thin Client
  2. Building IS using Multiple Thin Client
  3. Building IS using Multiple Rich Client
  4. Building IS using Modular Multiple Rich Client
  5. Building IS using Modular  Multiple Rich Client with Multiple GUI Support
  6. Building IS  using Secure Modular Multiple Rich client with  Multiple GUI Support
  7. Building IS using Secure Modular Multiple Rich Client Web Application With Distributed Access
  8. Building mobile based IS

G. Object-oriented Systems Programming:

(Developed in Collaboration with: Sandeep K. Singh and Minakshi Gujral)

Use a TDD approach for development at all stages.

1. Single application: single class, single function

2. Single application: single class, multiple functions

3. Single application: multiple classes, multiple functions, simple relation

4. Single application with persistent data: multiple classes, multiple functions, simple class relation, multiple data table

5. Single application with persistent data: multiple classes, multiple functions, complex class relation (inheritance), multiple data table

6. Single application with persistent data: multiple classes, multiple functions, complex class relation (polymorphism), multiple data table

7. Simple database application: multiple classes, multiple functions, complex class relation, interrelated data tables, multiple type user, common GUI (event driven programming and widgets)

8. Robust simple database application: multiple class, multiple function, complex class relation, multiple data table, multiple type user, common GUI, exception handling

Progressive evolution of the subject matter in the evolving context of a project is the hallmark of this approach. Appropriate concepts, theories, technologies, procedures, and tools are introduced as per the needs of each stage of project evolution. These stages are flexible enough to accommodate new concepts, theories, technologies, procedures, and tools at each stage.  Metaphorically, it looks at content delivery as a natural process of a small but complete bud blossoming into a complete flower, rather than like the traditional but unnatural compartmentalized additive advancement. As per this model, most of the projects have high similarity with respect to technological issues. The application domain becomes the main differentiating factor for different student projects. Hence, observation and review of other students’ projects also gives an opportunity to expose the students to a variety of application domains.

This model is highly suitable when the student projects can be planned to use most of the concepts of the subject matter. This model is not suitable if the objective is to have the students to carry out their projects in different areas of the subject matter, and the projects are required to be differentiated based on their technological aspects, rather than application domains.  Our second model (to be discussed later), project-oriented instruction, addresses such situations.

I shall be happy to work with  interested faculty members in  any domain (engineering and even other disciplines including humanities) for designing the stages of evolutionary project scope in the context of their regular courses.

References:

  1. Ritu Arora, Sanjay Goel, “Software Engineering Approach for Teaching Development of Scalable Enterprise Applications,”, 22nd IEEE-CS Conference on Software Engineering Education and Training CSEET, , pp.105-112, February 2009.
  2. Sanjay Goel, , 2010.
Advertisements
Posted in: Uncategorized