So, to review, I'm teaching AP CSP. About 40% of the course is supposed to cover programming and algorithms, and they publish their own pseudocode language, since the language the course is taught in is left to the instructor. As you might expect, the pseudocode is very imperative, mutative, and sort of like dumbed-down Java or C.
I've actually written (following Beautiful Racket) a #lang that handles this language, although the indentation and error messages could be much better. GitHub - toddobryan/apcsp-pseudocode: An implementation of APCSP pseudocode as a DSL in DrRacket
Here's the reference sheet on the language: https://apcentral.collegeboard.org/media/pdf/ap-computer-science-principles-exam-reference-sheet.pdf (which you may be able to see once CloudFlare is fixed).
I would really like to create my own customized version of teaching languages. Like most of us, I'm very opinionated about what I think works best with my students and how I need to teach content given the requirements of the AP course.
Here's the thing. I've spent about 10 hours over the last couple of days looking at both the htdp and deinprogramm repositories as models, and I'm just lost. So much of how things work is based on convention and while the docs are excellent, they seem to assume you have a general understanding of how everything works and just need to remind yourself about particular concepts. For example, I only discovered last night that signature means two things--one in relation to units and another in the teaching languages.
Would someone be willing to take me by the hand and walk me through this endeavor? My problems are myriad--I can only work on this for an hour or two at a time, except on weekends; I'm by no means a proficient Racketeer; and, I occasionally have to abandon what I'm doing for several days to deal with things like creating tests and grading assignments.
We could either do this on here as a series of messages or as email chain that I'd be happy to post a summary of back here.
What I'd eventually like to have is a progression of languages that I could do
#lang apcsp/pseudocode
#lang apcsp/bsl
#lang apcsp/isl
but in the spirit of iterative development, I'd just like to focus on #lang apcsp which would be my customized version of BSL.