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
Published 2017-03-23 |
$1.00 CAD |
XKCD's StackSort Implemented In A Vim Regex
Published 2016-03-17 |
What is SSH? Linux Commands For Beginners
Published 2017-04-30 |
What is Git and Why Is It Useful?
Published 2016-12-15 |
Strange Corners of C
Published 2015-05-25 |
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?
Published 2020-10-15 |
Join My Mailing List Privacy Policy |
Why Bother Subscribing?
|