Source Academy
Script error: No such module "Draft topics".
Script error: No such module "AfC topic".
![]() | |
![]() 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 |
Engine | |
Operating system | web_application |
Platform | Chrome, Firefox |
Available in | English |
Type | Programming tool, integrated development environment (IDE) |
License | Apache |
Search Source Academy on Amazon.
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[edit]
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[edit]
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[edit]
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[edit]
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[edit]
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[edit]
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[edit]
- ↑ 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". International Symposium on SPLASH-E. 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.
- ↑ Anderson, Boyd; Henz, Martin; Low, Kok-Lim; Tan, Daryl (20 October 2021). "Shrinking JavaScript for CS1". International Symposium on SPLASH-E. 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.
- ↑ "Source Academy Organization". Github organization. 2020. Retrieved 2022-03-22.
- ↑ "NPM package js-slang". Source Academy. 2020. Retrieved 2022-03-22.
- ↑ "SICP on Github". Source Academy. 2020. Retrieved 2022-03-22.
- ↑ Anderson, Boyd; Henz, Martin; Tee, Hao-Wei (20 October 2021). "Ruggedizing CS1 Robotics: Tools and Approaches for Online Teaching". International Symposium on SPLASH-E. 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.
- ↑ "SVML Specification". Source Academy. 2021. Retrieved 2022-03-22.
- ↑ "Sinter virtual machine on Github". Source Academy. 2021. Retrieved 2022-03-22.
- ↑ "Source Academy modules on github". Source Academy. 2020. Retrieved 2022-03-22.
- ↑ Henz, Martin; Koh, Shang-Hui; Sounderraman, Samyukta (20 October 2021). "Teachable Moments in Functional Audio Processing". International Symposium on SPLASH-E. 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.
- ↑ "Source Academy modules documentation". Source Academy. 2020. Retrieved 2022-03-22.
- ↑ "Source Academy @ NUS". Retrieved 24 March 2022.
Sources[edit]
- 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. Search this book on
External links[edit]
- "Source Academy IDE". July 22, 2018. Retrieved March 24, 2022.
- "Source Academy (official website)". December 1, 2021. Retrieved March 24, 2022.
This article "Source Academy" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Source Academy. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.