Bacona Design
Course sections
Section one covers the tools you will need to build many applications. I begin with command-line tools, to show you a graphic user interface is not required to do serious work. Section one introduces data structures such as linked lists and trees. It also covers sorting and searching algorithms. Then it concludes by using those tools to build a keypad driven database system.
Section two covers the Windows graphic user interface set of tools. I have written windowing code under Macintosh, Linux, and Windows operating systems. Currently, the Win32 techniques are more compact, and easier to use. Linux, and now Macintosh, operating systems have many different windowing systems, but none of them are as easy to use as those under Windows. Simple line drawing examples are followed by more complex graphical representations. Some of the lessons paint the entire display window pixel by pixel. Scaling transformations and color palettes are used and explained. The keyboard and mouse are used to interact with the program in many of the lessons. This section gives you enough tools, and examples, to build some interesting, and useful tools for the graphic user interface. A few of these lessons are about applications I use daily.
Section three demonstrates more complex algorithms, using command-line examples, with a few lessons implementing artificial intelligence. There are more sorting and searching examples, as well as a graph application, a queue simulation, socket programming, plus a two dimensional data structure called a quad tree. The techniques and tools discussed in part three are necessary to write the applications in section four.
Section four combines what was introduced in sections one, two, and three to craft more complex, graphical examples. Lesson S4L1 displays a 3D geodesic sphere, with hidden faces and shading. Lesson S4L2 explains how the geodesic sphere data set was created. Lessons S4L3 and S4L4 explore the concept of taking up space. While it is fairly simple to give an imaginary ball mass, it is more complex to have that ball take up its own space. S4L5 is an ecology application. It uses genetic algorithms to breed plants, herbivores, and carnivores. The fitness function is simple: survival. The survivors get to pass their genes on to the future. Lesson S4L6 rewrites the 3D system using a set of vector/matrix tools. It is easier to write a system to control more complex scenes, on a frame by frame basis, with these new tools. S4L7 is almost ready. It is a lesson on creating the 8 frequency geodesic data set and how to cull excess nodes. S4L8 is a work in progress, rewriting Ecology to use menus and dialog box controls, to allow changing the environment on the fly. This lesson will also express more of the genes on the Plant, Herbivore, and Carnivore chromosomes. S4L9 expands upon lesson S4L6, by adding threading to our 3D engine. It has an object catalog, and uses a threaded system to increase the drawing speed of multiple, interacting objects, each with independent motions. S4L10 continues work developing the 3D graphics engine. It displays an antenna radiation pattern as a 3 dimensional solid, whose variables are controlled from the user interface.