Coding for the Future: Wildlife Conservation Apps

In an era where technology and environmental conservation intersect, engaging students in real-world coding projects has never been more relevant. This comprehensive unit guide explores how Years 11-12 students can develop mobile applications that contribute to local wildlife conservation efforts, combining digital literacy with environmental stewardship.

Prerequisites and Required Knowledge

Before beginning this unit, students should have:

  • Basic understanding of a programming language (Python or Java recommended)
  • Familiarity with basic data structures (arrays, objects)
  • Understanding of simple database concepts (tables, relationships)
  • Basic knowledge of HTML and CSS

If students don’t have these prerequisites, consider spending 2-3 weeks covering:

  1. Basic programming concepts (variables, loops, functions)
  2. Introduction to object-oriented programming
  3. Database fundamentals
  4. Basic web technologies

Learning Objectives

By the end of this unit, students will be able to:

  • Design and develop a functional mobile application using industry-standard development tools
  • Apply database design principles to create systems for wildlife data collection
  • Implement user interface design best practices for scientific applications
  • Integrate conservation science principles into technology solutions
  • Collaborate with local conservation groups to address real environmental challenges

Project Overview

This term-length unit guides students through creating a mobile application that helps track and monitor local wildlife. The project combines coding fundamentals, database design, user experience principles, and conservation science into a meaningful STEM learning experience.

Required Resources

Hardware:

  • Computers/laptops with internet access (1 per student or pair)
  • Mobile devices for testing (minimum 1 per 4 students)
  • Optional: Wildlife cameras or sensors

Software:

  • MIT App Inventor or Android Studio (free)
  • SQLite Browser (free)
  • Git for version control (free)
  • Text editor (VS Code recommended, free)

Additional Materials:

  • Local wildlife guides and identification resources
  • Access to local conservation data
  • Field notebooks for planning and documentation

Unit Structure

Week 1-2: Foundation and Planning

Understanding the Problem Space

  1. Local Wildlife Assessment
    1. Partner with local conservation groups
      • Contact local wildlife organizations
      • Schedule guest speaker sessions
      • Arrange field visits if possible
    2. Identify target species for monitoring
      • Research local endangered species
      • Document species characteristics
      • Create species profiles with images
    3. Research existing monitoring methods
      • Review current tracking techniques
      • Identify gaps in current methods
      • Analyse existing apps and tools
    4. Document current challenges and gaps
      • Create problem statements
      • Define success metrics
      • Outline potential solutions
  2. Requirements Gathering
    1. Interview local rangers or conservationists
      • Prepare interview questions
      • Document current processes
      • Identify pain points
    2. Define core app functionality
      • Create feature list
      • Prioritize requirements
      • Define MVP features
    3. Create user personas
      • Identify primary users
      • Document user needs
      • Create user stories
    4. Establish success criteria
      • Define measurable outcomes
      • Create evaluation metrics
      • Set project milestones

Technical Setup

1. Development Environment Setup Guide
a. Install required software

    # Install Git
    # Windows: Download from git-scm.com
    # Mac: brew install git
    # Linux: sudo apt-get install git
    
    # Install Node.js (if using React Native)
    # Download from nodejs.org
    
    # Install Android Studio
    # Download from developer.android.com/studio

    b. Configure development tools

    # Configure Git
    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"
    
    # Initialize project
    git init

    c. Set up version control

    # Create new repository
    mkdir wildlife-app
    cd wildlife-app
    git init
    
    # Create initial structure
    mkdir src
    mkdir docs
    mkdir tests
    

    d. Test basic functionality

    # Basic test script (test.py)
    def test_environment():
        try:
            # Test database connection
            import sqlite3
            conn = sqlite3.connect('wildlife.db')
            print("Database connection successful")
            
            # Test GPS module
            from gps import GPS
            gps = GPS()
            print("GPS module loaded")
            
            return True
        except Exception as e:
            print(f"Setup error: {e}")
            return False
    
    if __name__ == "__main__":
        test_environment()

    Week 3-4: Database Design and Implementation

    Detailed Database Structure

    1. Data Modeling Step-by-Step
    a. Design database schema sql

      -- Create Species Table
      CREATE TABLE species (
          id INTEGER PRIMARY KEY,
          common_name TEXT NOT NULL,
          scientific_name TEXT NOT NULL,
          conservation_status TEXT,
          description TEXT,
          habitat TEXT
      );
      
      -- Create Sightings Table
      CREATE TABLE sightings (
          id INTEGER PRIMARY KEY,
          species_id INTEGER,
          latitude REAL NOT NULL,
          longitude REAL NOT NULL,
          timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
          notes TEXT,
          photo_path TEXT,
          observer_id INTEGER,
          FOREIGN KEY (species_id) REFERENCES species(id),
          FOREIGN KEY (observer_id) REFERENCES observers(id)
      );
      
      -- Create Observers Table
      CREATE TABLE observers (
          id INTEGER PRIMARY KEY,
          name TEXT NOT NULL,
          email TEXT UNIQUE,
          registration_date DATETIME DEFAULT CURRENT_TIMESTAMP
      );

      b. Define relationships (python)

      class Species:
          def __init__(self):
              self.id = None
              self.common_name = ""
              self.scientific_name = ""
              self.conservation_status = ""
              self.sightings = []  # One-to-many relationship
      
      class Sighting:
          def __init__(self):
              self.id = None
              self.species = None  # Many-to-one relationship
              self.location = {"latitude": 0, "longitude": 0}
              self.timestamp = datetime.now()
              self.observer = None  # Many-to-one relationship
      

      c. Implement data validation (python)

      def validate_sighting(sighting):
          errors = []
          
          # Check coordinates
          if not (-90 <= sighting.latitude <= 90):
              errors.append("Invalid latitude")
          if not (-180 <= sighting.longitude <= 180):
              errors.append("Invalid longitude")
          
          # Check species
          if not sighting.species_id:
              errors.append("Species must be specified")
          
          # Check timestamp
          if sighting.timestamp > datetime.now():
              errors.append("Future timestamps not allowed")
              
          return errors

      API Development Guide
      a. Create endpoints (python)

      from flask import Flask, request, jsonify
      app = Flask(__name__)
      
      @app.route('/api/sightings', methods=['POST'])
      def create_sighting():
          data = request.json
          
          # Validate data
          errors = validate_sighting(data)
          if errors:
              return jsonify({"errors": errors}), 400
              
          # Create sighting
          sighting = Sighting(
              species_id=data['species_id'],
              latitude=data['latitude'],
              longitude=data['longitude'],
              notes=data.get('notes', '')
          )
          
          db.session.add(sighting)
          db.session.commit()
          
          return jsonify({"id": sighting.id}), 201
      
      @app.route('/api/sightings', methods=['GET'])
      def get_sightings():
          sightings = Sighting.query.all()
          return jsonify([s.to_dict() for s in sightings])

      b. Implement authentication
      c. Test API functionality
      d. Document API usage

        Tip: Use sample data sets initially to test database functionality before implementing live data collection.

        Week 5-6: User Interface Development

        App Design

        1. Wireframing
          1. Sketch basic layouts
          2. Plan user workflows
          3. Design data entry forms
          4. Create navigation structure
        2. Implementation
          1. Build UI components
          2. Implement data binding
          3. Add form validation
          4. Create feedback mechanisms

        Accessibility Tip: Ensure the app is usable in various lighting conditions for field work.

        Week 7-8: Integration and Testing

        Feature Implementation

        1. Core Functionality
          1. Implement GPS tracking
          2. Add photo upload capability
          3. Create offline data storage
          4. Implement sync functionality
        2. Testing Protocol
          1. Unit testing
          2. Integration testing
          3. Field testing
          4. User acceptance testing

        Common Challenges and Solutions

        Technical Challenges

        1. Offline Functionality
          • Solution: Implement local storage with periodic syncing
          • Use SQLite for mobile data persistence
          • Add conflict resolution for merged data
        2. Battery Optimization
          • Solution: Implement efficient GPS polling
          • Optimize photo compression
          • Use background services judiciously

        Educational Challenges

        1. Varying Skill Levels
          • Solution: Pair programming
          • Modular project components
          • Differentiated learning paths
        2. Real-world Integration
          • Solution: Partner with local experts
          • Use actual conservation data
          • Regular field testing sessions

        Assessment Strategies

        1. Technical Assessment (40%)
          • Code quality and documentation
          • Database design implementation
          • API functionality
          • User interface usability
        2. Conservation Impact (30%)
          • Data accuracy and reliability
          • Conservation group feedback
          • Implementation feasibility
          • Environmental consideration
        3. Documentation (30%)
          • Technical documentation
          • User guides
          • Project presentation
          • Reflection journal

        Teaching Tips

        For each technical concept:

        1. Start with a demonstration
        2. Provide working example code
        3. Allow students to experiment
        4. Use pair programming
        5. Include regular code reviews

        Break down complex tasks:

        1. Database design
          • Start with simple tables
          • Add relationships gradually
          • Use visual schema designers
        2. API development
          • Begin with basic CRUD operations
          • Add validation incrementally
          • Test with Postman or similar tools
        3. UI development
          • Start with wireframes
          • Implement basic layouts
          • Add interactivity step by step

        This unit requires careful preparation and a solid foundation in programming concepts. While challenging, it provides students with real-world experience in software development while contributing to environmental conservation. Regular assessment and feedback help ensure students grasp both the technical and conservation aspects of the project.

        Remember to adapt the pace and depth based on your students’ existing knowledge and capabilities. Consider breaking down complex topics into smaller, manageable chunks and providing additional support resources where needed.


        Note: This unit guide should be adapted based on local wildlife, available resources, and specific curriculum requirements. Regular consultation with local conservation experts and technology professionals is recommended for optimal implementation.

        Additional Resources

        Australian Conservation Resources

        Technical Resources

        Share the Post:

        Related Posts