Pick an IA problem that interests you, is complex enough, can be finished with your skills and tools, and meets the ethical rules; choose a computational context and a client, and write a proposal your teacher can approve.
The problem you choose sets a ceiling on every later mark. A problem with no real logic in it cannot produce algorithms worth designing in Criterion C or techniques worth evaluating in Criterion D, however well you write about it. A problem that is far too large ends with a product that only partly works. The best IA problems sit between the two: big enough to need several algorithms that you design yourself, small enough to finish, test and evaluate in the time you have.
Four checks decide whether an idea is worth taking further. The problem should be of personal interest and real; it should need genuine algorithmic thinking, not just storage; it should be feasible with your skills, tools, data and time; and it should meet the ethical guidelines. An idea that fails a check can usually be rescued by narrowing it, widening it or approaching it from a different angle.


The order of the checks matters. Interest comes first because you will work on the project for months, and a problem you care about is easier to specify in detail. Complexity comes before feasibility because it is easier to cut a rich problem down to size than to add depth to a thin one.
The IB asks for a problem of your own choosing and of personal interest. You can apply any topic in computer science that interests you, and it does not have to relate directly to the course content. Good problems usually come from a place where you can watch the problem happen and talk to the people who have it.
Source | Example problem | Why it works |
|---|---|---|
A club or team you belong to | The robotics club cannot track which parts are on loan and which are broken | You see the problem weekly and can test with real members |
A family member's work | A relative's tutoring business schedules lessons by text message and double-books tutors | A real user with clear rules (availability, travel time, lesson length) |
A school department | The music department's practice rooms are booked on a paper sheet | A client on site, many users, rules to enforce |
Another subject | A physics class needs a projectile simulation that shows air resistance | The algorithm is the point: numerical steps, graphs, validation against known results |
Your own learning | A vocabulary trainer that schedules reviews based on past answers | You are a genuine user, and the scheduling rule is real logic |
A computing issue | A tool that checks the strength of passwords against a list of common ones | Uses searching, hashing and string processing |
Many students build their product for a particular person who has the problem. That person is usually called the client.
The current IA criteria do not mention a client, and the task does not require one: the problem only has to be of your own choosing and of personal interest. A client still helps in three ways. They describe the problem in their own words, which gives Criterion A real requirements instead of guesses; they can agree what counts as success, which makes the success criteria harder to argue with; and they can try the finished product, which gives Criterion E evidence that is not just your own opinion.
You can also be your own user, for example in a revision tool for yourself. Then you need to work harder at objectivity: write success criteria that a stranger could test, and find other people to try the product before you evaluate it.
A good client | A weak client |
|---|---|
Has the problem now and will still have it when you finish | Has no real need; agreed to help as a favour |
Can meet you several times: at the start, after the design, for the trial | Is hard to reach after the first conversation |
Can say what success looks like in numbers or behaviours | Can only say "make it nice" |
Will let you observe the current way of working | Will not share how things are done now |
Every person involved in developing the solution must give consent before any investigation begins, and that includes interviews and observations of the client. Ask your teacher how your school records it.
The IB asks for a problem that needs a software solution complex enough for a Diploma Programme course, and enough innovation for you to show organisation, algorithmic thinking and the ability to code your own algorithms. The teacher support material gives more detail on complexity; your teacher has it and can tell you whether an idea is enough. The table gives a practical way to judge an idea yourself. It is advice based on what the criteria reward, not an official list.
Signs of enough complexity | Signs of too little |
|---|---|
Rules that the program must enforce (no clashes, limits, permissions) | Only adding, editing, deleting and showing records |
Calculations or decisions that depend on several inputs | A fixed set of screens with no logic between them |
Searching, sorting, scheduling, matching or optimising | Data typed in and displayed again unchanged |
Data structures chosen for a reason (queues, dictionaries, trees, a relational database with joins) | One list of strings |
Something that happens over time (a timer, a simulation step, a release job) | Everything happens only when a button is pressed |
Integration of parts: a database, a web interface, a library, a file format | One file of code with one purpose |
A product that only creates, reads, updates and deletes records (often shortened to CRUD) is the most common way to fall short. Almost every useful system does those four things, so they are not wrong to include. They simply leave nothing for Criterion C's algorithms or Criterion D's techniques to show, unless the problem adds rules on top.
Innovation in the IA sense is about your own design work, and an idea that already exists elsewhere can still qualify. Booking systems are common, yet this one is designed for a particular department's rules (30-minute slots, a weekly limit, a check-in code on the door), and the student has to work out how those rules are enforced. A product shaped closely around one client's problem gives you design decisions to explain in every later criterion.
Once you have a problem, you choose the kind of software that will solve it. The IB calls this the computational context, and Criterion A's top band asks you to explain why you chose it.
The context should follow from the problem, not the other way round. Students who start with "I want to make a mobile app" often struggle to find a problem that needs one; students who start with the problem can usually explain the context in two sentences, which is exactly what Criterion A rewards.
Computational context | Example problem | Where the algorithmic thinking lies | Trap to avoid |
|---|---|---|---|
Web application with a relational database | Room or equipment booking for a department | Clash and limit rules, queries joining tables, reports | Only forms and tables with no rules behind them |
Stand-alone object-oriented program | A timetable generator for a small club | Constraint checking, search for a valid arrangement | A class diagram with classes that do nothing |
Simulation | Queues at a canteen till, with different numbers of tills | Time steps, random arrivals, collecting statistics | Animation with no model behind it |
Game | A turn-based strategy game with a computer opponent | Game state, rules, the opponent's decision algorithm | A copied tutorial game with new graphics |
Mobile app | A hiking log that records routes and calculates distance and climb | Processing GPS points, filtering noise, summarising | An app made in a no-code builder |
Machine-learning classification | Sorting photos of plant leaves into healthy or diseased | Preparing data, choosing features, measuring accuracy | Calling a ready-made model with no data work of your own |
Plug-in or extension of an existing system | A plug-in for a school's learning platform that reminds students of overdue work | Reading the system's data, deciding who to remind and when | Using a system you do not have written permission to change |
The IB states that you should have the technical skills, the hardware and software, and access to the data that your problem needs. A problem that fails on any of these is risky, however good it looks on paper.
Question | What to check | Booking system |
|---|---|---|
Skills | Have you used the language, framework and database before? If not, can you learn the basics in a week or two? | Python from class; SQL from topic A3; Flask is new but small |
Hardware and software | Does the product need devices, servers or accounts you do not have? | Runs on a laptop; the client trial needs a school server |
Data | Do you need real data, and can you get it legally and safely? | Room names from the client; test students invented for development |
Time | Can the core features be built and tested well before the draft deadline? | Six components over about seven weeks of development |
Help | Who can you ask when something does not work? | Teacher, documentation of the framework, the client for rules |
A useful habit before committing is to build a small prototype of the riskiest part in the first week or two. For the booking system, that means one web page that saves a booking to a database and refuses an overlapping one. If that works, the rest is more of the same; if it does not, you have found out early, while changing the plan is still cheap.
Feasibility also means cutting the scope to fit. The booking system deliberately leaves out signing in with the school's own accounts: that would need the written consent of the system's owner, access the student does not have, and time the project cannot spare. Leaving a feature out on purpose, and saying why in Criterion A, is a sign of good planning.
Every IA must follow the IB's ethical guidelines, and a product that breaks them is not acceptable, however good its code. The rules exist because IA products often handle data about real people.
Consent first. Get consent from the people who will be involved in developing the solution before any investigation starts: interviews, observations, surveys and testing.
Written consent for existing systems. Get written consent from the owner of any existing system you use or change, for example a school website, a learning platform or a network you test.
Secure storage. Store all data you collect securely so that it stays confidential.
Single use. Use the data you collect only for your computational solution, and for nothing else without explicit permission.
Original data. Wherever possible, use original data or collect it yourself. The IB words this one as a recommendation; the first four are rules.
For the booking system, these rules become practical decisions. Development uses invented students, not real names and IDs. Passwords are stored only as hashes, so even a copy of the database does not reveal them. The client trial uses a server provided by the school's IT department, with its written consent, and the trial data is deleted at the end. Schools also follow local health and safety practice for any research linked to the IA.
Some products fail no matter how complex they are, because there is not enough of your own coded work in them: products made only of copied code, websites built from a template that fixes their structure and layout, sample products shipped with software (the IB names the Northwind database supplied with Microsoft Access), copied games without major documented changes, and apps made with drag-and-drop builders without code. Frameworks, engines and libraries are allowed. When you use one, the logic that solves your problem must still be designed and written by you, and the library must be acknowledged.
Before you start Criterion A you will usually write a short proposal for your teacher. The IB lists the initial proposal among the evidence a teacher can use to check that the final work is yours. A good proposal answers the four checks in a few lines each, so your teacher can see at once whether the idea will work.
Heading | What to write |
|---|---|
Problem | Who has it, what goes wrong now, and how you know |
Client and users | Who you will work with, and whether they have agreed |
Why it interests you | One or two sentences |
Computational context | The kind of product and the main tools |
Where the algorithms are | Two to four rules, calculations or processes the product must carry out |
Data | What data is needed, where it comes from, how it is kept safe |
Risks | The hardest part, and what you will do if it does not work |
Consent | Who must agree, and whether they have |
My problem is real, of personal interest, and described with evidence of what goes wrong now.
I can name at least two rules, calculations or processes that my product must carry out (not only storing and showing data).
I have a client or real users, or a plan for objective testing if I am my own user.
I have chosen a computational context because it fits the problem, and can explain why in two sentences.
I have the skills, hardware, software and data the problem needs, or a short plan to get them.
I have built, or planned, a small prototype of the riskiest part.
I know who must give consent, and written consent for any existing system I use.
My data will be stored securely, used only for the IA, and invented or original wherever possible.
My product will not rely on templates, copied code, sample products or no-code builders.
I have written a proposal that covers problem, client, context, algorithms, data, risks and consent.
With a free account, Augment remembers where you stopped in the notes and which questions you have marked.