I am pleased to announce a new type of resource for learning how to program: Feedback Oriented Programming using the Robert Elder Software Linux operating system. This OS consists of a customized GNU/Linux environment that also includes many hooks that aide in guiding new users around various Linux programming related tasks, such as creating, editing or moving files, C programming and more. Before you get too excited, I should point out that this is mostly a proof of concept with limited coverage of basic commands and a few short programming tasks.
There are a lot of ideas to communicate here, so let's go through some of them in point form:
Giving Feedback, writing real code, and using real commands is the #1 thesis of this project.
Instead of readings and lectures, you get problem-specific search terms when appropriate which you can look up on your own.
Assignments mark themselves and provide instant feedback.
Users download a virtual machine image file.
Boot it up within a few minutes and get guided around the Linux command prompt.
Emphasis on Linux commands and C programming tasks.
As mentioned above, the emphasis is on use of the command line in a Linux based environment. There are a lot of amazing things you can do on the command line, but when you just have a blank screen with a cursor flashing at you, it's hard to discover them. The other aspect is about getting good feedback on the commands you type and the programs you write. After you write your code, it can be automatically unit tested against the reference solution, and a colourized diff is presented.
As you work through the material, certain actions you take (such as encountering an error, or performing a task), will update an anonymous public 'activity feed' (Example Activity Feed) that links you directly to the search queries you need to learn more about any problems you have.
I should also mention that there isn't as much learning content that comes with the current release of the OS as I'd like. This is mostly because I want to get a bit more feedback on what content to create first to put my time in the best place. Send an email to email@example.com if you have requests.
Currently, there is a very beginner section on simply learning how to type the various programming characters that new users haven't ever heard of, such as '|' or '~' (that may seem unnecessary, but it's definitely not). There is also a brief section on standard Linux commands like ls, cd, pwd, etc. Next, a couple tasks to edit a file with nano, and commit to a repo using git. Finally, there is a short section on C expressions.
Depending on how much interest this concept generates, I have many ideas about adding more advanced course content, as well as creating more intricate guides that will take you though more in-depth activities inside command line applications.