Ada Lovelace Day is an international celebration of the achievements of women in science, technology, engineering and mathematics (STEM). It is held every year on the second Tuesday of October and was founded in 2009 by Suw Charman-Anderson to make women's work in STEM more visible. Source: Ada Lovelace Day.
Computing is not just about machines, it's about people too. Technology shapes the world we live in: the homes we build, the transport we use, the energy we produce, the medical devices we rely on and the tools we use to communicate.
Behind every design are decisions about whose needs matter and which problems are worth solving. When the people making those decisions have similar backgrounds and experiences, we risk having more blind spots in the technology we create, which means important needs can be overlooked.
When women are underrepresented in technology, the consequences reach society as a whole. We miss out on talent and innovation, on potentially valuable inventions, on businesses and solutions that never get developed... When people with diverse experiences have a voice in shaping technology, they bring new questions, challenge assumptions, and identify problems that might otherwise go unnoticed! Inclusion and diversity help us build technology that serves more of society.
Underrepresentation also affects women on a deeper level. It can limit women's access to technical careers or leadership roles, limit their opportunities to earn a higher income, build wealth, and overall benefit from technological change. It can also mean being the only woman in the room 🙃, struggling to find mentors, or having to repeatedly prove their expertise. It can mean feeling that a mistake will be treated as evidence that they do not belong, rather than a normal part of learning... These experiences can destroy their confidence, create isolation, and make it harder to imagine a future in tech.
The picture is not only global. We can see it in Europe, in Portugal, at the University of Porto, and even in our own programming classes.
2025 data orange line = Portugal's 2030 target
Sources: Digital Skills and Jobs Platform and Cedefop.
2025 university admission data 2026/2027 Introduction to Programming class data
Sources: DGES 2025 data for Computer Science at Universidade do Porto, Artificial Intelligence and Data Science at Universidade do Porto, and Informatics Engineering at Universidade do Porto; 2026/2027 IP class data.
Portugal is doing slightly better than the EU average in ICT specialist roles, but the "fewer than 1 in 4" picture is still very visible. Even near us, the numbers are usually around one quarter to one third, not close to parity.
These exercises are part of our Ada Lovelace Day celebration.
They are for practice only and will NOT count towards your grade!
(just have fun and use them to improve your skills: there is no submission deadline!)
This year, we celebrate Ada Lovelace Day at Introduction to Programming course with six pioneers that challenged the status quo and dared to bring their ideas to life! Each challenge pairs a woman's story with a problem for you to solve -- will you Accept the challenge? (cof, cof... see what we did there?) 😁
To check your solutions, you can submit them to IP's Mooshak (there is no deadline for submissions!).
Ada Lovelace looked at Charles Babbage's Analytical Engine and imagined more than a calculator. Today, she is often remembered as the first computer programmer. There were no computers at the time, but there are now! Can you help Ada code her algorithm?
- Start with row 0: [1].
- To build the next row, create a new list that starts and ends with 1.
- Every middle value is the sum of two neighbouring values from the previous row.
Hedy Lamarr was famous on screen, but she also co-invented a frequency-hopping communication idea with George Antheil. Imagine a message jumping between radio channels: if some channels are corrupted, only part of the message survives. Your task is to reconstruct what gets through.
- Channels repeat in the pattern 1, 2, 3, 4, 5.
- For a character at index i, its channel can be calculated with i % 5 + 1.
- Add a character to the answer only if its channel is not in corrupted_channels.
Carol Shaw helped define what early video games could be. Her game River Raid asked players to navigate danger, fuel and movement on a screen with very limited resources. Here, the game idea becomes a grid-building problem: place objects on a square board and return the board as text.
- Convert each position to row and column using integer division and remainder.
- Remember that positions start at 1, but Python indexes start at 0.
Latanya Sweeney showed that "anonymous" data is not always truly anonymous. A few details, such as age and postal code, can sometimes identify a person when combined with other sources. This exercise turns that idea into a simple data-protection transformation.
- Build a new tuple; do not change the original records.
- Use the person's position in the tuple to finish the identifier.
- For age groups, think in intervals of size 10: age // 10 is useful.
- For the postal code, keep only the less precise part requested in the statement.
Joy Buolamwini noticed that a face-detection system worked better for a white mask than for her own face. Her work helped expose how AI systems can fail unevenly across people. In this problem, a matrix of tests helps you find which people are repeatedly failed by the system.
- Each column corresponds to one person.
- Count the number of 0 values in each column.
- Keep only people whose failures reach the threshold.
- Sort first by failure count in descending order, then by person number in ascending order.
Mary Jackson began as a human computer and became NASA's first Black female engineer. Her work helped engineers understand airflow and aircraft behaviour. This exercise asks you to simulate a small wind-tunnel process where the speed increases, but each increase gets smaller.
- If start_speed is already enough, return 0.
- Otherwise, repeat: add amount, count one step, then update amount = amount // 2.
- Stop successfully as soon as the speed reaches the target.
- If the amount becomes 0 while the target was not reached, return -1.
Happy coding, and happy Ada Lovelace Day! 👾
A special thanks to Pedro Ribeiro for his class guides and fun exercises that inspired me to create these ones, for creating this course with me, and for supporting me (and women in programming) in general! Kudos 🖖