The Fundamentals of Self-Programming

The Fundamentals of Self-Programming: A Beginner’s Guide

By Cory Althoff


Hello! I’m Cory Althoff, and I’ve been programming since my early childhood days. For me, it was always a passion to learn new things and make something with them. One day while playing around with some code online, I came across a very interesting topic called “self-programming”.

It seemed like it could be useful for anyone, but especially beginners. So I decided to write this guide on how to do it yourself.

Self-programming is when you program something without any prior experience or knowledge of the computer language in which you’re working. You might think that this would require a lot of time and effort, but actually it isn’t too hard if you have the right tools at hand.

What is Self-Taught Programming?

If you’re not familiar with what self-taught programming entails, then read up on it here. Basically, you’re taking a piece of software (or even a whole operating system) and learning how to program it from scratch. Once you are done, you can share your work with others through the internet. This way they don’t need to spend money on a commercial product and can get their hands on the same thing for free.

Why Learn to do it Yourself?

There are several reasons why someone would like to learn how to do self-taught programming:

The first reason is quite obvious. People want the freedom to use their software however they see fit. If there is a bug in the software that you need fixed, then you can do that yourself and release the fixed version online. This can be done for many different reasons, such as a new feature, a change in how the software works, or even a complete re-write of the code so it is cleaner and more efficient.

Learning how to program opens up your eyes to see things from a different angle. You begin to understand why certain things are done in software and how anyone can create something from scratch. It’s not just for computer geeks!

The Fundamentals of Self-Programming - Picture

Finally, it’s fun! It’s an art to be able to think up something from nothing and then bring it to life through writing code. Even if you don’t plan on becoming a professional software developer, the knowledge can come in very handy at times. For example, let’s say you need a simple program that does something specific.

Instead of hiring someone to make it for you (which would probably cost more money), you can do it yourself in a matter of hours or days.

What’s the Best Language to Learn?

There are many different types of self-taught programming languages, such as C, C++, C#, Java, Visual Basic .NET and more. They all have their ups and downsides, but I’m just going to cover some of the most popular ones in this guide.


C is usually considered the “father” of all other programming languages. It’s a very bare-bones language that only allows you to do the most basic of functions. If you’re going to learn any language, make it C.


C++ is based off of the original C programming language. It improves on some of its weaknesses and makes it much easier to program in general. It’s a favorite among many programmers for this reason.


Java is based off of C and is actually very similar to it. The main difference is that Java is not a system-level language. What this means is that you can’t create applications that run directly on your computer. Instead, you have to distribute the Java Runtime Environment (JRE) alongside your program for it to work.

What is Assembly?

Assembly is not a programming language in and of itself, it’s just a very low-leveled one. That means you only have very limited resources to do what you want. It’s not really recommended for beginners, but if you really want to try it out, you can download a free emulator that allows you to write and test assembly programs online. There are also alternatives to writing in assembly, such as writing in C and then compiling it into assembly.

Where to Start?

I’m going to be teaching you how to program using C as the main language. But even before that, you’re going to need a few tools first!

You need to download and install an Integrated Development Environment (IDE) to help you write and compile your source code. One of the more popular ones for Windows users is Dev-C++. Mac users can use a program called “Monkey” and Linux users usually just use GCC or some other thing that comes with the OS.

The Fundamentals of Self-Programming - Picture

Then you need a text editor to write your code in outside of the IDE. Note that the built-in editor that usually comes with the IDE will suffice if you want a simple text editor. Some popular ones you can Google and download are Notepad++ and TextMate.

You also need to learn the basics of the C programming language and math. No, I’m not kidding!

Remember when I said that programming requires logical thinking?

Well, that also means you need a solid foundation in the basics of math. You don’t need to be an expert at algebra and calculus, but you should be comfortable with things like defining variables, using logic operators and writing simple functions. If you need to brush up on these things, you can find tutorials for them online.

Start Learning!

Now that you have all the tools you need, it’s time to learn how to actually write code! I highly recommend that you write code every day. You don’t necessarily need to write large programs, in fact you shouldn’t when you first start out. Instead, just focus on writing small pieces of code every day.

Eventually these pieces will come together to form your larger programs.

These are some additional links that I recommend to beginners:

Codecademy – By far the easiest way to learn how to program. Just make sure to do the lessons on the site.

CodeTuts – A great place for beginners to learn the basics of many different languages.

Programr – Learn by solving programming problems that people have submitted.

The Fundamentals of Self-Programming - Picture

GitHub – Learn by github walkthrough projects that other people have created.

Khan Academy – Pretty much a more in depth Codecademy, but not exactly the best way to learn.

Happy coding!

Sources & references used in this article:

Self-Programming of the Tool Trajectory in CNC Lathes by VA Timiryazev, MZ Khostikoev, VN Konoplev… – Russian Engineering …, 2019 – Springer

Aerodynamic Analysis and Trajectory Correction Control for One-dimensional Trajectory Correctional Projectile by P Wasiewicz

Self-Programmable PID compensator for digitally controlled SMPS by DH Parker – … in Programs and Procedures for College …, 1963 – National Reading Conference

10. Prolegomena to Evolutionary Programming by Z Wei, T Lang, J Wu – Journal of Projectiles, Rockets, Missiles and …, 2013 –

Discussion on six-step approach of programming courses in vocational colleges by Z Zhao, A Prodi, P Mattavelli – 2006 IEEE Workshops on …, 2006 –

Reasoning with computer code: A new mathematical logic by M Conrad – Advances in Cognitive Science: Steps toward …, 2019 –

Automatic onboard and online modelling of modular and self-reconfigurable robots by S Du, X Zhang – Knowledge Discovery and Data Mining, 2012 – Springer

Lily: A miniature floating robotic platform for programmable stochastic self-assembly by S Pissanetzky – Journal of Artificial General Intelligence, 2013 –