Robert Elder Software Inc.
  • Home
  • Store
  • Blog
  • Contact
  • Home
  • Store
  • Blog
  • Contact
  • #linux
  • |
  • #commandline
  • |
  • #softwareengineering
  • |
  • #embeddedsystems
  • |
  • #compilers
  • ...
  • View All >>

Introducing Feedback Oriented Programming

2016-09-27 - By Robert Elder

     Dec 12, 2019 Update:  This piece of software is no longer available as I have turned it off due to lack of interest.  The article below used to contain a number of links which I have removed.  The content below remains only for archival purposes.

     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.

How To Try It Out

     You can find the install instructions here.

Details

     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.

The Content

     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 robert@robertelder.org 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.

The Future

     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.


Silently Corrupting an Eclipse Workspace:  The Ultimate Prank
Silently Corrupting an Eclipse Workspace: The Ultimate Prank
Published 2017-03-23
Terminal Block Mining Simulation Game
$1.00 CAD
Terminal Block Mining Simulation Game
XKCD's StackSort Implemented In A Vim Regex
XKCD's StackSort Implemented In A Vim Regex
Published 2016-03-17
What is SSH?  Linux Commands For Beginners
What is SSH? Linux Commands For Beginners
Published 2017-04-30
What is Git and Why Is It Useful?
What is Git and Why Is It Useful?
Published 2016-12-15
Strange Corners of C
Strange Corners of C
Published 2015-05-25
Virtual Memory With 256 Bytes of RAM - Interactive Demo
Virtual Memory With 256 Bytes of RAM - Interactive Demo
Published 2016-01-10
Can You Use 'ed' As A Drop-in Replacement For vim, grep & sed?
Can You Use 'ed' As A Drop-in Replacement For vim, grep & sed?
Published 2020-10-15
Join My Mailing List
Privacy Policy
Why Bother Subscribing?
  • Free Software/Engineering Content. I publish all of my educational content publicly for free so everybody can make use of it.  Why bother signing up for a paid 'course', when you can just sign up for this email list?
  • Read about cool new products that I'm building. How do I make money? Glad you asked!  You'll get some emails with examples of things that I sell.  You might even get some business ideas of your own :)
  • People actually like this email list. I know that sounds crazy, because who actually subscribes to email lists these days, right?  Well, some do, and if you end up not liking it, I give you permission to unsubscribe and mark it as spam.
© 2025 Robert Elder Software Inc.
SocialSocialSocialSocialSocialSocialSocial
Privacy Policy      Store Policies      Terms of Use