Chapter 07 Project Based Learning
“An idea that is developed and put into action is more important than idea that exists only as an idea.”
— Gautam Buddha
7.1 Introduction
Project based learning gives a thorough practical exposure to students regarding a problem upon which the project is based. Through project based learning, students learn to organise their project and use their time effectively for successful completion of the project. Projects are developed generally in groups where students can learn various skills such as working together, problem solving, decision making, and investigating activities. Project based learning involves the steps such as analysing the problem, formulating the problem into small modules, applying the mechanism or method to solve each module and then integrating the solution of all the modules to arrive at the complete solution of the problem. To solve a problem it is required that those who work on it gather the relevant data and process it by applying a particular method. Data may be collected as per the requirement of the project in a particular format. All the team members should associate themselves to accomplish the task. After collecting the data, it should be processed to solve the problem. The results should be reported in a predetermined format.
7.2 Approaches for Solving Projects
The approach followed for the development and completion of a project plays a pivotal role in projectbased learning. There are several approaches to execute a project such as modular approach, top down approach and bottom up approach. A structured or a modular approach to a project means that a project is divided into various manageable modules, and each of the modules has a well-defined task to be performed with a set of inputs. This would lead to a set of outputs which when integrated leads to the desired outcome.
Different steps involved in Project Based Learning (Figure 7.1) are:
(1) Identification of a project: The project idea may come through any real life situation. For example, one could think of doing a project for organising a seminar. One needs to understand the usefulness of the project and its impact. Students must be encouraged to undertake interdisciplinary projects.
(2) Defining a plan: Normally for any kind of project, there are several project members involved in it. One project leader has to be identified. The roles of project leader and each project member have to be clearly defined. Students who are performing a project must be assigned with specific activities. The various tools for executing these activities must be known. To obtain a better solution, one should always think of the extreme situations.
(3) Fixing of a time frame and processing: Every project is a time relevance project. A student must understand the importance of time frame for completion of the project. All the activities which are performed in the projects require a certain amount of time. Every project must be well structured and at the same time it must be flexible in its time frame.
Figure 7.1: Steps in project based learning
(4) Providing guidance and monitoring a project: Many times, the participants in the project get stuck up with a particular process and it becomes impossible to proceed further. In such a case, they need guidance, which can be obtained from various resources such as books, websites and experts in the field. While it is essential that the project leader should ensure monitoring of the project, the guide teacher also helps in monitoring the project.
(5) Outcome of a project: One needs to understand thoroughly the outcome of a project. The outcome can be single, or it can be multiple. The output of a project can be peer reviewed and can be modified as per the feedback from the guide teacher or other users.
7.3 Teamwork
Many real life tasks are very complex and require a lot of individuals to contribute in achieving them. An effort made collectively by individuals to accomplish a task is called teamwork.
For example, in many sports, there is a team of players. These players play together to win a match. Take an example of a cricket team. We find that even if a bowler bowls a good ball, but if the fielder cannot take a catch then a wicket cannot be taken. So, in order to take a catch, efforts of a bowler as well as of the fielders are needed. To win a cricket match, contributions from all the team members in all the three areas - batting, bowling and fielding are required.
7.3.1 Components of Teamwork
Apart from technical proficiency, a wide variety of other components make a successful teamwork. It comprises skilled team members with specific roles to achieve the goal.
(A) Communicate with Others
When a group of individuals perform one job, it is necessary to have effective communication between the members of the team. Such communication can be done via e-mails, telephones, or by arranging group meetings. This helps the team members to understand each other and sort out their problems to achieve the goal effectively.
(B) Listen to Others
It is necessary to understand the ideas of others while executing a job together. This can be achieved when the team members listen to each other in group meetings, and follow steps that are agreed upon.
(C) Share with Others
Ideas, images and tools need to be shared with each other in order to perform a job. Sharing is an important component of teamwork. Any member of the team who is well versed in a certain area should share the expertise and experience with others to effectively achieve the goal within the time frame.
(D) Respect for Others
Every member of the team must be treated respectfully. All the thoughts and ideas that are put forth in the group meetings may be respected and duly considered. Not respecting the views of a particular member may cause problems and that particular team member may not give his best.
(E) <L3>Help Others
A helping hand from every member is a key to success. Sometimes, help from people who are not a part of the team is also obtained in order to accomplish a job.
(F) Participate
All the team members must be encouraged by each other to participate in completing the project and also in discussions in group meetings. Also, every member should take an active participation so that they feel their importance in the team.
7.4 Project Descriptions
In this section, some examples of project works are given, which can be taken up in groups under project based learning. However, a group may choose any other project in consultation with the guide teacher.
7.4.1 Project I : Online Shopping Platform
Description
Murugan plans to launch an online shopping platform’APPAREL EASY’. He plans to have two broad categories of merchandise-Men, Women. Under both the categories- Clothing, Footwear and Accessories will be the sub-categories. Also, on his shopping platform, he is planning to launch two mega events- Festive Sale (a month before Diwali to Christmas), End of Season Sale (February and August). Murugan also wants to keep a record of his monthly revenue generation sales and category wise sales, with special focus on mega events. A record should also be kept on discounts being offered by the manufacturers, payment sites or any discount offered as a promotional campaign by the APPAREL EASY portal.
Specification
The details of the Men and Women apparels should be stored in a data file with fields as Apparel Code, Name, Category, Size, Price, Customer Name, Payment Mode, Discount Code, etc.
If the Category is Men, then apparels can be Men’s Trousers, Men’s Shirt, Men’s Jeans, Men’s T-shirt. If the Category is Women, then the apparels can be Skirts, Top, Pants, Jeans, Kurta, etc.
If the Payment Mode is Credit or Debit Card, then the Credit card number, name, CVV and validity should be entered.
If the Payment Mode is Cash on Delivery(COD), then no details to be asked.
Randomly select the merchandise to be put on sale. The selected merchandise should not be more than 70 per cent of the total merchandise.
The discount code can be either FEST (for Festive) or EOS (for End of Season). The discounts for FEST will be 10 per cent and for EOS will be 15 per cent.
You need to visualise the data structure, keeping all the requirements of Murugan in mind, and then implement it using Python Pandas. Thereafter, you need to design a software to store details of the merchandise to put them online for sale. At the same time, records of customers visiting the e-commerce site and the number of customers placing the order also have to be maintained. The data collected should be plotted appropriately to help Murugan make decisions for future marketing and promotion strategies.
7.4.2 Project II: Automating a Books Donation Camp
Description
Realising the importance of Reduce, Reuse and Recycle, the Bookworm club every year organises a Book Donation Camp. The Book Donation camp collects books and notebooks. The volunteers assess the condition of the books and categorise them as Fit, Needs mending, or Unfit. The unfit books’ pages are used to create paper bags and envelopes. The other categories of books are resold at half the price. They accept notebooks that have pages left in them. The pages are torn from the notebooks, and are attractively bound to create a new notebook and sold. They create a variety of recycled objects and sell them. They want to create a software for this purpose and store details about the camp. To be able to efficiently store, retrieve and visualise data, they need to implement the following using Pandas.
Specification
The details of collections are stored in a CSV file with column headings as Item category, Item ID, Item name, Item type, Condition.
If the Item Category is Book, then the Item Type can be either Academic or Non Academic, and Item Id shall be prefixed with a ’ $B$ ‘. In case of Academic, class shall be entered.
If the Item Category is Notebook then the Item can be Single line, Four Line, Five Line, and Item Id shall be prefixed with an ’ $\mathrm{N}$ ‘.
Condition can only be Fit, Needs Mending or Unfit. After the items are refurbished, the data are stored in another CSV file containing the following column headings: Item id, Item name, Item Category, Quantity, Price. Item Category can be Paper bags, Notebook, Books. In case of books Class is also to be entered.
Another CSV file to store orders is created that stores Item Category, Item name, Quantity and Price. In case of an order, the refurbished CSV shall update the quantity.
To ensure effective decision making, it is required that different data are plotted using appropriate plots to show sales, items refurbished, and items collected.
7.4.3 Project III: A survey of the effect of social networking sites on behaviour of teenagers
Description
With the Internet revolution everyone today is now connected. Teenagersspend a good amount of time on social networking sites, and it plays a vital role in their behaviour. It is considered that excessive use of social networking sites has sometimes a serious impact on the mental health of individuals. A well-crafted survey questionnaire can help in exploring and finding many facts.
Specifications
- Create a survey questionnaire using any of the freely available online tools (such as google forms) and store the responses in a CSV file.
- Prepare some data analysis questions that you expect them to answer
- Import the CSV file in Pandas DataFrame
- Perform statistical computation such as mean, median, etc., with respect to the identified questions
- Visualise the findings of the survey using appropriate charts.
7.4.4 Project IV: Utilising an open data source to use a national, state or district level Dataset
Description
Open Government Data (OGD) Platform India www. data.gov.in is a platform for supporting open data initiative of Government of India. From this platform, let us consider the dataset “Special Tabulation on Adolescent and youth population classified by various parameters for India, States and Union Territories, 2011”. The dataset was contributed by the Ministry of Home Affairs, Government of India, and released under National Data Sharing and Accessibility Policy (NDSAP). The dataset was published on portal on 07/09/2015.
Statistics of the Data Set:
Number of rows: 12168
Number of columns: 123
Descriptions of some of the columns are given below:
State: Serial numbers given to states
Area Name: Name of the states and union territories
Total/Rural/Urban: Data about the total, rural or urban areas of a state or UT.
Adolescent and youth: Data for different age groups
Total Male: Total number of males
Total Female: Total number of females
SC-M : Total number of males of Scheduled Castes(SC)
SC-F: Total number of females of Scheduled Castes(SC)
ST-M: total number of males of Scheduled Tribes(ST)
ST-F: total number of females of Scheduled Tribes(ST)
Literates-M: total number of literate males
Literates-F: total number of literate females
LiteratesSC-M: total number of literate males of Scheduled Castes(SC)
LiteratesSC-F: total number of literate females of Scheduled Castes(SC)
LiteratesST-M: total number of literate males of Scheduled Tribes(ST)
LiteratesST-F: total number of literate females of Scheduled Tribes(ST)
Illiterates- M : total number of illiterate males
Illiterates-F: total number of illiterate females
Illiterates SC-M : total number of illiterate males of Scheduled Castes(SC)
Illiterates SC-F: total number of illiterate females of Scheduled Castes(SC)
Illiterates ST-M: total number of illiterate males of Scheduled Tribes(ST)
Illiterates ST-F: total number of illiterate females of Scheduled Tribes(ST)
MainWorker-M:total number of main worker males
MainWorker-F:total number of main worker females
MainWorker SC-M: total number of main worker males of Scheduled Castes(SC)
MainWorker SC-F: total number of main worker females of Scheduled Castes(SC)
MainWorker ST-M: total number of main worker males of Scheduled Tribes(ST)
MainWorker ST-F: total number of main worker females of Scheduled Tribes(ST)
MarginalWorker-M: total number of marginal worker males
MarginalWorker-F: total number of marginal worker females
MarginalWorker SC-M: total number of marginal worker males of Scheduled Castes(SC)
MarginalWorker SC-F: total number of marginal worker females of Scheduled Castes(SC)
MarginalWorker ST-M: total number of marginal worker males of Scheduled Tribes(ST)
MarginalWorker ST-F: total number of marginal worker females of Scheduled Tribes(ST)
Specifications
On such a large dataset, various types of questions can be answered by doing different analysis of data. Following is a list of some of the possible queries that can be answered by analysing the dataset:
-
What is the total population, total male population and total female population aged 10 to 24 in India?
-
Which State or Union Territory in India has the maximum number of illiterates in the youth ages?
-
What is the percentage of people working as a marginal worker?
-
List the top 5 states or union territories which have the maximum population working as a marginal worker.
-
Compare the sex ratio of urban areas and rural areas using appropriate graph.
-
Which state has the highest and the lowest percentage of literate Scheduled Tribes and Scheduled Castes?
-
For each state, compare the no. of female marginal workers with no. of male marginal workers. Use appropriate graphs.
-
What percentage of Scheduled Tribes lives in urban areas? Draw a pie chart showing the proportion of literate and illiterates scheduled tribes living in urban areas.
-
What is the state wise ratio of literates vs. illiterates in all age groups?
-
Which state is home to the maximum no. of ST in India? Which state has the minimum no. of ST in India?
-
For each state, find the no. of literate females and no. of literate males. Draw a bar graph for the same. Which state has the highest ratio of literate female vs literate male and which state has the minimum?
A project work can be carried out by taking any 4-5 of the above questions and any other similar questions, and solving them step-by-step, with detailed explanation and documentation. As an example, in the following pages, we will solve the first question. This will give us an idea about how the other questions are to be answered.
Task 1: What is the total population, total male population and total female population aged 10 to 24 in India?
Solution:
Prerequisite: we need to first download the CSV file through the QR code given at the beginning of this chapter.
Step 1: Read the CSV file in a DataFrame
Step 2: Check the shape of the DataFrame
Step 3: View the columns
Step 4: Filter data
$\quad$ a. Identify the columns that you wants to use for plotting
$\quad$ b. Identify the number of rows required for plotting
Step 5: Create a new DataFrame containing the filtered data
Step 6: Rename the columns for ease of use
Step 7: Group data as per the requirement
Step 8: Plot data as a barchart for the DataFrame obtained in Step 7.
Let us now write the code for the above identified steps:
Step O: Import required libraries.
$\qquad \quad$ import pandas as pd
$\qquad \quad$ importmatplotlib.pyplot as plt
Step 1: Read the CSV file in a DataFrame.
$\quad$ # Add path to the CSV file in your computer
$\quad$ data=pd.read_csv(“PCA_AY_2011_Revised.csv”)
$\quad$ df=pd. DataFrame (data)
Step 2: Check shape of the DataFrame.
print (df.shape)
We get the output showing the dataset contains 12168 rows and 123 columns.
Step 3: Display the columns.
print (df.columns.values)
A part of the output produced for the 123 columns is shown below:
$\quad$ [‘Table No.’ ‘State Code’ ‘District Code’ ‘Area Name’
$\quad$ ‘Total/ Rural/ Urban’ ‘Adolescent and youth categories’
$\quad$ ‘Total Population - Persons’ ‘Total Population - Males’
$\quad$ ‘Total Population - Females’ ‘Scheduled Caste - Persons’
$\quad$ ‘Scheduled Caste - Males’ ‘Scheduled Caste - Females’
$\quad$ ‘Scheduled Tribe Marginal Worker - Household Industry - Males’
$\quad$ ‘Scheduled Tribe Marginal Worker - Household Industry - Females’
$\quad$ ‘Scheduled Tribe Marginal Worker - other Workers - Persons’
$\quad$ ‘Scheduled Tribe Marginal Worker - other Workers - Males’
$\quad$ ‘Scheduled Tribe Marginal Worker - other Workers - Females’]
Step 4: Filter Data.
a. Identify the columns that you want to use for plotting.
For our analysis, we will consider only the columns ‘Area Name’; ‘Total/Rural/Urban’, ‘Adolescent and youth categories’, and ‘Total Population - Persons’ .
b. Identify the number of rows required for plotting.
In order to decide the number of rows, we needs to check the values in the column ‘Area Name
print (df[‘Area Name’]
The following is the output:
0 $\qquad$ INDIA
1 $\qquad$ INDIA
2 $\qquad$ INDIA
3 $\qquad$ INDIA
4 $\qquad$ INDIA
12163 $\quad$ District - South Andaman ….. $(03)$
12164 $\quad$ District - South Andaman ….. $(03)$
12165 $\quad$ District - South Andaman ….. $(03)$
12166 $\quad$ District - South Andaman ….. $(03)$
12167 $\quad$ District - South Andaman ….. (03)
Name: Area Name, Length: 12168, dtype: object
Step 5: Create a new DataFrame containing the filtered data.
Suppose, we want to consider data for ‘Area Name’ = ‘INDIA’ only, Therefore, we shall create a new DataFrame df1 containing only the filtered data, using the following syntax:
$\quad$ df.loc[row selection, column selection]
$\quad$ df1=df.loc[(df[‘Area Name’] == ‘INDIA’),
$\quad$ ‘Area Name’:‘Total Population - Females’]
In the above statement, df [‘Area Name’] is used to select the required rows. We apply slicing on column labels to select the columns starting from ‘Area Name’ till ‘Total Population - Females’
Step 6: The names of the columns in the DataFrame are too long. The following statement can be used to rename the columns.
$\quad$ df1.columns = [‘Area’, ‘Class’, ‘Category’,
$\quad$ ‘TotalPop’, ‘MalePop’, ‘FemalePop’]
Step 7: Group data as per the requirement.
We decided to plot TotalPop, MalePop, FemalePopwith respect to Category. But, on inspecting the DataFrame df 1 we have noticed that the Category column contains data under six different categories - ‘10-14’, ‘15-19’, ‘20-24’, ‘Adolescent (10-19)’, ‘All Ages’, ‘Youth (15-24)’. print(df1)
Area | Class | Category | TotalPop | MalePop | FemalePop | |
---|---|---|---|---|---|---|
0 | INDIA | Total | All Ages | 1210854977 | 623270258 | 587584719 |
1 | INDIA | Total | 10-14 | 132709212 | 69418835 | 63290377 |
2 | INDIA | Total | 15-19 | 120526449 | 63982396 | 56544053 |
3 | INDIA | Total | 20-24 | 111424222 | 57584693 | 53839529 |
4 | INDIA | Total | Adolescent (10-19) | 253235661 | 133401231 | 119834430 |
5 | INDIA | Total | Youth (15-24) | 231950671 | 121567089 | 110383582 |
6 | INDIA | Rural | All Ages | 833748852 | 427781058 | 405967794 |
7 | INDIA | Rural | 10-14 | 96804494 | 50488158 | 46316336 |
8 | INDIA | Rural | 15-19 | 83902472 | 44570557 | 39331915 |
9 | INDIA | Rural | 20-24 | 73835046 | 38138662 | 35696384 |
10 | INDIA | Rural | Adolescent (10-19) | 180706966 | 95058715 | 85648251 |
11 | INDIA | Rural | Youth (15-24) | 157737518 | 82709219 | 75028299 |
12 | INDIA | Urban | All Ages | 377106125 | 195489200 | 181616925 |
13 | INDIA | Urban | 10-14 | 35904718 | 18930677 | 16974041 |
14 | INDIA | Urban | 15-19 | 36623977 | 19411839 | 17212138 |
15 | INDIA | Urban | 20-24 | 37589176 | 19446031 | 18143145 |
16 | INDIA | Urban | Adolescent (10-19) | 72528695 | 38342516 | 34186179 |
17 | INDIA | Urban | Youth (15-24) | 74213153 | 38857870 | 35355283 |
Therefore, to plot TotalPop, MalePop, FemalePop, we should do grouping of these six categories and find the sum for each type of population. This will help to provide a complete picture. The GROUP BY() function when applied on the column ‘Category’ on our DataFrame $\mathrm{df} 1$, gives us the following result:
$\quad$ d = df1.GROUP BY(‘Category’).sum()
$\quad$ TotalPopMalePopFemalePop
Category | |||
---|---|---|---|
10-14 | 265418424 | 138837670 | 126580754 |
15-19 | 241052898 | 127964792 | 113088106 |
20-24 | 222848444 | 115169386 | 107679058 |
Adolescent (10-19) | 506471322 | 266802462 | 239668860 |
All Ages | 2421709954 | 1246540516 | 1175169438 |
Youth (15-24) | 463901342 | 243134178 | 220767164 |
We are interested only in the categories ‘10-14’, ‘1519 ’ and ’ $20-24$ ‘. So, let us drop the remaining rows using the following Python statement:
Category | |||
---|---|---|---|
10-14 | 265418424 | 138837670 | 126580754 |
15-19 | 241052898 | 127964792 | 113088106 |
20-24 | 222848444 | 115169386 | 107679058 |
Step 8: Plot the data as a barchart for the DataFrame obtained in Step 7.
$\quad$ d. plot (kind=‘bar ‘)
$\quad$ plt. show( )
The barchart shown at Figure 7.2 is produced as the output. The value (1e8) marked at the top is offset that is being displayed for the y axes which corresponds to scientific notation which is used for numbers outside a specified range.
Figure 7.2: Barchart showing population in different categories