For over 15 years, the mlpack machine learning library has served as a "swiss army knife" for C++-based machine learning. Its efficient implementations of common and cutting-edge machine learning algorithms have been used in a wide variety of scientific and industrial applications. This paper overviews mlpack 4, a significant upgrade over its predecessor. The library has been significantly refactored and redesigned to facilitate an easier prototyping-to-deployment pipeline, including bindings to other languages (Python, Julia, R, Go, and the command line) that allow prototyping to be seamlessly performed in environments other than C++. mlpack is open-source software, distributed under the permissive 3-clause BSD license; it can be obtained at https://mlpack.org
PrairieLearn is an open source, extensible online assessment platform built on modern web technologies. In this workshop, we will focus on how PrairieLearn can be used to improve student learning in undergraduate computer science classes. However, the platform is also more than suitable for use as an assessment engine in a variety of courses including the humanities, social, physical, and life sciences. In the first part of the workshop, we will showcase multiple question styles that highlight PrairieLearn's abilities as an online platform, including deploying automatically and manually graded questions at scale in large classes. In the second part of the workshop, we will discuss the anatomy of a PrairieLearn question, create several custom questions, and design assessments in PrairieLearn. In the third part, we will share strategies on adopting PrairieLearn at your institution. In particular, how algorithmically generated questions can be used in support of alternative grading schemes such as Mastery- or Specifications-Grading. Finally, we will share how PrairieLearn can be extended to support other coding languages and paradigms with custom and external autograders. There will be plenty of opportunities for questions throughout the workshop, and we intend to leave plenty of time for additional 1:1 support and training. Attendees will be able to attend the session virtually and are recommended to bring a web-connected computing device. By the end of the session, attendees will know enough to run a whole class on PrairieLearn including designing questions appropriate for homework, labs, and tests.
This note shows how to use Redis cache (near-)real-time market data, and utilise its publish/subscribe ("pub/sub") facility to distribute the data.
This note provides a brief introduction to Redis highlighting its usefulness in multi-lingual statistical computing.
Pre-compiled binary packages provide a convenient way of efficiently distributing software that has been adopted by most Linux package management systems. However, the heterogeneity of the Linux ecosystem, combined with the growing number of R extensions available, poses a scalability problem. As a result, efforts to bring binary R packages to Linux have been scattered, and lack a proper mechanism to fully integrate them with R's package manager. This work reviews past and present of binary distribution for Linux, and presents a path forward by showcasing the `cran2copr' project, an RPM-based proof-of-concept implementation of an automated scalable binary distribution system with the capability of building, maintaining and distributing thousands of packages, while providing a portable and extensible bridge to the system package manager.
Parallel computing has established itself as another standard method for applied research and data analysis. The R system, being internally constrained to mostly singly-threaded operations, can nevertheless be used along with different parallel computing approaches. This brief review covers OpenMP and Intel TBB at the cpu- and compiler level, moves to process-parallel approaches before discussing message-passing parallelism and big data technologies for parallel processing such as Spark, Docker and Kubernetes before concluding with a focus on the future package integrating many of these approaches.
The Rocker Project provides widely used Docker images for R across different application scenarios. This article surveys downstream projects that build upon the Rocker Project images and presents the current state of R packages for managing Docker images and controlling containers. These use cases cover diverse topics such as package development, reproducible research, collaborative work, cloud-based data processing, and production deployment of services. The variety of applications demonstrates the power of the Rocker Project specifically and containerisation in general. Across the diverse ways to use containers, we identified common themes: reproducible environments, scalability and efficiency, and portability across clouds. We conclude that the current growth and diversification of use cases is likely to continue its positive impact, but see the need for consolidating the Rockerverse ecosystem of packages, developing common practices for applications, and exploring alternative containerisation software.
We describe how we both use and extend the PrarieLearn framework by taking advantage of its built-in support for external auto-graders. By using a custom Docker container, we can match our course requirements perfectly. Moreover, by relying on the flexibility of the interface we can customize our Docker container. A specific extension for unit testing is described which creates context-dependent difference between student answers and reference solution providing a more comprehensive response at test time.