SlideShare a Scribd company logo
1 of 22
Download to read offline
Interactive C++ code development using C++Explorer
and GitHub Classroom for educational purposes1
Patrick Diehl and Steven R. Brandt
Louisiana State Univeristy
pdiehl@cct.lsu.edu, sbrandt@cct.lsu.edu
March, 2022
1
Paper: https://doi.org/10.1002/cpe.6893, Preprint: https://doi.org/10.35542/osf.io/5te23
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 1 / 21
Motivation
Providing a complete
installation to the students
without the burden of the setup.
Interactive C++ development,
to more rapidly experiment with
different ideas/algorithms.
Introduction to version control
using GitHub classroom
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 2 / 21
Overview
1 Prior Work
2 Setup
3 Interactive Modes
4 Survey
5 Conclusion & Outlook
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 3 / 21
Prior Work
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 4 / 21
Prior Work
GitHub Classroom is widely used in many disciplines, e.g. computer
science, engineering, physics, etc. [4]
JupyterHub/Notebooks are likewise widely used in teaching multiple
disciplines, e.g. meterology, physics, data science, etc. [1, 3–7]
No education papers using Cling exist so far?
Certainly no papers combining these three technologies. 2
2
Steven R. Brandt has used these technologies for tutorials at Supercomputing in
2015 and 2017.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 5 / 21
Setup
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 6 / 21
Setup - Installation
Run a notebook:
S="https://raw.githubusercontent.com/stevenrbrandt"
curl -L $S/CxxExplorer/master/docker-compose.yml
# Edit docker-compose.yml
docker-compose up -d
Run a server:
S="https://raw.githubusercontent.com/stevenrbrandt"
curl -L $S/CxxExplorer/master/docker-compose.server.yml
# Edit docker-compose.server.yml
docker-compose -f docker-compose.server.yml up -d
Create Your Own Login server
OAuth with GitHub — This plugin complements our choice of using
GitHub Classroom.
Can use an accept list to limit users (useful for web-based teaching)
Can use a “secret word” to limit users (useful for in-person teaching)
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 7 / 21
Setup - C++ Packages
Cling — A C++ interpreter developed at CERN as a tool for
scientists working on the Large Hadron Collider.
HPX — A parallel programming framework developed for general
purpose programming, both of nodes and clusters. Contains
implementations of the latest C++ standards (and proposed
standards) for parallel algorithms.
Blaze — High Performance C++ Math, includes vectorization and
parallel execution. Completely portable.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 8 / 21
Setup - Docker Image
Installation of Cling is not trivial
Installation of HPX is not trivial
Special options needed to work with Cling
Special options to work on 64+ cores
Pre-compiled docker image is about 8GB
Build on your server git clone
https://github.com/stevenrbrandt/CxxExplorer.git
# Edit docker-compose.build.yml
docker-compose -f docker-compose.build.yml build --pull
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 9 / 21
Interactive Modes
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 10 / 21
Cling Notebooks
Lets students play with C++ code fragments.
Seeing std::cout << "Hello, world" << std::endl; work is
surreal!
Notebooks extended with %%writefile and %%bash magics.
Bad
Limited by “one definition rule.”
No support for threadlocal in the underlying LLVM means
std::async won’t work, but hpx::async will.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 11 / 21
Cling Magic
New interface to Cling
Use Cling from a Python
notebook
replay() function to restore
state if it’s lost for some reason
Pass string data between C++
and Python
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 12 / 21
Pybind11
Cling is based on Clang version
5.0.0
Maybe you want a newer
compiler?
Idea, provide C++ code in a
doc comment on a Python
function, use a decorator to
extract and compile the code.
Link to Python with Pybind11.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 13 / 21
Telegram bot
Execute C++
code snippets
from your phone.
Perform simple
plots.
Run your own
bot from your
laptop or desktop
machine.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 14 / 21
Survey
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 15 / 21
Selected results
Somewhat easy
25%
Very easy
25%
moderate
25%
easy
25%
(a) How difficult was it to set up git?
From start
50%
First quarter
25%
Third quarter
25%
(b) When did you start using the
notebook?
Figure: Selected survey results: (a) usage of git and GitHub Classroom and (b)
start of the usage of the notebooks . Additional results and the raw data is
available here [2].
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 16 / 21
Selected results
Strongly agree
25%
Agree 50%
Neutral
25%
(a) I used the server/notebook often.
moderate
50%
Strongly agree
25%
Agree
25%
(b) I liked the notebook as an editor.
Figure: Selected survey results: (a) frequency of the usage of the notebooks and
(b) acceptance of the notebook as an editor . Additional results and the raw data
is available here [2].
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 16 / 21
Conclusion & Outlook
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 17 / 21
Conclusion & Outlook
Conclusion
A novel teaching environment adapted to teaching parallel C++
programming and source code management
Extensions to the utilized tools to make the notebooks richer and the
interactive experience more complete.
Student’s feedback was mostly positive, but from a small group
Outlook
Add the requested feature, if possible, to the C++Explorer
Redo the survey in the fall 2020 class with 10 students
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 18 / 21
Open source and open teaching content
Note that we published the C++Explorer on GitHub and the course
material under a creative common license.
C++Explorer3
Examples for the described usage4
Lecture slides5
Exercises6
Course notes7
Feel free to use the C++Explorer and course material in your teaching.
3
https://github.com/stevenrbrandt/CxxExplorer
4
https://github.com/diehlpk/gateways2020
5
https://github.com/diehlpkteaching/ParallelComputationMath
6
https://github.com/diehlpkteaching/ParallelComputationMathExercise
7
https://github.com/diehlpkteaching/ParallelComputationMathScript
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 19 / 21
References
[1] Miguel A Angulo and Ozgur Aktunc. Using github as a teaching tool for
programming courses. In ASEE Gulf-Southwest Section Annual Meeting 2018
Papers. American Society for Engineering Education, 2019.
[2] Patrick Diehl and Steven R. Brandt. Survey results: Parallel comp math fall 2019,
March 2020.
[3] Jacob Fiksel, Leah R Jager, Johannna S Hardin, and Margaret A Taub. Using github
classroom to teach statistics. Journal of Statistics Education, 27(2):110–119, 2019.
[4] Courtney Hsing and Vanessa Gennarelli. Using github in the classroom predicts
student learning outcomes and classroom experiences: Findings from a survey of
students and teachers. In Proceedings of the 50th ACM Technical Symposium on
Computer Science Education, pages 672–678, 2019.
[5] John Kelleher. Employing git in the classroom. In 2014 World Congress on
Computer Applications and Information Systems (WCCAIS), pages 1–4. IEEE, 2014.
[6] Csaba-Zoltán Kertész. Using github in the classroom-a collaborative learning
experience. In 2015 IEEE 21st International Symposium for Design and Technology
in Electronic Packaging (SIITME), pages 381–386. IEEE, 2015.
[7] Alexey Zagalsky, Joseph Feliciano, Margaret-Anne Storey, Yiyun Zhao, and Weiliang
Wang. The emergence of github as a collaborative platform for education. In
Proceedings of the 18th ACM Conference on Computer Supported Cooperative
Work & Social Computing, pages 1906–1917, 2015.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 20 / 21
This work is licensed under a Creative
Commons “Attribution-NonCommercial-
NoDerivatives 4.0 International” license.
Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 21 / 21

More Related Content

Similar to Interactive C++ code development using C++Explorer and GitHub Classroom for educational purposes

Robot Builders Guide
Robot Builders GuideRobot Builders Guide
Robot Builders GuideGerry Ismanto
 
1.introduction_to_bigdata_chap1.pdf
1.introduction_to_bigdata_chap1.pdf1.introduction_to_bigdata_chap1.pdf
1.introduction_to_bigdata_chap1.pdfAlexanderKyalo3
 
The (r)evolution of CI/CD on GitHub
 The (r)evolution of CI/CD on GitHub The (r)evolution of CI/CD on GitHub
The (r)evolution of CI/CD on GitHubTom Mens
 
capturing the impact of software AAS 2017
capturing the impact of software AAS 2017capturing the impact of software AAS 2017
capturing the impact of software AAS 2017Heather Piwowar
 
ACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdfACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdftuxinhui1
 
Alberto_Cappa_Resume_V3.pdf
Alberto_Cappa_Resume_V3.pdfAlberto_Cappa_Resume_V3.pdf
Alberto_Cappa_Resume_V3.pdfAlbertoCappa1
 
Efficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIEfficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIMatthias Trapp
 
_OOP with JAVA Solution Manual (1).pdf
_OOP with JAVA Solution Manual (1).pdf_OOP with JAVA Solution Manual (1).pdf
_OOP with JAVA Solution Manual (1).pdfvanithagp1
 
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...Christoph Matthies
 
Data Sharing, Distribution and Updating Using Social Coding Community Github ...
Data Sharing, Distribution and Updating Using Social Coding Community Github ...Data Sharing, Distribution and Updating Using Social Coding Community Github ...
Data Sharing, Distribution and Updating Using Social Coding Community Github ...Universität Salzburg
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectMarkus Neteler
 
GDSC Orientation 2023 Updated.pptx
GDSC Orientation 2023 Updated.pptxGDSC Orientation 2023 Updated.pptx
GDSC Orientation 2023 Updated.pptxRajanCrown
 
GDSC Orientation 2023 .pptx
GDSC Orientation 2023 .pptxGDSC Orientation 2023 .pptx
GDSC Orientation 2023 .pptxRajanCrown
 
Primers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewPrimers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewDelft University of Technology
 
Building a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsBuilding a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsHal Speed
 
Building a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsBuilding a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsWeTeach_CS
 

Similar to Interactive C++ code development using C++Explorer and GitHub Classroom for educational purposes (20)

Robot Builders Guide
Robot Builders GuideRobot Builders Guide
Robot Builders Guide
 
1.introduction_to_bigdata_chap1.pdf
1.introduction_to_bigdata_chap1.pdf1.introduction_to_bigdata_chap1.pdf
1.introduction_to_bigdata_chap1.pdf
 
Cirad Concours
Cirad ConcoursCirad Concours
Cirad Concours
 
The (r)evolution of CI/CD on GitHub
 The (r)evolution of CI/CD on GitHub The (r)evolution of CI/CD on GitHub
The (r)evolution of CI/CD on GitHub
 
capturing the impact of software AAS 2017
capturing the impact of software AAS 2017capturing the impact of software AAS 2017
capturing the impact of software AAS 2017
 
ACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdfACL-2022_tutorial_part_AB_V8 (1).pdf
ACL-2022_tutorial_part_AB_V8 (1).pdf
 
Alberto_Cappa_Resume_V3.pdf
Alberto_Cappa_Resume_V3.pdfAlberto_Cappa_Resume_V3.pdf
Alberto_Cappa_Resume_V3.pdf
 
Efficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIEfficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL API
 
Justin White Resume
Justin White ResumeJustin White Resume
Justin White Resume
 
_OOP with JAVA Solution Manual (1).pdf
_OOP with JAVA Solution Manual (1).pdf_OOP with JAVA Solution Manual (1).pdf
_OOP with JAVA Solution Manual (1).pdf
 
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...
 
Data Sharing, Distribution and Updating Using Social Coding Community Github ...
Data Sharing, Distribution and Updating Using Social Coding Community Github ...Data Sharing, Distribution and Updating Using Social Coding Community Github ...
Data Sharing, Distribution and Updating Using Social Coding Community Github ...
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS project
 
GDSC Orientation 2023 Updated.pptx
GDSC Orientation 2023 Updated.pptxGDSC Orientation 2023 Updated.pptx
GDSC Orientation 2023 Updated.pptx
 
GDSC Orientation 2023 .pptx
GDSC Orientation 2023 .pptxGDSC Orientation 2023 .pptx
GDSC Orientation 2023 .pptx
 
Primers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewPrimers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code Review
 
Edu 741 tech outline
Edu 741 tech outlineEdu 741 tech outline
Edu 741 tech outline
 
Building a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsBuilding a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for Endorsements
 
Building a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for EndorsementsBuilding a Computer Science Pathway for Endorsements
Building a Computer Science Pathway for Endorsements
 
Gitbook FAQs
Gitbook FAQsGitbook FAQs
Gitbook FAQs
 

More from Patrick Diehl

Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-TigerEvaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-TigerPatrick Diehl
 
Is RISC-V ready for HPC workload? Maybe?
Is RISC-V ready for HPC workload? Maybe?Is RISC-V ready for HPC workload? Maybe?
Is RISC-V ready for HPC workload? Maybe?Patrick Diehl
 
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-TigerEvaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-TigerPatrick Diehl
 
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and Tools
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and ToolsD-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and Tools
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and ToolsPatrick Diehl
 
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...Patrick Diehl
 
Subtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondSubtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondPatrick Diehl
 
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in Fortran
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in FortranFramework for Extensible, Asynchronous Task Scheduling (FEATS) in Fortran
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in FortranPatrick Diehl
 
JOSS and FLOSS for science: Examples for promoting open source software and s...
JOSS and FLOSS for science: Examples for promoting open source software and s...JOSS and FLOSS for science: Examples for promoting open source software and s...
JOSS and FLOSS for science: Examples for promoting open source software and s...Patrick Diehl
 
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer Fugaku
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer FugakuSimulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer Fugaku
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer FugakuPatrick Diehl
 
A tale of two approaches for coupling nonlocal and local models
A tale of two approaches for coupling nonlocal and local modelsA tale of two approaches for coupling nonlocal and local models
A tale of two approaches for coupling nonlocal and local modelsPatrick Diehl
 
Recent developments in HPX and Octo-Tiger
Recent developments in HPX and Octo-TigerRecent developments in HPX and Octo-Tiger
Recent developments in HPX and Octo-TigerPatrick Diehl
 
Challenges for coupling approaches for classical linear elasticity and bond-b...
Challenges for coupling approaches for classical linear elasticity and bond-b...Challenges for coupling approaches for classical linear elasticity and bond-b...
Challenges for coupling approaches for classical linear elasticity and bond-b...Patrick Diehl
 
Quantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchQuantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchPatrick Diehl
 
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...Porting our astrophysics application to Arm64FX and adding Arm64FX support us...
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...Patrick Diehl
 
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...An asynchronous and task-based implementation of peridynamics utilizing HPX—t...
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...Patrick Diehl
 
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...Patrick Diehl
 
A review of benchmark experiments for the validation of peridynamics models
A review of benchmark experiments for the validation of peridynamics modelsA review of benchmark experiments for the validation of peridynamics models
A review of benchmark experiments for the validation of peridynamics modelsPatrick Diehl
 
On the treatment of boundary conditions for bond-based peridynamic models
On the treatment of boundary conditions for bond-based peridynamic modelsOn the treatment of boundary conditions for bond-based peridynamic models
On the treatment of boundary conditions for bond-based peridynamic modelsPatrick Diehl
 
EMI 2021 - A comparative review of peridynamics and phase-field models for en...
EMI 2021 - A comparative review of peridynamics and phase-field models for en...EMI 2021 - A comparative review of peridynamics and phase-field models for en...
EMI 2021 - A comparative review of peridynamics and phase-field models for en...Patrick Diehl
 
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...Patrick Diehl
 

More from Patrick Diehl (20)

Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-TigerEvaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V using an Astrophysics Application Octo-Tiger
 
Is RISC-V ready for HPC workload? Maybe?
Is RISC-V ready for HPC workload? Maybe?Is RISC-V ready for HPC workload? Maybe?
Is RISC-V ready for HPC workload? Maybe?
 
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-TigerEvaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-Tiger
Evaluating HPX and Kokkos on RISC-V Using an Astrophysics Application Octo-Tiger
 
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and Tools
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and ToolsD-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and Tools
D-HPC Workshop Panel : S4PST: Stewardship of Programming Systems and Tools
 
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HP...
 
Subtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff HammondSubtle Asynchrony by Jeff Hammond
Subtle Asynchrony by Jeff Hammond
 
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in Fortran
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in FortranFramework for Extensible, Asynchronous Task Scheduling (FEATS) in Fortran
Framework for Extensible, Asynchronous Task Scheduling (FEATS) in Fortran
 
JOSS and FLOSS for science: Examples for promoting open source software and s...
JOSS and FLOSS for science: Examples for promoting open source software and s...JOSS and FLOSS for science: Examples for promoting open source software and s...
JOSS and FLOSS for science: Examples for promoting open source software and s...
 
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer Fugaku
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer FugakuSimulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer Fugaku
Simulating Stellar Merger using HPX/Kokkos on A64FX on Supercomputer Fugaku
 
A tale of two approaches for coupling nonlocal and local models
A tale of two approaches for coupling nonlocal and local modelsA tale of two approaches for coupling nonlocal and local models
A tale of two approaches for coupling nonlocal and local models
 
Recent developments in HPX and Octo-Tiger
Recent developments in HPX and Octo-TigerRecent developments in HPX and Octo-Tiger
Recent developments in HPX and Octo-Tiger
 
Challenges for coupling approaches for classical linear elasticity and bond-b...
Challenges for coupling approaches for classical linear elasticity and bond-b...Challenges for coupling approaches for classical linear elasticity and bond-b...
Challenges for coupling approaches for classical linear elasticity and bond-b...
 
Quantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchQuantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task Bench
 
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...Porting our astrophysics application to Arm64FX and adding Arm64FX support us...
Porting our astrophysics application to Arm64FX and adding Arm64FX support us...
 
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...An asynchronous and task-based implementation of peridynamics utilizing HPX—t...
An asynchronous and task-based implementation of peridynamics utilizing HPX—t...
 
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...
Quasistatic Fracture using Nonliner-Nonlocal Elastostatics with an Analytic T...
 
A review of benchmark experiments for the validation of peridynamics models
A review of benchmark experiments for the validation of peridynamics modelsA review of benchmark experiments for the validation of peridynamics models
A review of benchmark experiments for the validation of peridynamics models
 
On the treatment of boundary conditions for bond-based peridynamic models
On the treatment of boundary conditions for bond-based peridynamic modelsOn the treatment of boundary conditions for bond-based peridynamic models
On the treatment of boundary conditions for bond-based peridynamic models
 
EMI 2021 - A comparative review of peridynamics and phase-field models for en...
EMI 2021 - A comparative review of peridynamics and phase-field models for en...EMI 2021 - A comparative review of peridynamics and phase-field models for en...
EMI 2021 - A comparative review of peridynamics and phase-field models for en...
 
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...
Google Summer of Code mentor summit 2020 - Session 2 - Open Science and Open ...
 

Recently uploaded

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

Interactive C++ code development using C++Explorer and GitHub Classroom for educational purposes

  • 1. Interactive C++ code development using C++Explorer and GitHub Classroom for educational purposes1 Patrick Diehl and Steven R. Brandt Louisiana State Univeristy pdiehl@cct.lsu.edu, sbrandt@cct.lsu.edu March, 2022 1 Paper: https://doi.org/10.1002/cpe.6893, Preprint: https://doi.org/10.35542/osf.io/5te23 Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 1 / 21
  • 2. Motivation Providing a complete installation to the students without the burden of the setup. Interactive C++ development, to more rapidly experiment with different ideas/algorithms. Introduction to version control using GitHub classroom Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 2 / 21
  • 3. Overview 1 Prior Work 2 Setup 3 Interactive Modes 4 Survey 5 Conclusion & Outlook Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 3 / 21
  • 4. Prior Work Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 4 / 21
  • 5. Prior Work GitHub Classroom is widely used in many disciplines, e.g. computer science, engineering, physics, etc. [4] JupyterHub/Notebooks are likewise widely used in teaching multiple disciplines, e.g. meterology, physics, data science, etc. [1, 3–7] No education papers using Cling exist so far? Certainly no papers combining these three technologies. 2 2 Steven R. Brandt has used these technologies for tutorials at Supercomputing in 2015 and 2017. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 5 / 21
  • 6. Setup Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 6 / 21
  • 7. Setup - Installation Run a notebook: S="https://raw.githubusercontent.com/stevenrbrandt" curl -L $S/CxxExplorer/master/docker-compose.yml # Edit docker-compose.yml docker-compose up -d Run a server: S="https://raw.githubusercontent.com/stevenrbrandt" curl -L $S/CxxExplorer/master/docker-compose.server.yml # Edit docker-compose.server.yml docker-compose -f docker-compose.server.yml up -d Create Your Own Login server OAuth with GitHub — This plugin complements our choice of using GitHub Classroom. Can use an accept list to limit users (useful for web-based teaching) Can use a “secret word” to limit users (useful for in-person teaching) Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 7 / 21
  • 8. Setup - C++ Packages Cling — A C++ interpreter developed at CERN as a tool for scientists working on the Large Hadron Collider. HPX — A parallel programming framework developed for general purpose programming, both of nodes and clusters. Contains implementations of the latest C++ standards (and proposed standards) for parallel algorithms. Blaze — High Performance C++ Math, includes vectorization and parallel execution. Completely portable. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 8 / 21
  • 9. Setup - Docker Image Installation of Cling is not trivial Installation of HPX is not trivial Special options needed to work with Cling Special options to work on 64+ cores Pre-compiled docker image is about 8GB Build on your server git clone https://github.com/stevenrbrandt/CxxExplorer.git # Edit docker-compose.build.yml docker-compose -f docker-compose.build.yml build --pull Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 9 / 21
  • 10. Interactive Modes Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 10 / 21
  • 11. Cling Notebooks Lets students play with C++ code fragments. Seeing std::cout << "Hello, world" << std::endl; work is surreal! Notebooks extended with %%writefile and %%bash magics. Bad Limited by “one definition rule.” No support for threadlocal in the underlying LLVM means std::async won’t work, but hpx::async will. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 11 / 21
  • 12. Cling Magic New interface to Cling Use Cling from a Python notebook replay() function to restore state if it’s lost for some reason Pass string data between C++ and Python Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 12 / 21
  • 13. Pybind11 Cling is based on Clang version 5.0.0 Maybe you want a newer compiler? Idea, provide C++ code in a doc comment on a Python function, use a decorator to extract and compile the code. Link to Python with Pybind11. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 13 / 21
  • 14. Telegram bot Execute C++ code snippets from your phone. Perform simple plots. Run your own bot from your laptop or desktop machine. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 14 / 21
  • 15. Survey Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 15 / 21
  • 16. Selected results Somewhat easy 25% Very easy 25% moderate 25% easy 25% (a) How difficult was it to set up git? From start 50% First quarter 25% Third quarter 25% (b) When did you start using the notebook? Figure: Selected survey results: (a) usage of git and GitHub Classroom and (b) start of the usage of the notebooks . Additional results and the raw data is available here [2]. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 16 / 21
  • 17. Selected results Strongly agree 25% Agree 50% Neutral 25% (a) I used the server/notebook often. moderate 50% Strongly agree 25% Agree 25% (b) I liked the notebook as an editor. Figure: Selected survey results: (a) frequency of the usage of the notebooks and (b) acceptance of the notebook as an editor . Additional results and the raw data is available here [2]. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 16 / 21
  • 18. Conclusion & Outlook Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 17 / 21
  • 19. Conclusion & Outlook Conclusion A novel teaching environment adapted to teaching parallel C++ programming and source code management Extensions to the utilized tools to make the notebooks richer and the interactive experience more complete. Student’s feedback was mostly positive, but from a small group Outlook Add the requested feature, if possible, to the C++Explorer Redo the survey in the fall 2020 class with 10 students Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 18 / 21
  • 20. Open source and open teaching content Note that we published the C++Explorer on GitHub and the course material under a creative common license. C++Explorer3 Examples for the described usage4 Lecture slides5 Exercises6 Course notes7 Feel free to use the C++Explorer and course material in your teaching. 3 https://github.com/stevenrbrandt/CxxExplorer 4 https://github.com/diehlpk/gateways2020 5 https://github.com/diehlpkteaching/ParallelComputationMath 6 https://github.com/diehlpkteaching/ParallelComputationMathExercise 7 https://github.com/diehlpkteaching/ParallelComputationMathScript Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 19 / 21
  • 21. References [1] Miguel A Angulo and Ozgur Aktunc. Using github as a teaching tool for programming courses. In ASEE Gulf-Southwest Section Annual Meeting 2018 Papers. American Society for Engineering Education, 2019. [2] Patrick Diehl and Steven R. Brandt. Survey results: Parallel comp math fall 2019, March 2020. [3] Jacob Fiksel, Leah R Jager, Johannna S Hardin, and Margaret A Taub. Using github classroom to teach statistics. Journal of Statistics Education, 27(2):110–119, 2019. [4] Courtney Hsing and Vanessa Gennarelli. Using github in the classroom predicts student learning outcomes and classroom experiences: Findings from a survey of students and teachers. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education, pages 672–678, 2019. [5] John Kelleher. Employing git in the classroom. In 2014 World Congress on Computer Applications and Information Systems (WCCAIS), pages 1–4. IEEE, 2014. [6] Csaba-Zoltán Kertész. Using github in the classroom-a collaborative learning experience. In 2015 IEEE 21st International Symposium for Design and Technology in Electronic Packaging (SIITME), pages 381–386. IEEE, 2015. [7] Alexey Zagalsky, Joseph Feliciano, Margaret-Anne Storey, Yiyun Zhao, and Weiliang Wang. The emergence of github as a collaborative platform for education. In Proceedings of the 18th ACM Conference on Computer Supported Cooperative Work & Social Computing, pages 1906–1917, 2015. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 20 / 21
  • 22. This work is licensed under a Creative Commons “Attribution-NonCommercial- NoDerivatives 4.0 International” license. Patrick Diehl and Steven R. Brandt (LSU) C++Explorer and GitHub classroom March, 2022 21 / 21