Organization:Source Academy

From HandWiki
Short description: Software development environment
Source Academy
Sourcepower.png
Sourceacademyscreenshot.png
Screenshot of Source Academy, factorial example
Developer(s)Source Academy Organization
Initial releaseCadet / 31 July 2018; 5 years ago (2018-07-31)
Stable release
Rook / 31 December 2021; 2 years ago (2021-12-31)
Written inTypeScript
Operating systemweb application
PlatformChrome, Firefox
Available inEnglish
TypeProgramming tool, integrated development environment (IDE)
LicenseApache

Source Academy is a web-based open-source integrated development environment (IDE) used for teaching computer programming in the programming languages JavaScript and Source, developed for the textbook Structure and Interpretation of Computer Programs, JavaScript Edition (SICP JS). In addition to JavaScript, it implements the JavaScript sublanguages Source §1, Source §2, Source §3, and Source §4, which are designed to be just expressive enough to support all examples of the respective chapter of the textbook. The IDE supports the main mental models for program evaluation of SICP JS with custom-built debugging tools: the substitution model with a stepper tool,[1] and the environment model with an environment model visualizer.[2]

Licensing

Source Academy is released by the Source Academy Organization under an Apache license.[3] The SICP JS textbook (integrated in Source Academy) is released under a Creative Commons license, and the programs in SICP JS are covered by the GNU General Public License Version 3.

Releases

Since 2018, Source Academy saw a major release every two years.

Version name Date Main changes
Cadet July 2018 -
Knight January 2020 Advanced editing features, stepper, environment model visualizer
Rook December 2021 Modules, full-JavaScript support, SICP JS integration

Architecture

Source Academy is a web application developed in TypeScript using React JS. The programming language implementations are factored out into a separate Node.js package called js-slang.[4] The sections of the interactive edition of SICP JS are dynamically loaded from the textbook repository.[5]

Robotics

Source Academy provides extensive support for robotics programming, using a compiler to a virtual machine language SVML and an automated workflow for running compiled robot control software on a virtual machine deployed on the robot.[6] The virtual machine for SVML is ported to the Android and EV3 operating systems.[7][8]

Modules

Source Academy supports the dynamic loading of JavaScript modules from trusted modules repositories[9] using JavaScript's import syntax. For example, the sound module allows the programming of additive functional audio processing,[10] and the modules rune, curve, and pix_n_flix support online graphics and video stream processing.[11]

Extension

Source Academy @ NUS is an extension of Source Academy designed for teaching courses based on SICP JS.[12] It features an Elixir-based backend for keeping track of student submissions of exercise assignments, and for manual and automated grading of submissions. A system for storing and visualizing student achievements and an optional graphic-novel-style game enhance student motivation. Instructors can create new courses, manage students and staff for their courses, and upload exercise assignments.

References

  1. Henz, Martin; Tan, Thomas; Chua, Zachary; Jung, Peter; Tan, Yee-Jian; Zhang, Xinyi; Zhao, Jingjing (20 October 2021). "A Stepper for a Functional JavaScript Sublanguage". Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E (SPLASH-E 2021). New York, NY: ACM SIGPLAN. pp. 65-70. doi:10.1145/3484272.3484968. https://dl.acm.org/doi/10.1145/3484272.3484968. 
  2. Anderson, Boyd; Henz, Martin; Low, Kok-Lim; Tan, Daryl (20 October 2021). "Shrinking JavaScript for CS1". Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E (SPLASH-E 2021). New York, NY: ACM SIGPLAN. pp. 65-70. doi:10.1145/3484272.3484970. https://dl.acm.org/doi/10.1145/3484272.3484970. 
  3. "Source Academy Organization". Github organization. 2020. https://github.com/source-academy. 
  4. "NPM package js-slang". Source Academy. 2020. https://www.npmjs.com/package/js-slang. 
  5. "SICP on Github". Source Academy. 2020. https://github.com/source-academy/sicp. 
  6. Anderson, Boyd; Henz, Martin; Tee, Hao-Wei (20 October 2021). "Ruggedizing CS1 Robotics: Tools and Approaches for Online Teaching". Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E (SPLASH-E 2021). New York, NY: ACM SIGPLAN. pp. 65-70. doi:10.1145/3484272.3484969. https://dl.acm.org/doi/10.1145/3484272.3484969. 
  7. "SVML Specification". Source Academy. 2021. https://github.com/source-academy/js-slang/wiki/SVML-Specification. 
  8. "Sinter virtual machine on Github". Source Academy. 2021. https://github.com/source-academy/sinter. 
  9. "Source Academy modules on github". Source Academy. 2020. https://github.com/source-academy/modules. 
  10. Henz, Martin; Koh, Shang-Hui; Sounderraman, Samyukta (20 October 2021). "Teachable Moments in Functional Audio Processing". Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E (SPLASH-E 2021). New York, NY: ACM SIGPLAN. pp. 65-70. doi:10.1145/3484272.3484967. https://dl.acm.org/doi/10.1145/3484272.3484967. 
  11. "Source Academy modules documentation". Source Academy. 2020. https://source-academy.github.io/modules/documentation. 
  12. "Source Academy @ NUS". https://sourceacademy.nus.edu.sg. 

Sources

External links