Informatics Practices: Class 12 — Chapter 7: Project Based Learning

7.1 Introduction to Project Based Learning

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:

7.2 Approaches for Solving Projects

The methodology chosen for project development plays a critical role in its execution. Common software engineering paradigms applied in project-based learning include:

Key Steps in Project Based Learning
  1. Identification of a project: Recognizing real-life situations or interdisciplinary problems that can be solved computationally.
  2. Defining a plan: Identifying team members, assigning a project leader, defining specific roles, and selecting appropriate development tools.
  3. Fixing a time frame and processing: Establishing a structured yet flexible timeline for completing various project milestones.
  4. Providing guidance and monitoring: Utilizing resources such as books, websites, and mentor feedback to resolve technical bottlenecks.
  5. Outcome of a project: Generating single or multiple deliverables, which are peer-reviewed and refined based on user feedback.
7.3 Teamwork in Project Development

Complex real-world tasks require collective efforts. Teamwork is defined as a collaborative effort made by individuals to accomplish a common goal.

7.3.1 Components of Teamwork

A successful project team relies on several non-technical interpersonal components alongside technical proficiency:

  • (A) Communicate with Others: Maintaining clear, active communication channels via emails, phone calls, or group meetings to resolve issues and align goals.
  • (B) Listen to Others: Understanding and respecting team members' ideas during group discussions to reach a consensus.
  • (C) Share with Others: Distributing ideas, tools, and domain expertise to ensure the project is completed within the designated timeframe.
  • (D) Respect for Others: Treating every team member respectfully and valuing their contributions to maintain high morale.
  • (E) Help Others: Offering assistance within the team and seeking external expert guidance when necessary.
  • (F) Participate: Encouraging active involvement from all members in both technical tasks and group discussions.
7.4 Project Descriptions & Specifications

The curriculum outlines four sample projects designed to be implemented using Python, Pandas , and Matplotlib .

7.4.1 Project I: Online Shopping Platform (APPAREL EASY)

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:

  • Data storage: CSV/Data file containing fields: Apparel Code , Name , Category , Size , Price , Customer Name , Payment Mode , Discount Code .
  • Payment validation: If payment is by Card, collect card number, name, CVV, and validity. If Cash on Delivery (COD), bypass details.
  • Discount logic: FEST (10% discount) and EOS (15% discount).
  • Implementation: Model data structures using Pandas and plot sales trends for decision-making.
7.4.2 Project II: Automating a Books Donation Camp

Description: Automating the operations of a Bookworm Club donation camp that collects, assesses, refurbishes, and resells books and notebooks.

Specifications:

  • Initial collection file: CSV with columns Item category , Item ID , Item name , Item type , Condition .
  • ID Prefixing: Books prefixed with 'B' (Academic/Non-Academic); Notebooks prefixed with 'N' (Single/Four/Five line).
  • Condition categories: Fit , Needs Mending , or Unfit .
  • Refurbished inventory file: CSV with columns Item id , Item name , Item Category , Quantity , Price .
  • Order processing: Update quantities in the refurbished CSV when orders are placed. Plot sales and collection metrics.
7.4.3 Project III: Survey on the Effect of Social Networking Sites on Teenagers

Description: A data-driven study analyzing the impact of social media usage on the mental health and behavior of teenagers.

Specifications:

  1. Design a survey questionnaire using online tools (e.g., Google Forms) and export responses to a CSV file.
  2. Formulate analytical questions to extract insights from the survey data.
  3. Import the CSV file into a Pandas DataFrame .
  4. Perform statistical computations (e.g., mean() , median() ).
  5. Visualize findings using appropriate charts (bar, pie, line).
7.4.4 Project IV: Utilizing an Open Data Source (National/State/District Dataset)

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)

  • Number of Rows: 12,168
  • Number of Columns: 123
  • Data Source: Ministry of Home Affairs, Government of India
  • Policy Framework: Released under National Data Sharing and Accessibility Policy (NDSAP)

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
7.5 Step-by-Step Implementation Walkthrough (Task 1)

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-by-Step Code Implementation

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()