Introduction to Problem Solving Through Programming (COM411)

This module introduces you to the fundamental principles of computational thinking, problem solving and software development. Throughout the module, you will learn how to analyse problems, design appropriate solutions and implement those solutions using the Python programming language. The skills you develop will form an important foundation for further study in computing and for future professional practice within the technology sector.

The module is designed around a practical, hands-on approach to learning. You will be encouraged to think critically, explore different ways of solving problems and apply structured techniques to develop working software solutions. As your knowledge grows, you will learn how to design, implement, test and debug programs while developing an understanding of the wider professional, ethical and legal responsibilities associated with software development.

A significant focus of the module is the development of professional skills. You will be introduced to industry-standard tools and practices that are commonly used by software developers. This includes working with Integrated Development Environments (IDEs), particularly PyCharm, and learning how to use version control tools such as Git and GitHub to manage changes to your code and maintain a professional development workflow. These tools will support your learning throughout the module and help prepare you for industry practice.

As part of your studies, you will develop an understanding of programming fundamentals, including input and output, data types, variables and operators. These concepts will provide the building blocks for developing software solutions and will enable you to create programs that process information, make decisions and solve computational problems.

The module also encourages you to engage with the wider computing community. You will be encouraged to develop professional networking skills, participate in relevant industry activities and begin building a professional profile that demonstrates your developing knowledge and abilities. Alongside technical skills, you will explore professional standards, coding conventions and the legal and ethical considerations that influence modern software development practice.

Assessment within the module is designed to reflect authentic computing practice. You will demonstrate your understanding through a time-constrained assessment and through the development of a software product supported by a written report. These assessments will allow you to apply the knowledge and skills gained throughout the module to realistic programming challenges and demonstrate your ability to develop effective software solutions.

By the end of the module, you will have developed a solid understanding of structured problem solving, gained experience in software development using Python and acquired valuable professional skills that will support your progression throughout your degree and into the computing profession.


You will develop knowledge and practical skills in the following technical areas:

Problem Solving and Computational Thinking

  • Structured approaches to problem solving.
  • Analysing and interpreting problem descriptions and requirements.
  • Designing solutions before implementation.
  • Developing algorithms using logical and systematic processes.
  • Applying analytical and critical thinking techniques to computing problems.

Programming Fundamentals Using Python

  • Introduction to Python programming.
  • Writing, running and testing Python programs.
  • Understanding program structure and syntax.
  • Creating, storing and manipulating variables.
  • Working with user input and program output.
  • Developing simple interactive programs.

Software Development Environments

  • Understanding the purpose of a development environment.
  • Using an Integrated Development Environment (IDE).
  • Installing and configuring Python development tools.
  • Using PyCharm for software development activities.
  • Testing and debugging code within an IDE.

Version Control and Collaborative Development

  • Understanding the purpose of version control.
  • Using Git and GitHub.
  • Creating and managing repositories.
  • Staging, committing and pushing code changes.
  • Tracking versions of software.
  • Following industry-standard development workflows.

Programming Logic and Data Handling

  • Data and information concepts.
  • Boolean logic.
  • Variables and data storage.
  • Input and output operations.
  • Human-readable output and file output.
  • Data manipulation techniques.

Data Types

  • Strings.
  • Integers.
  • Floating-point numbers.
  • Complex numbers.
  • Lists.
  • Tuples.
  • Dictionaries.
  • Sets and frozen sets.
  • Ranges.
  • Boolean values.
  • Binary data types.
  • NoneType.

Operators and Expressions

  • Arithmetic operators.
  • Assignment operators.
  • Comparison operators.
  • Logical operators.
  • Identity operators.
  • Membership operators.
  • Bitwise operators.
  • Constructing and evaluating expressions.

Software Design and Development Practice

  • Designing software solutions from specifications.
  • Implementing software solutions.
  • Testing software for correctness.
  • Debugging and correcting errors.
  • Documenting software solutions.
  • Developing software using recognised standards and tools.

Professional Software Engineering Practices

  • Code styling and readability.
  • Python PEP 8 coding standards.
  • Professional software development workflows.
  • Development of maintainable and well-structured code.
  • Awareness of software quality standards.

Computing Foundations Review

  • Computer systems fundamentals.
  • Graphical User Interfaces (GUI).
  • Processor and processing concepts.
  • Memory, including RAM and ROM.
  • Flowcharts.
  • Pseudocode.
  • Core programming concepts.

Legal, Ethical and Professional Issues

  • Data Protection Act 2018.
  • Computer Misuse Act 1990.
  • Freedom of Information Act 2000.
  • Legal responsibilities in software development.
  • Ethical and professional considerations in computing practice.

Employability and Industry Skills

  • Use of industry-standard development tools.
  • Collaborative working practices.
  • Professional communication.
  • Networking and professional profile development.
  • Engagement with the wider software development community.

This site uses Just the Docs, a documentation theme for Jekyll.