Project based learning (PBL) provides students with thorough practical exposure to real-world problems. Through PBL, students learn to organize their projects, collaborate in groups, and manage their time effectively to achieve successful outcomes.
Philosophical Foundation of Project Work
"An idea that is developed and put into action is more important than idea that exists only as an idea."
— Gautam Buddha
Project based learning systematically guides students through the following core computational and analytical phases:
The methodology chosen for project development plays a critical role in its execution. Common software engineering paradigms applied in project-based learning include:
Complex real-world tasks require collective efforts. Teamwork is defined as a collaborative effort made by individuals to accomplish a common goal.
A successful project team relies on several non-technical interpersonal components alongside technical proficiency:
The curriculum outlines four sample projects designed to be implemented using Python, Pandas , and Matplotlib .
Description: An online shopping platform featuring two broad categories (Men, Women) and three sub-categories (Clothing, Footwear, Accessories). It supports promotional events like Festive Sales and End of Season Sales, and tracks monthly revenue, category-wise sales, and promotional discounts.
Specifications:
Description: Automating the operations of a Bookworm Club donation camp that collects, assesses, refurbishes, and resells books and notebooks.
Specifications:
Description: A data-driven study analyzing the impact of social media usage on the mental health and behavior of teenagers.
Specifications:
Description: Analyzing census data from the Open Government Data (OGD) Platform India ( data.gov.in ). The dataset used is "Special Tabulation on Adolescent and youth population classified by various parameters for India, States and Union Territories, 2011".
Dataset Profile: Census Special Tabulation (2011)
Selected Column Descriptions:
| Column Name | Description |
|---|---|
| State | Serial numbers assigned to states |
| Area Name | Name of the states and union territories |
| Total/Rural/Urban | Segmented geographic area type |
| Adolescent and youth | Data categorized by age groups |
| Total Male / Total Female | Gender-wise population counts |
| SC-M / SC-F | Scheduled Castes male and female counts |
| ST-M / ST-F | Scheduled Tribes male and female counts |
| Literates-M / Literates-F | Literate male and female counts |
| Illiterates-M / Illiterates-F | Illiterate male and female counts |
| MainWorker-M / MainWorker-F | Main worker male and female counts |
| MarginalWorker-M / MarginalWorker-F | Marginal worker male and female counts |
Task 1: What is the total population, total male population, and total female population aged 10 to 24 in India?
The following step-by-step implementation demonstrates how to load, filter, aggregate, and plot the dataset using Python Pandas and Matplotlib .
Step 0: Import required libraries
import pandas as pd
import matplotlib.pyplot as plt
Step 1: Read the CSV file into a DataFrame
# Load the downloaded dataset
data = pd.read_csv("PCA_AY_2011_Revised.csv")
df = pd.DataFrame(data)
Step 2: Check the shape of the DataFrame
print(df.shape)
# Output: (12168, 123)
Step 3: Display the columns
print(df.columns.values)
# Displays the list of 123 columns including 'Area Name', 'Total/ Rural/ Urban', etc.
Step 4: Filter Data
We identify the columns needed for plotting: 'Area Name' , 'Total/Rural/Urban' , 'Adolescent and youth categories' , and 'Total Population - Persons' .
Step 5: Create a new DataFrame containing the filtered data
# Filter rows where Area Name is 'INDIA'
df1 = df.loc[(df['Area Name'] == 'INDIA'), 'Area Name':'Total Population - Females']
Step 6: Rename columns for ease of use
df1.columns = ['Area', 'Class', 'Category', 'TotalPop', 'MalePop', 'FemalePop']
Step 7: Group and clean data as per requirement
The Category column contains six distinct groups: '10-14', '15-19', '20-24', 'Adolescent (10-19)', 'All Ages', and 'Youth (15-24)'. We group by Category, sum the values, and drop the aggregate categories to isolate the 5-year age brackets.
# Group by Category and sum
d = df1.groupby('Category').sum()
# Drop unwanted aggregate rows
d = d.drop(['Adolescent (10-19)', 'All Ages', 'Youth (15-24)'], axis=0)
print(d)
Resulting Cleaned DataFrame:
| Category | TotalPop | MalePop | FemalePop |
|---|---|---|---|
| 10-14 | 265,418,424 | 138,837,670 | 126,580,754 |
| 15-19 | 241,052,898 | 127,964,792 | 113,088,106 |
| 20-24 | 222,848,444 | 115,169,386 | 107,679,058 |
Step 8: Plot the data as a bar chart
# Generate the bar chart
d.plot(kind='bar')
plt.title("Population in Different Categories (Ages 10-24)")
plt.ylabel("Population (in hundreds of millions)")
plt.show()