Report on Sage Days 102, University of Ibadan, Nigeria

During the week of July 15 - 19 we held Sage Days 102 at the University of Ibadan, in Ibadan, Oyo State, Nigeria. This was (to our knowledge) the first ever week-long workshop dedicated primarily to SageMath in Nigeria (although not the first ever in West Africa; that honor belongs to Sage Days 34.5 in Burkina Faso, October 2011), and there was immense interest, with 80 registered participants, and many others who had to be wait-listed.

The primary focus of the workshop was to introduce students and faculty to computational mathematics with SageMath, as well as to on-board them to open source mathematical and scientific computing in general. To that end we also held sessions on GAP and R with the help of local experts.

All of the on-site organization and funding was provided by the University of Ibadan Department of Mathematics, while OpenDreamKit provided travel funding for four instructors (Erik Madison Bray from France, Yaé Ulrich Gaba from South Africa, Evans Doe Ocansey from Austria, and Dr. Chimere Stanley Anabanti from Nigeria), as well as for two PhD students (Olivia Adu-Poku from Ghana and Gilda Bansimba from Congo). The instructors were also joined by Dr. Olalekan K. Obisesan, a professor of statistics local to the University of Ibadan.

The genesis of this workshop was at the Free Computational Mathematics conference, held at CIRM in France, February 2019, also sponsored by OpenDreamKit. That conference was attended by Ini Adinya, a lecturer in mathematical finance at the University of Ibadan, along with two of her colleagues. They were impressed by how much they were learning at that conference, and wanted to replicate it, or something like it, at the University of Ibadan. Ini and Erik had worked together during the conference on some of her programming problems, and Erik agreed to come help out and teach at such a workshop if they organized it. And so, shortly afterwards we got the ball rolling, with a big kick of help from Viviane Pons who helped with much of the initial organizing, and especially the search for additional instructors who would be willing to travel to (or from within) Nigeria, as without several instructors there was no way the workshop could be successful. One of the IT managers at AIMS, the African Institute for Mathematical Sciences, saw Viviane’s e-mail on one of the Sage mailing lists and forwarded it to Evans and Yaé, who had prior experience teaching Sage together in South Africa. They in turn agreed it would be fun to team up to help teach Sage in Nigeria, and we couldn’t have done it without them.

The following are Erik’s notes on the workshop.

The Workshop

The workshop was held during the week, Monday through Friday, with official times beginning at 9:00 am and ending at 5:00 pm, with a coffee break and a lunch break, with catering provided by the department. (While this schedule gave everyone a chance to breathe at the end of the day, as the exit-survey suggests it left many people wanting for more, as a something like an intensive “boot camp” retreat might have provided; an idea for a future project.) Some teaching time was also lost to infrastructure problems, most notably a power outage on Monday that lasted almost the entire afternoon after lunch. Even then we persevered, stretching laptop batteries as long as possible and using the whiteboard.

Despite that and other challenges (e.g. spotty internet access, technical problems with people’s computers and the projector, and not overall enough instructors for the size of the group) there was a lot of spirit and excitement for the subject matter, and most attendees got a lot out of it and wished it could go even longer.

We started off Monday with a brief opening ceremony lead by leadership from the Department of Mathematics and from the Faculty of Science including Head of Department Dr. Deborah O. Ajayi who co-organized the workshop, and Prof. A. Ayodele, Dean of the Faculty of Science. Followed by this was a brief talk to introduce Sage, the community around it, and to provide some of the background to free and open source research computing in general, and why it can be advantageous. Originally this talk was supposed to have some slides and live demos, but as we did not have the projector working yet I (Erik) gave the talk off-the-cuff to keep things moving while the technical kinks were worked out.

Opening speech by Dr. Ajayi

Then, after the coffee break, I lead a brief introduction to using the command-line shell, based on the Software Carpentry lesson but only with time to cover basic filesystem navigation and manipulation, in which we wanted to make sure all attendees had some common grounding. We had ambitions to then teach some basic Git, in part that we might use it to distribute files, and updates to those files, from the Git repository for the workshop. However, due in large part to inconsistent network access between the attendees, we had to abandon that idea and resort to distributing files on USB drives, of which I brought nearly two dozen (more on that in Technical Notes). The math department did provide a 4G modem/Wi-Fi router for attendees to connect to, but with around 80 attendees it was difficult to disseminate connection information to everyone, especially for people who came on later days and missed the notice that they could use that access point. In any case the tiny router would not have been able to handle 60+ simultaneous connections.

Here it should be noted that the workshop was being held in a new lecture hall building being constructed by the University, which when completed (which it nearly is) will be as state-of-the-art as most I’ve ever been in, with copious power outlets and ethernet ports at each desk, and back rooms for the instructors to use as offices, and to gain access to the racks of ethernet switches that the desk ports will be hooked up to. At the time of this workshop it just wasn’t fully hooked up yet, and was so new that there was still shrink-wrap on the furniture and even on the whiteboard, which we only even figured out on the second day.

The whiteboard was not working well for some time before we realized it
still had its protective wrapping

By the time another such workshop is held, the lecture halls are expected to be completed and fully functional. Even as-is I felt it worked quite well as a facility. The only suggestion I might have made would be for a speaker system and microphone, as even with shouting it was hard to reach people in the very back of the long room.

We finished Monday by getting Sage installed on as many machines as possible, ensuring that most attendees could run the Jupyter Notebook, and giving them an introduction to Python led by Yaé. Tuesday continued largely with more of the same, with Yaé and Evans teaching introductory Python programming (including basic types and data structures, loops and other control structures, and how to define functions), as well as some basic features of Sage itself.

At the end of each day (even as soon as Monday, though nobody volunteered on the first day) we also set aside some time for “lightning talks”. We wanted to give attendees a chance to speak to the whole group about their research problems, or just something interesting they are working on. There were too many people to give everyone an opportunity to speak, but we opened slots up so that those who wanted to could. Originally these talks were only intended to be 5 to 10 minutes each, but people were shy about signing up, and we only had about two per day. But that gave those people more time to speak and their talks were successful. I think, maybe, if we had communicated this plan to hold lightning talks further in advance, maybe more people would have been excited to try to give a talk (they are short and do not require much preparation).

Evans teaches introduction to Sage

Our original plan was that by Wednesday, attendees should break off into more interest area-specific groups and possibly work on some specific problems or group projects. In particular, Evans has introduced us to creating interactive widgets in the Jupyter Notebook, with the hope that attendees would be inspired to participate in a contest to develop the most creative and interesting interacts. However, it was clear that we needed to spend more time in the first half of the day on getting everyone up to speed on Sage and Python basics, which was well appreciated.

For the second half of Wednesday we split into four separate, parallel sessions for different topic interests:

Attendance by session: Graph theory: 11; Calculus: 34; Group theory: 11; Statistics: 18

It was good to have a representative from the GAP community, in part to drive home the point I was making that SageMath could not exist without all the technologies it is built on top of, and to give special emphasis to one of them. Similarly with R, although R is included as part of Sage, and Sage includes an interface to R, the two are less tightly coupled than Sage and GAP. Nevertheless, although Sage does have useful facilities for statistics, it has not often been the focus of most (although some) Sage developers. So this provided some of the best of both worlds for attendees who were most interested in statistical analysis.

Chimere also provided a separate report on the workshop and on what was taught in his session. It also includes a breakdown of his total expenses for travel within Nigeria (from Enugu) which may be useful information to have for planning future workshops.

Yaé teaches
Sage in analysis session

Olalekan teaches

This pattern seemed to be the most helpful to the most people, so for Thursday we repeated it: In the morning we continued the general SageMath and Python programming instruction from the tutorial notebooks we were using, and in the afternoon split into the same break-out sessions, although Olalekan was not able to attend Thursday, so most of his session’s attendees split off between the other sessions, or worked on their own.

Finally, on Friday, we spent a little more time following up with exercises that were given in the break-out sessions, following up on attendees’ questions, and giving individual help where possible. This continued most of the morning. Just before lunch, the whole class had a 30 minute Skype session with Jessica Striker, an assistant professor at North Dakota State University, and one of the organizers of the Women in Sage workshop held in Paris in 2017, also sponsored by OpenDreamKit. She spoke to us about that workshop and how it came about, as well as others like it since, and answered several questions. Although I did not get an exact gender breakdown of the attendees, based on a rough head count it was just about 33% women in attendance, if not slightly more. There was considerable interest among them in attending a workshop like this in the future. In fact, at least one woman told me that she (along with two others from Nigeria) had been accepted to attend the second Women in Sage workshop held in June of 2019 in Crete, but had been denied visas, or at least were unable to obtain them in time. If a similar workshop were held in Nigeria, or elsewhere in West Africa, it would likely be well-attended.

Attendees of all ages were welcome

We closed Friday first with a meeting with the Vice Chancellor of the University, Prof. Abel Idowu Olayinka, attended by the workshop organizers, instructors, and a few of the students. Then we had a brief but fun closing ceremony, but many people were not ready for the workshop to be over, despite losing power shortly afterwards. We continued for nearly another hour giving brief talks, and closed off by having three students present (as best they could without a projector) their submissions for the interacts contest.

Students presented their interacts


Many attendees expressed immense gratitude that we (the instructors) could come and hold this workshop. Nigeria is the largest country in Africa by population, and the seventh largest in the world, with an estimated population of about 200,000,000 in 2019, and ever growing, and the University of Ibadan is a very large university of approximately 35,000 students and 1,500 academic staff. It offers a deep well of highly motivated and talented individuals. Nevertheless, funding for research and workshops is very limited, and spread thin across the country, inhibiting opportunities for cooperation and collaboration. Several attendees also decried Nigeria’s “poor reputation” on the world stage inhibiting opportunities for funding and for international collaboration. Indeed, the number of international visitors to the University number in the dozens annually.

So opportunities like this one, for students and faculty to receive expert training on new technologies, are not nearly as frequent as they should be (even despite there being some local experts such as Chimere and Olalekan) and we tried to make as much of this one as we could.

As previously stated, we needed to spend more time bringing the whole group up to speed both on Python, and programming skills in general. Had we done a more formal pre-workshop survey we might have realized this earlier and planned more teaching time in the first place, as 70% of the attendees did not rate their programming knowledge highly (that said, this is far from a perfect measure, as different people have different internal scales for how much they think they know).

Programming knowledge prior to the workshop: 1: 34.8%; 2: 36.4%; 3: 12.1%; 4: 6.1%; 5: 10.6%

This suggests that the idea of having a more programming skills-focused Software Carpentry workshop leading into Sage Days would have been useful for many attendees. Unfortunately there was just not enough time, as that alone is typically two full days, and we wanted to get right into the mathematics as soon as possible. One of the most common suggestions/wishes we saw in exit survey was just for more time. E.g.

A little bit of days be extended for the workshop.

Increase the number of days and the instructor so that they can move at our pace and impact us better.

The number of days for the workshop should be extended to allow wider coverage of the concepts discussed and to aid assimilation

Nevertheless, people came away feeling like they learned more about Sage, which was the most important thing. We neglected to ask about GAP and R in the exit survey, but those sessions were also very energetic and engaged, and were likely similarly successful in imparting new knowledge.

Sage knowledge prior to the workshop: 1: 80%; 2: 7.7%; 3: 4.6%; 4: 6.2%; 5: 1.5%

Sage knowledge following to the workshop: 1: 0%; 2: 3.1%; 3: 44.6%; 4: 41.5%; 5: 10.8%

We also made an effort to ensure that attendees felt like they had resources to use for further learning on their own, and that they knew where to go to find help with Sage, and to remain involved in the community.

Confidence of ability to find help with and learn more about Sage: 1: 0%; 2: 0%; 3: 16.7%; 4: 47%; 5: 36.4%

These numbers are encouraging, as they give the impression that attendees of the workshop will be able to carry on their work with Sage, as well as help their classmates and colleagues get started with it: Indeed the best teachers for beginners with new software are often other beginners who have had just enough expert-guided exposure, which is why having workshops like this is so important, even if we can’t reach everybody we’d like to in a single workshop.

In the end, the majority of attendees felt strongly that the workshop was a good opportunity to build new relationships with their peers, and that what they learned and experience in the workshop would be of help to their future careers. We just need more workshops like this, and more frequently.

Met interesting people for future collaboration: 1: 0%; 2: 3.1%; 3: 10.9%; 4: 35.9%; 5: 50%

Learned things that will have an impact on future career/research: 1: 1.6%; 2: 0%; 3: 1.6%; 4: 17.2%; 5: 79.7%

Technical Notes

The discussion here is based in part on data collected in the exit survey, and in part from direct experience helping attendees install and configure Sage on their personal laptops.

One of the major challenges in the past of running Sage workshops in some parts of the world such as Africa and parts of Asia has been the overwhelming dominance of Windows on attendees personal laptops. This is a challenge, as Sage and most of the computer algebra systems it wraps were developed in the free and open-source software ecosystem, which traditionally has been oriented around UNIX-like operating systems such as GNU/Linux and BSD, as well as MacOS (which presents its own challenges, but is still compatible with POSIX, the main standard for UNIX-like OSes). Windows, however, has never been POSIX-compatible, which can make it an enormous challenge to port complex software to Windows. Thus, Windows users were long relegated to klunky and slow workarounds, such as a running Sage in a Linux virtual machine. Even this is not an option in many cases, as attendees laptops may lack–or barely meet–the hardware specifications needed to run a VM efficiently.

That situation has vastly improved since the August 2017 release of SageMath for Windows, thanks to work funded by OpenDreamKit (T3.1). This has made Sage installation on Windows 7 (64-bit) and up relatively easy, like installing any other Windows application. Performance on Windows is still lacking–in particular start-up time of Sage–especially on older machines. But once it is up and running it provides a fully usable Sage, with relatively few caveats (and continuing improvement).

Of the attendees of this workshop, almost all were using Windows as their primary OS. Four people were using Linux. Zero had MacOS. We had asked attendees to please try on their own to install SageMath before coming, so that we could have as much time as possible to help those who did not. Unfortunately very few people did this, in large part just because the SageMath installer, even while heavily compressed, is nearly 1 GB in size which was prohibitive for many attendees to download. In anticipation of this, I brought nearly two dozen USB drives, many of them pre-loaded with the Sage installers for most supported OSes. By passing these around, most attendees were quickly able to copy the installer to their computers and run it. In retrospect, before anything else, we should have led the entire class in a tutorial on this and do it all together, as there was a large-enough portion who needed help, and those who had already done it could take that opportunity to help their neighbors as well. Instead, much time was spent, especially the first two days of the workshop, on individual support. Though as some attendees learned more and got more comfortable with the software, they also began enthusiastically helping each other as we’d hoped.

Attendees worked closely with each other to overcome technical

The Sage for Windows installer has improved enough in the last year that most attendees did not encounter any problems with running the installer, or starting Sage once it was installed. By far, the largest technical challenge was presented by the plethora of different virus scanners and other PC security software installed on peoples’ computers. Sage for Windows works on top of Cygwin, the venerable POSIX emulation system for Windows. A long-known issue is that certain virus scanners can interfere with Cygwin in different ways: Sometimes that interference occurs at runtime resulting in strange bugs. Other times it happens passively: For example some virus scanners would delete files from the Sage/Cygwin installation in which it found false-positives. In almost all cases where users were experiencing strange bugs, either during installation or runtime, adding an exception for Sage to their virus scanners, or even temporarily disabling their virus scanners, would resolve the problem. So a major take-away was that we need better documentation of this issue for Sage users on Windows, and instructions for how to create exceptions for Sage in various popular virus scanners.

The other major issue was that due to technical difficulties inherent to both Windows, and the large size of Sage, the Windows version still does not work at all for 32-bit installations of Windows. We hope that the number of installed 32-bit Windows will decrease over time, but it is still more common than we would like, especially on some older laptops we saw with low amounts (2 GB) of RAM. This is even despite the machines having 64-bit CPU architectures.

For now, the only available workaround for 32-bit Windows users was to run a Linux distribution with Sage pre-installed. But rather than have them run it in a VM, they could use a “live Linux” USB drive, which boots their computer directly (without installing anything) into a Linux distribution called AIMS Desktop. Developed by the IT department of AIMS South Africa, AIMS Desktop provides a user-friendly Linux distribution designed specifically for running open source mathematics and science software, and includes a working version of Sage out-of-the-box. This allowed users to boot into a fully working and efficient OS, and start up Sage, often in as little as a minute.

Using AIMS Desktop is a double-edged sword: On one hand it puts users in a new, possibly unfamiliar computing environment, without access to all their normal programs or files (though we did have time to show some users how to access their Windows files from within AIMS Desktop). On the other hand, for explicit purpose of running software like Sage, it provides an arguably better overall user experience, and can run better than Windows on older computers, as the operating system itself is less resource-intensive. It was designed with users throughout Africa in mind, though nothing about it is specific to Africa. Of the 13 attendees who tried AIMS Desktop, at least 5 liked it enough to install it permanently on their computers, side-by-side with Windows in a dual-boot configuration. Of those we helped with AIMS Desktop installation, the installation only failed on one machine (an older Compaq laptop), which was unable to boot it after installation. Based on a count of the USB drives that were returned, at least 9 attendees also kept their AIMS Desktop USB drives, and might decide to install it later (most of them asked for permission to keep it, but this was partly the intent in bringing so many in the first place so it was expected and even hoped that people would keep them). It could even be said that those who were using AIMS Desktop were some of the most engaged, as not being on their normal Windows installations provided fewer distractions.

There were still more 32-bit Windows users than expected, however, and it was unfortunate to have to tell them that they couldn’t install Sage. It would be best if they could seek local tech support to upgrade to a 64-bit Windows, where possible. But it might also be worth re-visiting the idea of creating a 32-bit version of Sage for Windows. It’s possible that a stripped-down version of Sage, that does not work in all edge cases, but is at least good enough to run the introductory Sage tutorials, could be developed.

These issues aside, we got Sage installed on about 65 computers for people who otherwise had mostly never used Sage, and did not have reliable internet access (and will be able to share it with their friends and colleagues, as most of them kept a copy of the installer on their desktop). That alone is a big success!

Workshops and Conferences Blog SageMath Front Page WP2: Dissemination Diversity