 There are people in the audience who are actively working on making that happen. And this is a database of abstract groups. So this is, as you can see at the top, it says there are 257,936 groups of order N up to 2,000. That's not quite all of them, as anyone who has studied groups of order 1,024 knows. There are a whole lot more than that. With the exception of a few specific orders where there are just too many groups for us to put them all on the LMFDB, it has all of them. So this page, as with the number fields page, if you want to know exactly which groups are in the LMFDB, you can go to the completeness of the abstract groups page and see which ones did we leave out, and they tend to be groups whose order is a multiple of 128. Those tend to be the most difficult ones. Now you might wonder what's the advantage of having all this information in the LMFDB. I mean you can go into SAGE or GAP or MAGMA and OSCAR all have, I don't think you can quite do this in GP, but they all have access to the small groups database. If you know the label of your favorite small group, you can compute it and compute all sorts of things about it. What the LMFDB allows you to do is to search for groups based on their properties. You don't have to know what the label of the group is ahead of time. You can say, well I don't know what you call my group, but the group I'm looking for has the following properties, and the following properties can be a very complicated thing. You might say that you want your group to be soluble or not, or what its central quotient could be, or information about its automorphisms, and if you say, well that doesn't look like there's so many options here, well if you're brave you could click the advanced search options and see a lot more. These are all the different things you can search on when you're looking for groups in the LMFDB, and as with the number fields you can go and list all the groups or all the groups that match your search criteria, and you can add, if there's information about the group you'd like to know that's not there, you can add it to the table that's being displayed, and I can go to town here, adding here, and you can also sort your groups into a different order. Here this database is small enough that I'm brave enough to list, but the reverse order is probably more interesting. So there's a group of order 1296 that has the highest derived length, and there's three of derived lengths, six in the LMFDB. So this is kind of an interesting way to get sort of oddball statistics about various datasets in the LMFDB is just by playing with selection criteria and sorting. This will also be, I'm showing you this because this will also be important in the scavenger hunt today, there'll be some specific groups you need to find. Okay, and I think at this point I should take questions about the LMFDB. I'm going to pop back to the other page in a minute, but I just wanted to see if there were any questions. Okay, great. So hopefully I've set you up with all the things you need to know in order to complete the first problem session, which as I mentioned will mostly be a scavenger hunt sending you out to search for a series of interesting objects in the LMFDB, but you won't just be using the LMFDB. In order to complete the scavenger hunt, you're going to have to compute things about those objects because that computation is going to tell you what the next thing you need to look for is just as with the scavenger hunt. You have to go find the first clue to get the information you need to find the second object on the list. And the last thing, we're not going to have time to go into this today, but I just want to give you a preview of what we're going to be doing tomorrow. We're going to actually, rather than just copying codes, so hopefully after the problem session today, you'll have all achieved sort of the first level of mastery of using computational tools, which is you can cut and paste code from the LMFDB into a computer algebra system and compute stuff with it. Okay, and you laugh, but that's not a non-trivial thing. I mean, that's how much more powerful does your ability to Google something make you as a knowledge, expand the scope of your knowledge. It's huge, right? So even just the ability of knowing that you can do that and feeling comfortable doing it is a huge first step. In fact, if all that happened this week is that everybody in this room knew how to do that and felt comfortable doing it, I would consider this course a success. Having said that, we want to go further. We want to actually implement algorithms ourselves because sort of the next layer of frustration one encounters with the computer algebra system is even usually before you get frustrated with maybe some weird syntax things is, oh, it's useless because it doesn't compute property X of my favorite object. And my response to that is, well, that's an invitation. You now have a new research project. You should go implement the computation of property X of your favorite object so that everybody in the world has access to it. And you can even write about a paper about it and publish it and get up at a conference like the Algorithmic Number Theory Symposium or the Lucan Conference that will be happening next summer on computation and the Number Theory databases. And tell everybody about how great your algorithm is. So but in order to give you the tools to make you feel confident doing that, I want to introduce you to some of the basic things you need to know in order to start writing code in these different databases. And I'm not sure what happened to my kernel here, but I'm sure it'll be back up soon. Let's go ahead and switch over here. So we're going to be going through some standard Number Theory algorithms. And we're going to take it in baby steps. So the first thing we'll do tomorrow is to implement the Sivvaritasthenes. And then maybe the next baby step after that is we'll implement an algorithm to write integers as a sum of two cubes in as many ways possible whenever that can be done. And then maybe the next baby step over that is we'll try and do this for sums of three cubes, which is sort of a much more interesting computational problem. And then we're going to be looking at things like we're going to switch our focus to elliptic curves. And we're going to look at all the different ways you could compute the trace of a binius of an elliptic curve. And we're going to look at at least eight of them. And in the problem sessions, you'll have a chance to implement even more of them. And then if there's time, during the latter part of the week, we may move beyond elliptic curves to higher genus curves, where a lot of the algorithms that we have available to us for elliptic curves have sort of very natural generalizations. I chose these not just because I think point counting is the coolest problem in the world. Of course, I do think that. But I spent a lot of my time counting points. But because it allows us to explore a lot of different pieces of these computer algebra systems. So you'll need to learn things like how do I find roots of polynomials over finite fields? Or how do I efficiently do evaluation and interpolation? Or how do I efficiently apply Hensel lifting? Or how do I efficiently apply the CRT algorithm? All of these are sort of very natural. How do I take compute quotient rings? They're just a lot of very natural computational tools that sort of all get used in the context of counting points on elliptic curves. OK, I think I better stop there. Any questions for Drew? Yes, Maureen. Maureen and I voice the data there.