Big Idea 1

Creative Development

Computing Innovations

  • Inspiration Sources:
       - Nature: examples include the flight of the vulturine guinea fowl, sonar used by whales and dolphins, termite architecture.
       - Human Creativity: Innovations in computing are generated by people and continually evolve.

  • Impact of Computing Innovations:
       - Positive effects:
         - Advances in fields such as medicine (e.g., data analytics improving insurance decisions).
         - Technologies like wearable heart monitors and microprocessor-controlled artificial legs that enhance the quality of life.
         - New artistic expressions enabled by computing technologies.
       - Negative examples:
         - Innovations that have struggled to find adoption: Bluetooth toasters, smart water fountains for cats, internet-connected fridges.

Hardware vs. Software

  • Definitions:
       - Hardware: Physical components of a computing device (e.g., Transistor, Graphics card, Motherboard).
       - Software: Instructions written in a programming language that are executed by hardware to perform tasks (e.g., Operating systems, Self-driving car software).

  • Moore's Law:
       - Predicts the size of transistors halving every two years while their cost also halves, leading to smaller and more powerful computers.
       - Historical comparison: Early computers occupied 1800 square feet and weighed nearly 50 tons; now, devices fit in pockets.

Collaboration in Computing

  • Importance of Collaboration:
       - Enhances learning by sharing diverse perspectives and avoiding bias in development.
       - Example: Inclusion of female coders in gaming development may yield insights overlooked by male-only teams.

  • Skills Required for Effective Collaboration:
       - Communication
       - Consensus building
       - Conflict resolution
       - Negotiation

  • Benefits of Collaboration:
       - Enhanced self-awareness by pairing strengths and weaknesses.
       - Facilitates problem-solving through varied experiences and skill sets.
       - Learning experiences through the exchange of ideas.

  • Tools for Collaboration:
       - Online platforms such as Google Docs, Zoom, Slack, Yammer allow teamwork regardless of location.

How Programs Function

  • Definition of a Program:
       - A collection of statements or instructions that accomplishes a specific task when executed by a computer.
       - Example of workflow: Input a list of numbers, process to determine evenness, output the result.

Basic Programming Concepts
  • Input/Output Example:
       - Input:
    3
       - Task: Determine if the number is even or odd.
       - Output:
    odd

Complex Program Features
  • A program must be adaptable for multiple inputs and scenarios.

  • Example of a Faulty Program:
       - The initial value of
    total could cause problems if not correctly initialized.
       - Correcting Initialization: Set total to
    0 instead of myList[1].

The Importance of Testing

  • Programmers should create numerous test cases to ensure functionality.

  • Fresh perspectives often uncover errors unnoticed by the author due to prolonged focus on the code.

  • Program Abstraction:
       - Users interact with programs without needing to understand underlying code complexities (Example: Spellcheck in Microsoft Word).

Program Inputs and Outputs

  • Definition of Program Input:
       - Data sent to a program for processing, can be tactile, audio, visual, or text.
       - Example: Voice input for sending messages or weather queries.

  • Event Generation:
       - Actions providing input to a program can be triggered by user interactions (e.g., key presses or clicks).

Development Process

Nature of Development Process:
   - Can be either ordered/intentionally or exploratory.
   - Iterative Process: Incorporates feedback for refinements at each stage, necessitating revisits to earlier phases.
   - Incremental Process: Focuses on segments of a project and verifies functionality before integration into the overall program.

Key Phases in Development Process
  1. Investigating and Reflecting
       - Identify communication needs (e.g., for video conferencing).

  2. Designing
       - Outline algorithms for desired functionalities.

  3. Prototyping
       - Write initial versions of the program.

  4. Testing
       - Execute programs to find and rectify errors.

Ways to Conduct Investigations
  • Surveys

  • User Testing

  • Interviews

  • Observations

  • Focus on user requirements and constraints.

Program Documentation

  • Definition and Importance:
       - Written descriptions detailing function and development of code segments.
       - Vital for maintaining effective programs, enhances clarity and collaboration.
       - Commenting in Code:
          - Used to add explanations without affecting code execution (Example formats:
    //, comments surrounding defined features).

Error Types in Programming
  1. Logic Error:
       - Flaw in the algorithm causing incorrect behavior.

  2. Syntax Error:
       - Violating programming language rules.

  3. Runtime Error:
       - Errors occurring during the execution of the program, specifics vary by language.