Bacona Design
Lesson Structure
Part I introduces the application discussed in the lesson. Any new algorithms are described, and any new language features explained.
Part II lists all the functions used in this application. I describe why each function is used, and why a specific algorithm was chosen.
Part III is where you use the code. First, run the makefile script to build the executable file. Then run the code to see what it does. If there are menus, or dialog boxes, use them. If there are hot keys try them, to see what they do. If you need to create input, type away. There is little error checking so if you try odd inputs, then odd behavior will follow. You can trap errors yourself to learn how. I have some examples, but for these lessons I trust the user (me) not to make mistakes.
Part IV is where I describe the code on a line by line basis. Open all the files necessary to build this application with your editor. Follow along as you read the function descriptions.
Part V describes the makefile used to create the executable file. Each rule is explained during this sequence of lessons. Makefile variables, and macros used are interpreted for you. I use macros often, while I tend not to use makefile variables. The makefile is where you have a catalog of all the files necessary to build your executable file. You will see more streamlined, and more readable, makefiles as the course proceeds.
Part VI takes things a little deeper. I describe the problem I was trying to solve, as well as design details of my solution. A little history, and design philosophy pop up too.
Part VII has assignments which you should attempt. Some of them are quite simple, a number of them require moderate effort, while a few of them could lead to dissertation work. I advise you to complete as many assignments as you can. The best way to learn how to write software is to write more software. Modifying the code I give you is only a start. Learn the broad strokes, so you can design and write your own code to solve any problem you find interesting.
Part VIII links are for when you need another perspective on the subjects covered, or any function you do not quite understand. I have collected quite a few from a variety of sources. Please use them for the diagrams for algorithms, or data structures. I could redraw things here, but it is better you have more than one source for information throughout this course. As you are reading through the code you may find commands you do not understand. Follow the links to the various sites I use while I am writing code.