Structured Approach of Designing Data Structure and Algorithms Laboratory Experiments

Data structures and algorithms play amajor role in optimizing any non trivial software application. Learning and applying concepts of this course demands a great amount of analytical and logical thinking skills. Teaching this subject at early stages of Information Technology related engineering courses poses a great challenge to the Course Instructors. In this paper, we presented the experience of using structured approach of designing and assessing Data Structures and Algorithms Laboratory experiments. All our laboratory experiments and assignments are well designed and structured to achieve the desired ABET a-k learning outcome elements set for the course. Our experimental case study examples, structured enquiry based experiments and student's feedback results prove the effectiveness of designing and adopting structured experiments in the laboratory course.


I. Introduction
-Data structures and algorithms play a major role in optimizing any non trivial software application.Learning and applying concepts of this course demands a great amount of analytical and logical thinking skills.Teaching this subject at early stages of Information Technology related engineering courses poses a great challenge to the Course Instructors.In this paper, we presented the experience of using structured approach of designing and assessing Data Structures and Algorithms Laboratory experiments.All our laboratory experiments and assignments are well designed and structured to achieve the desired ABET a-k learning outcome elements set for the course.
Our experimental case study examples, structured enquiry based experiments and student's feedback results prove the effectiveness of designing and adopting structured experiments in the laboratory course.
-ABET a-k Criteria, Bloom's Taxonomy; Bridge Course; Program outcomes;Performance Indicators; Data Structures and Algorithm (DSA) is "Hard core" of Computer Science and Engineering fields.Time and space efficiency of any non trial software application can be optimized by applying appropriate data structures and algorithms.In most of the universities this subject is taught at early stages of the engineering course.Learning and applying such complex concepts at the early stages of engineering course to a software application requires a great deal of logical and analytical thinking skills.
The main objective of this course is to identify and apply suitable data structures and algorithms [14] [15].Also students may need to make time and space complexity analysis by comparing it with other possible data structures and algorithms.In order to achieve effective learning of this course and meet desired learning outcomes, first time we have made an attempt to design our data structures and algorithms laboratory experiments according to increasing levels of complexity of the problem.Before the commencement of semester's laboratory term work, we conducted a "Bridge Course on C programming" to review basic concepts and enhance students C programming skills.
Figure 1 shows results of the test conducted before the start and after completion of bridge course.In order to analyze cognitive levels of the students, questions were framed according to the Bloom's Taxonomy [1][2][3] learning levels.Surprisingly, analysis of graphs realized the fact that 80% of students were capable of solving L1 and L2 level questions.But more than 70% students failed to solve questions related to L3 category questions.
The major reason for this performance of students was lack of analytical and logical skills.To overcome the major lacuna, we designed all our laboratory experiments and structured enquiry assignments in increasing complexity levels by mapping with ABET a-k learning outcomes of the course.Benefits of adopting such a structured designed based approach are 1) Students can learn highly complex concepts in incremental complexity order 2) Helps course Instructor to identify intellectual levels at which individual students are capable of learning.3) Develops high level thinking skills.
In the previous work [5] Sujatha, C et. al. have experimented an innovative approach of teaching data structures and algorithms subject first time on post graduate students and applied concepts of DSA for solving real world problems.Sarwar, S.M et.al. [6] have adopted an approach of comparing results of the laboratory experiments with data structure's behavior.
In the paper by Lingfen Wang et al [7] Multilevel teaching methodology is adopted for effective teaching software engineering related courses by taking data structures and algorithms as case study.In many of the papers [8][9] algorithms related courses are taught by using visualization tools.In [10] [11], redesigning and assessing of engineering program courses using ABET (Accreditation Board for Engineering and Technology) criteria [12] [13].In this paper we designed and assessed DSA laboratory course according to the program outcomes of ABET criteria.
The rest of the paper is organized as follows.Next section describes teaching methodology.In section 3, we discuss Bloom's taxonomy based laboratory experiment design.Section 4 describes the assessment methods followed in the course.In final sections, Results are demonstrated followed by conclusion and future scope.
The main course objective is to identify and apply suitable data structures and algorithms.In order to achieve effective learning of the course, we designed our data structures and algorithms laboratory experiments according to increasing order of complexity level by considering Bloom's taxonomy.The lab slot was designed for practicing programs on arrays operating and enhancing knowledge on arrays and pointers.Task 1 is for recalling relevant knowledge addressing L1 level of Bloom's taxonomy and program outcomes "a" and "g".Task 2 emphasizes on programming skills addressing L2 and program outcome "a".This task is designed to build program debugging skills and enhancing it.Students are used to program in a traditional way wherein they make errors and debug it using trail and error methods but Question: Charlie and the Chocolate Factory Objective: Usage of linked lists Scenario: Charlie, the new owner of chocolate factory after returning from 'Oompa-loompa' land has got a new recipe of making chocolates.Well, the old recipe was robbed out by a few workers and the chocolate factory had to shut down as every cat and dog in city started making the same kind of chocolates.Charlie had to shut his factory and make an adventurous expedition in search of new recipe.
That's when he ended up in Oompa-Loompa land.The Oompa-Loompas offered him with 2 new varieties in return of their favorite chow, beans.Now, one new secret recipe is shared only with you!Here is the procedure: First you need to buy the following: 200 KitKat 10 Silk 30 Bourneville 200 Wafers 30 Lint Now you need to melt all in the same above order, one by one, whip it, grind it, bake it, freeze it and finally mould it to a dream fantasy chocolate.Your task is to do it all.Go to market buy all the chocolates required, melt them in the same order and prepare the new chocolate.Your task is: 1.First buy all the required variety of chocolates.We may not get all in the same shop.If the desired quantity is not available then we need to buy from next shop.Maintain a linked list structure: struct choc_fantasy { char choc_name[20]; int quantity; struct ch0c_fantasy * prev; struct ch0c_fantasy * next; }; You will keep on calling the function "insert_at_end" until you buy all the required chocolates in specified quantity.The required chocolates can be purchased in any order.2. Melt and prepare fantasy chocolate Now melting process has to happen exactly in the same way as said.You will search for kitkat in lined list and delete the nodes (it could be one node having 200 quantities or split up in any number of nodes).Print appropriate message after adding each ingredient.3. The print the message that "Secret Recipe Chocolate is now ready" and exit the program.
Structured enquiry was designed to emphasize on analyzing capability of students.To achieve this we framed scenario based questions addressing L4 level of Blooms taxonomy.In the above mentioned example, we have taken a movie scenario so that students get fascinated in solving them and enhanced there analyzing and applying capabilities.
Ours is an autonomous college, hear we have continuous internal evaluation (CIE) of laboratory.The allotted CIE marks are 80 and we have divided it into two parts: part A (Demonstration and Exercise) which carries 30% of CIE marks and part B (structured Enquiry) carries 50% of marks.The other 20% of marks is evaluated in Semester End Exam (SEE) as shown in Table 3.

Conclusion References
At the end of semester, student's feedback about the course conveyance was taken.The questions asked were based on the learning ability, analysis of code, debugging and programing skills.The questions asked in feedback are as listed below: 1. Learning how to choose an appropriate data structure and algorithm.2. Ability to analyze the code for any given problem statement with respect to time and space complexity.3. Capability of finding bugs in a given code and rectifying them.4. Improving problem solving ability and programing skill.
We analyzed the effectiveness of practicing structured based approach by comparing semesterend DSA laboratory exam results of the two consecutive academiceffectiveness of adopting structured based approach into our teaching years 2013-14 and 2012-13.
practices.In future, we plan to use such teaching practices for other programming related courses.
Figure 3 reveals the fact of improvement in the performance of the students in the semester end exams.More significantly, this has helped the students to understand and analyze concepts of algorithms and data structures.At the end of this course, students are in a position to identify suitable data structure and associated algorithm for any given problem specification.Further, they were able to analyze time and space complexity of the program by applying various combination of data structures and algorithms.
In this paper, we have presented structured approach of designing and conducting DSA laboratory experiments.The laboratory experiments are well structured and designed according the Bloom's taxonomy levels and ABET a-k based program outcome elements.We described the process of solving a complex problem by breaking it in increasing order of learning levels.Also we have demonstrated the process we used for assessing these outcomes using performance indicators.Our course design methodology, assessment criteria, student's feedback and semester end exam results prove the

[ 1 ]Figure 3 :
Figure2: Students feedback analysis graph Performance Indicators and the results obtained in Bridge Course, we designed the experiments for the DSA laboratory.The first 7 lab slots belong to Demonstration and Exercise types.Each slot was split into 4 parts; every part is correlated to blooms taxonomy levels ranging from L1 to L3 and program outcome of the course.An example is illustrated for clarity of the proposed method: The course learning objectives (CLO) set for our DSA laboratory are as follows i. Develop the ability to troubleshoot and rectify syntax, logical and run time errors in C programs and use industry oriented coding conventions ii.Discuss the properties, operations, applications, strengths and weaknesses of the various data structures and their effect on algorithms iii.Identify, design and implement appropriate data structures like stack, queue, hash table, tree for a given problem iv.Implement the sorting, searching and graph algorithms by incorporating suitable data structures and perform efficiency analysis v. Integrate the various features of C and data structures in efficient implementation of givenFigure1.Graph showing results of test1 and two drawn across Attainment of % and levels.