Preliminary Software Engineering
Unit 1 - Programming Fundamentals
Unit 1 - Programming Fundamentals
  • 1 - Programming Fundamentals
    • Programming Fundamentals Content
  • 2 - Python
    • Expected Python Knowledge
    • GitHub
    • Learning Python
    • Data Structures and File Management
      • Data Structures
        • Lists
        • Arrays
          • Single and Multi-Dimensional Arrays
        • Lists vs Arrays
          • Activities
        • Tuples
        • Sets
        • Dictionaries
          • Activities
      • File Handling
        • Loops, Lists, Dictionaries
        • Activities
  • 3 - Theory Content
    • Theory Content Explained
      • NESA Directional Verbs
      • Responding to Directional Verbs
  • 4 - Software Development and Management
    • Approaches to Software Development
      • Waterfall Model
      • Agile Model
      • Summary: Waterfall vs Agile
      • Activities
    • Software Development Steps
      • Sample Exam Question
      • Requirements Definition
        • Understanding the Need
        • Key Questions to Ask
        • Examples
        • Activities
        • Sample Exam Question
      • Determining Specifications
        • Functional Specifications
        • Non-Functional Specifications
        • Activities
      • Design
        • Top-Down Design Approach
        • Bottom-Up Design Approach
      • Development
        • Optimising Code
      • Integration
        • Example: Payment Program
        • Activity
        • Application Programming Interface (API)
          • Example: OpenWeather API
          • Example: WeatherAPI
          • Activity: Prepare Spells
      • Testing and Debugging
        • Test Data
          • Activities
        • Testing the System
          • Activities
        • Debugging
          • Types of Errors
            • Activities
          • Python Debugger
            • Activities
          • VS Code Debugger
            • Activities
      • Installation
        • Activities
        • Sample Exam Question
      • Maintenance
  • Charts and Algorithms
    • Example: IPO Charts and Pseudocode
      • Activities
    • Algorithms, Flowcharts, Pseudocode
      • Pseudocode Activities
      • Flowchart Activities
      • Sample Exam Questions
    • Structure Charts
      • Activities
      • Sample Exam Questions
    • Data Flow Diagrams
      • Activities
    • Data Dictionaries
      • Activities
    • Decision Trees
      • Activities
      • Sample Exam Questions
    • Gantt Chart
    • Class Diagrams
      • Sample Exam Question
    • Storyboards
      • Sample Exam Question
  • Testing and Debugging
    • Test Data
      • Activities
    • Testing the System
      • Activities
    • Debugging
      • Types of Errors
        • Activities
      • Python Debugger
        • Activities
      • VS Code Debugger
        • Activities
  • Computational Thinking
    • Decomposition
    • Abstraction
    • Activities
  • Version Control
    • Git
    • GitHub
    • Activities
  • Number Systems
    • Binary Systems
    • Hexadecimal Numbers
    • Using Two's Complement
    • Activities
  • 5 - Assessment Task 1
    • Data Science Project
      • Before we Start
        • Setting up GitHub Repository
        • Setting Up Markdown Documentation
      • Examples of API Usage
        • Starter Code: NASA Scenario
        • Starter Code: Spell Book
        • Starter: Pokédex Explorer
        • Starter Code: Weather App
        • Example: OpenWeather API
        • Example: WeatherAPI
        • Example: Prepare Spells
    • Task Guide
      • Requirements Definition
      • Determining Specifications
        • Use Cases
      • Design
        • Gantt Chart
        • Structure Chart
        • Algorithms
        • Data Dictionary
      • Development
        • Comments vs DocStrings
        • UI - main.py
        • Create Python Module
          • Example: NASA Module
          • Example: WeatherFetch Module
          • Example: SpellBook Module
      • Integration
        • Example: Pokedex
      • Testing and Debugging
        • Commit Changes
      • Installation
      • Maintenance
    • Submitting Your Task
Powered by GitBook
On this page
  • Applying Computational Thinking to Your Project
  • Algorithmic Thinking

Computational Thinking

Learning Intention

  • Use modelling tools including structure charts, abstraction and refinement diagrams to support top-down and bottom-up design.

Success Criteria

  • I can compare different development processes such as abstraction and decomposition.


Computational thinking is a problem-solving approach that entails breaking down complex problems into more manageable parts, focusing on the essential details (abstraction), and devising algorithms to solve these problems.

It is a mindset that is not only applicable to programming but also to understanding and solving real-world problems.

By applying computational thinking, you can effectively tackle intricate challenges in a systematic and logical manner.

Applying Computational Thinking to Your Project

For your project, computational thinking will enable you to deconstruct the educational process into discrete, manageable components.

Key components such as user authentication, question delivery, answer validation, and progress tracking can be individually developed, tested, and refined before being integrated into the larger system.

This structured approach ensures that each part of the application functions correctly and efficiently, contributing to the overall success of the project.

By integrating computational thinking into your development process, you can manage complexity more effectively and create a robust, well-organised application. Each component, whether it is a module, an abstraction, or an algorithm, is carefully designed and tested independently. This not only makes the development process more manageable but also enhances the maintainability and scalability of the application.

Algorithmic Thinking

Algorithmic thinking involves devising a step-by-step solution or set of rules to solve a particular problem. For your project, you will need to develop algorithms for tasks such as:

  • User Authentication: Validating user credentials and managing sessions.

  • Question Delivery: Randomising or sequencing questions to present to users.

  • Answer Validation: Checking user responses against correct answers and providing feedback.

By developing and refining these algorithms, you ensure that your application performs efficiently and accurately, providing a seamless experience for the users.

PreviousActivitiesNextDecomposition

Last updated 3 months ago