About program-FPGDST


The software professionals of today face challenges that earlier generations did not. We live and work in an era of rapidly growing and shifting paradigms, constantly posed with the task of keeping pace with the growth and changes.

This educational programme of NCST is designed to prepare the participant to deal with situations in which things threaten to change faster than one can assimilate them. The approach adopted has evolved over a number of years. This approach primarily ensures that the participant:


i.
learns the basics of our craft in this field of software technology,
ii.
is provided with the best foundation for a good software professional, that is, a solid knowledge of those things that underpin every development technology, no matter how different or how advanced, and
iii.
is equipped with the capabilities to understand the fundamentals irrespective of the programming methodology, language, the development platform, the software tools, etc.

The following is the list of such basic concepts and skills, which this course is designed to impart to its participants. Beginning with data, it proceeds with programs, platforms, technologies, methodology, the software user and finally personal skill development; not necessarily in that order. This is done through the 12 modules of the course referred to by their acronyms, namely, OOPJ, DSAL, PCCP, COOS, GUID, DBMS, OOAD, CNET, WEBP, SCOT, SENG and PROJ.

1.
Data Structures (part of the DSAL module)
Data structures are containers that contain objects of data types. There are several common data structures, and each has its own behaviour and application. Common data structures are: arrays of one or more dimensions, stacks, linked lists (singly and doubly linked), queues, and trees (balanced, binary, and so on). There are others. Understanding data structures helps the student understand most of them, how they behave, and when to use which of them.

2.
Data Abstraction and Encapsulation (part of the OOPJ, DSAL, PCCP, OOAD, DBMS and WEBP modules)
Data abstraction is the design of a user-defined data type. Encapsulation is the process wherein one combines a user-defined type?s data representation and its behaviour into one encapsulated entity that has an implementation and an interface. Encapsulation is taught in detail in the OOPJ module. Data abstraction and encapsulation are two of the most important properties of object-oriented programming. The others include inheritance and polymorphism. The OOPJ and OOAD modules together teach one to apply data abstraction and encapsulation irrespective of the language and the programming model.

3.
Database Organisation (part of DBMS module)
Managing a large numbers of objects is an important component of many applications. Traditional database technology defines three basic models: hierarchical, network, and relational databases. Most contemporary database projects use some form of relational database. Sound database design involves a process called normalisation, which tries to eliminate redundancy and inefficient data paths. The DBMS module helps understand relational database design theory, which is very important to effectively design databases.

4.
Program Structure (part of OOPJ, PCCP, WEBP, GUID, OOAD, SENG, SCOT and DBMS modules)
One fundamental principle, which embodies the disciplines of both structured and object-oriented programming, originated with the concept of modular programming: the design of small, functionally strong, loosely coupled program modules. Virtually all of the modules lay strong emphasis on understanding program structure.

5.
Algorithms (part of all modules)
All the modules, and OOPJ in particular, ensure that the student learns the fundamental algorithms for processing data; understands recursion, its behaviour and application; knows how to sort and search data structures; understands well known algorithms like quicksort, bubble sort, binary search, expression evaluation, and structured query languages (SQL, for example). The discussion also includes how and when to optimise code.

6.
Debugging (part of all modules)
Writing the program is only the beginning. After that, one has to get it running, which means debugging written code. A good programmer knows how to debug a program. It is something that can be learned only with experience. Debugging is the act of finding bugs and fixing them. Fixing a bug is not usually as difficult as finding it. Every program of any consequence is most likely to have bugs. All modules require the student to design and implement reasonably complex programs and demonstrate their proper working. In particular, the machine-graded programming tests, assignments and projects all ensure that the participant carries out ample debugging exercises.

7.
User Interfaces and Requirements (part of GUID, WEBP, SCOT and also through project work in different modules)
Most contemporary programming assignments involve the user interface, which is the command and data entry architecture that a user uses to run and interact with the program. A major part of any interactive program is the user interface. Separating the design of the problem domain algorithms from that of the user interface is important. The other important point emphasised is the need for clear and unambiguous understanding of the user's requirements for the program. Both kinds of requirements, functional and performance, are to be addressed in project work.

8.
Computer Organisation, Operating Systems & Networking (COOS, CNET and WEBP modules)
Students need to understand the hardware, not necessarily at the electronic level, but in terms such as its memory components, cache, processor speeds, peripherals and networking components. Operating system concepts are also important, including the difference between pre-emptive and non-pre-emptive scheduling, and concepts like multitasking and concurrency.

9.
Personal Skill Development (all modules)
Problem solving, knowledge application, self-study, teamwork, presentation and documentation skills are also given importance in the educational programme. Regular on-line tests, assignments and quizzes ensure problem solving and knowledge application skills. By its very nature the programme expects considerable amount of time to be spent by the student in studying the textbooks and doing hands-on practice sessions on the computer. Projects are executed by groups of three or four students working as a team. The ability to present their work through demonstrations, viva-voce and written reports is also part of the evaluation mechanism.