About Project Lovelace
What exactly is Project Lovelace?
Project Lovelace is an open online platform for learning about science and developing computational thinking through programming and problem solving. It is a collection of computational science problems and tutorials taken from all branches of the natural, social, and mathematical sciences. Each problem teaches a scientific application (e.g. locating earthquakes, DNA splicing) and requires the use of scientific insight and some programming skills to solve. Tutorials teach computational methods that students and researchers may find useful (e.g. solving differential equations, Bayesian inference) and may be required knowledge for some problems. Project Lovelace draws inspiration from similar projects such as Project Euler and Rosalind.
Who was Ada Lovelace?
Ada Lovelace (1815-1852) was an English mathematician who was the first person to realize that computers could be much more than big calculators and published the first complex computer algorithm in 1843. She did this long before any computer existed to execute her algorithm as it was devised for the Analytical Engine which never got built. The algorithm described how the Analytical Engine could calculate the Bernoulli numbers using a recursive algorithm, which you can reproduce in Ada Lovelace's Note G. If you're interested in learning more about her the BBC made a documentary, Calculating Ada - The Countess of Computing, where Hannah Fry (of Numberphile fame) tells the story of her life.
Do I need to know a lot of science and math?
Depends on the problem. We try to introduce all the science you need to know to solve the problem, and you'll learn more by working through them. We also try to include useful notes and links to videos that might introduce the concepts in a better way. Some problems don't include much math, and we'll try to include many of these especially the ones that have cool visualizations. Scientific computing involves lots of math, especially in the form of solving differential equations, so math is impossible to avoid. If you feel a problem is unclear or could be improved, let us know on Discourse!
What programming languages can I use?
I don't like something, or have a suggestion or idea for a new problem, or something is broken.
Please let us know on Discourse! We'll do our best to fix things and add in new features.
Why make another programming website when there are so many others?
Seeing as science has seen a proliferation of computer modeling and simulation for a long time we wanted to get into computational science but could not find any good resources for starting off besides long, dry textbooks. We really liked Project Euler as a way of learning math and improving our programming skills but not being number theory experts we found it hard to solve the problems past the first page or two as we had no idea where to start. Their problems are very well thought out and you can learn a lot, but somewhat contrived in our opinion. Other websites like Leetcode (and many others) just teach super boring and generic algorithms (in our opinion) that may be useful for passing technical interviews but not so much in the real world. Since there are so many interesting real-world and applied problems in all branches of science we think this is a really good opportunity to learn both science and programming at the same time, so we put up a website to do just that.
Why call it Project Lovelace?
We wanted to follow in the footsteps of Project Euler and Rosalind and found it difficult to decide on a founding figure for computational science mostly because it's hard to pinpoint the first time a computer was used to solve a scientific problem.
Analog computers were around long before electronic computers, so you could argue that the ancient Greek Antikythera mechanism, which was used to predict the location of the planets in the sky and the timing of lunar eclipses, was the first automated calculation of scientific interest. Many other examples can be found including the torquetum, an astronomical instrument probably from the medieval Arab world that could measure and convert between different spherical coordinate systems, tide-predicting machines which were first built in the 1870's, and the differential analyser which was first built in the early 1930's and used to calculate firing tables.
It's not too hard to argue that the modern computer came out of World War II. Electro-mechanical Bombe computers were famously used by the Allies to break the Enigma machine cipher used by the German army. The first programmable, electronic, digital computer, the Colossus, was built in 1943 and is best known for its use in breaking the Lorenz cipher used to encrypt high-level messages by the German army. The ENIAC, another early general-purpose electronic computer, was initially designed to calculate firing tables but ended up running hydrogen bomb simulations for the Manhattan Project.
We're getting a little sidetracked here but essentially since we wanted to cover a wide range of topics from computational physics and biology to cryptography and statistics, and no one can agree on what the first computer was, let alone the first computational scientific calculation, so it made sense to just name it after the first programmer.
Can I post my solutions online?
We think the most enjoyable part of solving the problems is that moment when you figure out how to finally solve it. Spending the time and effort on problem solving is what makes you a better scientist and programmer. So in an ideal world everyone would figure out each problem themselves, maximizing their learning. But people will always post their solutions online no matter what we say, and some people can learn from solutions especially after being stuck for a while, so all we ask is that if you do post your solution online that you post quality work: well-documented and quality code that others can learn from by following your code. A lot of our problems are well-known and not neccessarily original so there are probably already many solutions posted online for those.
How does the submission engine (code checker) and website work?
The code for the Lovelace engine is hosted online in a GitHub repository at project-lovelace/lovelace-engine and the code for the website is at project-lovelace/lovelace-website.