Skip to content
Image with logo, providing a link to the home page
  • United Stated of America flag, representing the option for the English language.
  • Bandeira do Brasil, simbolizando a opção pelo idioma Português do Brasil.


This page is available in the following languages:

Recursion in Nature: Tree Generator

Parts of nature show recursive behaviors. A possible example is a tree, on which branches defined subbranches. The following customizable script can generate sketches of trees. Depending on the chosen parameters, the resulting image can resemble a tree (or degenerate into seemingly chaotic lines).

Illustration of the tree that has been generated with the provided parameters.

This example shows that, besides traditional systems, programming can be used to generate art (for instance, there are fields of study such as Generative Art and Procedural Content Generation).

Social Networks and Videos

If you wish to be informed about this website's content updates, you can subscribe to the following social networks:

Furthermore, the author has started producing videos to complement the text entries. You can find them at the YouTube channel.


One of the goals of this website is providing high quality programming material. Would you like to learn programming, or improve your abilities of designing and implementing systems? The following topics provide written material to learn programming.

The author has a doctorate (PhD) in Computer Science. To know more about the author, you can access the section About.

Online Text and Code Editors

If you wish to try programming without installing programs in your computer, you can use one of the following editors in your browser:Although they are not as complete feature-wise than installed environments, they can be useful for the first steps.

Learn Programming

Introductory programming material, focused on computational thinking, fundamentals, techniques, and the procedural and imperative programming paradigms. Along the entries, you will start learning how to think and solve problems like a programmer, exploring concepts and features of programming languages to create programs. You will also better understand how a computer works.

Examples in JavaScript, Python, Lua, GDScript (Godot Engine), Scratch and Flowgorithm.

  1. Introduction;
  2. Entry point and program structure;
  3. Output (for console or terminal);
  4. Data types;
  5. Variables and constants;
  6. Input (for console or terminal);
  7. Arithmetic and basic Mathematics;
  8. Relational operations and comparisons;
  9. Logic operations and Boolean Algebra;
  10. Conditional (or selection) structures;
  11. Subroutines: functions and procedures;
  12. Repetition structures (or loops);
  13. Arrays, collections and data structures;
  14. Records (structs);
  15. Files and serialization (marshalling);
  16. Libraries;
  17. Command line input;
  18. Bitwise operations;
  19. Tests and debugging.

Ideas, Rules, Simulation

Project-based based on projects of interactive simulations and digital games to learn programming.

  1. Motivation;
  2. Introduction: Window and Hello World;
  3. Pixels and drawing primitives (points, lines, and arcs);
  4. Randomness and noise;
  5. Coins and dice, rectangles and squares;
  6. Drawing with drawing primitives (strokes and fillings for circles, ellipses and polygons);
  7. Saving and loading image files;
  8. ...

This material is a work in progress; therefore, if you have arrived early and the previous items do not have links, please return to this page to check out updates.

Potential Future Topics

The material provided in Learn Programming can serve as base for more advanced topics in the future.

  • Tools for Programming (Debuggers, Profilers, Version Control Systems);
  • Low-Level Programming;
  • Object-Oriented Programming;
  • Functional Programming;
  • Logic Programming;
  • Digital Game and Simulation Programming;
  • Procedural Content Generation;
  • Web Development (back-end);
  • Data Structures;
  • Design Patterns and Software Architectures;
  • Automation;
  • Accessibility and Digital Inclusion.

Content writing is subject to time availability of the author and the interest of the community.

Under Development

Web system to teach and learn programming, focused on problem-solving and examples with progressive dificult.

Topic by topic, the goal is the development of abilities and skills to solve problems using programming languages.

The material is complimentary to Learn Programming, with examples in algorithms (pseudocode), Python, C and C++.

Informatics for Programming

Before starting programming, it is worth possessing some basic Informatics skills. The following topics provide training for basic activities related to programming.

File Systems

Programmers must know the basics of file systems to create the directory structure of the project, as well as source code files. Basic abilities include knowing how to create, rename, move and delete files and directories, and understanding paths and how they work.

Development Environments

As with other creative crafts, programming requires tools. Many operating systems do not come with compilers, interpreters, and high quality text editors preinstalled. As such, it is important learning how to install and configure programs, as well as set up a development environment.

In particular, the topics regarding the configuration of development environments for each language provide common examples. This allows, for instance, comparing implementations in different languages for a very same programming feature or resource.

Contact Franco Eusébio Garcia

If you wish to contact me or have any questions, you can chat with me by:

Information about contact and social networks are also available at the footer of every page.