Organization:Source Academy
Screenshot of Source Academy, factorial example | |
Developer(s) | Source Academy Organization |
---|---|
Initial release | Cadet / 31 July 2018 |
Stable release | Rook
/ 31 December 2021 |
Written in | TypeScript |
Operating system | web application |
Platform | Chrome, Firefox |
Available in | English |
Type | Programming tool, integrated development environment (IDE) |
License | Apache |
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
- ↑ 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.
- ↑ 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.
- ↑ "Source Academy Organization". Github organization. 2020. https://github.com/source-academy.
- ↑ "NPM package js-slang". Source Academy. 2020. https://www.npmjs.com/package/js-slang.
- ↑ "SICP on Github". Source Academy. 2020. https://github.com/source-academy/sicp.
- ↑ 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.
- ↑ "SVML Specification". Source Academy. 2021. https://github.com/source-academy/js-slang/wiki/SVML-Specification.
- ↑ "Sinter virtual machine on Github". Source Academy. 2021. https://github.com/source-academy/sinter.
- ↑ "Source Academy modules on github". Source Academy. 2020. https://github.com/source-academy/modules.
- ↑ 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.
- ↑ "Source Academy modules documentation". Source Academy. 2020. https://source-academy.github.io/modules/documentation.
- ↑ "Source Academy @ NUS". https://sourceacademy.nus.edu.sg.
Sources
- Abelson, Harold; Sussman, Gerald Jay; Henz, Martin; Wrigstad, Tobias (12 April 2022). Structure and Interpretation of Computer Programs, JavaScript Edition. MIT Press. p. 640. ISBN 9780262543231. https://mitpress.mit.edu/books/structure-and-interpretation-computer-programs-1.
External links
- "Source Academy IDE". July 22, 2018. https://sourceacademy.org/.
- "Source Academy (official website)". December 1, 2021. https://about.sourceacademy.org/.