About    About This Course    About

You made it! Whether you've been bitten by the programming bug or are just curious about creating your own software you've come to the right place. This course has been designed to be fun and educational no matter what your programming skill level is. If you are new to programming then get ready to be taken on a journey of exploration as you discover your potential for creation. I'll never forget the day I wrote my very first program and the feeling of accomplishment that came over me. That's the day the programming bug bit me and it's my hope that this course does the same for you.

- Expected Outcomes -

The focus of this course is on the beginner to programming with an emphasis on coding for games. This course is not designed to turn you into a game programmer, but instead introduce you to the concepts of computer programming. Game design was chosen as the theme for the course to make it more engaging and to keep the interest level high throughout the various tasks. A good game programmer has taken the time to hone their programming skills and make many mistakes along the way and a great game programmer has turned those mistakes into learning opportunities. How long does this process take? Well, that depends on the individual's drive, patience and perseverance. What I want you to remember throughout this course is that learning to program a computer takes time and the results you achieve will be in direct proportion to the effort you put into it. If you play a musical instrument then you already know what this means.

Why QB64?

Some of you familiar with programming are surely asking yourself why learn such a simple language? Most games today are written in modern dialects of C++, Objective-C, C# or a similar language with an emphasis on object oriented programming, right? I firmly believe that the high attrition rate of programming courses in college is because aspiring programmers are hit with too much, too quick. I know of a local college that uses their Visual Basic course as a filter to weed out students from their CIS program. They purposely take a difficult language to learn and use it as a tool to make programming look like it's only for a select few. Furthermore, they fuel the notion in people's minds that programming is too hard and you need to be some sort of math genius or high IQ elite to master it. The first sentence of this paragraph contained a key word this course strives to do, make programming simple. Learning a procedural language like QB64 allows the budding programmer to learn what programming is at the core; the code, the design process and flow control. Concepts such as instantiating objects will come much easier to a new programmer if they already have an idea of what code design is to begin with.

Many attempts have been made to make the learning curve of programming easier to master. Projects such as MIT's Scratch, Microsoft's Kodu and TouchDevelop and Carnegie Mellon's Alice provide environments where students use an interactive interface with an emphasis on immediate feedback. These tools do a great job of providing instant feedback based on their environment but I believe these tools give an unrealistic view of what programming is. Take away the interactive environment and instant feedback, put the student in front of language such as C or Java and you have a student wondering why they can't just drag and drop elements on the screen to get an instant program. "Hey, programming isn't this fun, interactive drag and drop world I thought it was after all. I have to learn a myriad of commands and actually type them in using a keyboard?"  Even after using these tools there's that too much, too quick again. I don't understand where this notion came about that students today need instant results to keep them entertained and in turn focused? I believe this type of thinking simply sets them up for failure later on. Programming is a process, a difficult process, but one that can be mastered with time, patience and perseverance.

What do I want you to get from this course?

- Programming is a set of commands that need to be learned.
- Programming is best learned little bits at a time, instant results are rare.
- You learn more from a program you wrote that doesn't work from one that does.
- Debugging a program is a part of every programmer's process.
- You will not be great programmer after this course, but you'll be on your way.
- You will not create world class games after this course.
- Yes, you can learn programming!
- No, you don't need to be a math genius to succeed at programming.
- Programming takes time, patience and perseverance (can't stress this enough).
- If you don't find programming stimulating and fun, it's probably not for you.

In short I want you to understand that learning to program is a process, at times a seemingly difficult process, but one that can be learned if you give yourself the chance. Don't give up!

- How to use this tutorial/course -

The first few tasks walk you through every aspect of what to do next. For example, you'll be told to save piece of example code after typing it in during the first few tasks. But eventually the tasks will walk you through the little details less and less, expecting that you've learned when you should save your code. The course contains many links to outside recources explaining concepts that may be unfamiliar to you as you've seen in the "Why QB64" paragraph above. USE THESE LINKS TO YOUR ADVANTAGE! The more you understand the terminology, phraseology and technical concepts behind the code you write the better programmer you will be. In other words the programmer's mind is a curious mind and one that craves knowledge every step of the way.

Try to type the code examples in as much as possible instead of copying and pasting them into the programming environment you will be introduced to. You need to get a feel for what it's like to type code in manually. Many commands use odd punctuation in seemingly strange ways and the only method of getting used to them is to type them in over and over until they become second nature. Some of the code examples, especially those in the advanced tasks, can get rather lengthy and it's understandable if you copy and paste those. On the topic of lengthy code; do not let the size of a program's source code scare you. Take each line of code one at time and break it down until you understand it. If you are sitting in a classroom with an instructor do not hesitate to ask all the questions you need to gain an understanding of a concept. Your instructor loves programming and is more than willing to help you. If you are a not in a classroom environment and using this course don't hesitate to ask the QB64 community for help at their forum. They have a topic area devoted to beginner programmers and you will never be belittled for wanting to learn their beloved language. Whether you are in a classroom or not I encourage you to create an account on their forum and get involved. There's a lot of knowledge sitting there for you to absorb from the forum posts and members alike.

Play with the example code as much as possible. Don't just type the example code in, execute it and then move on. Take the time to understand what the code is doing and write your own code using the course's examples as a basis. If there is a command in the example code that has not been covered yet then get curious. Use the alphabetical command listing in the Wiki to get an overview of what the command does. You'll eventually get to the command in a later task and when you do you'll be more prepared for it. Collaberate with your fellow coders, either in the classroom or at the QB64 forum or both. If you are having difficulty with a concept chances are one of your fellow coders did as well and can help you through the process.

- About the author -

Terrance Ritchie is currently employed as a computer science instructor for a technical high school located in Ohio teaching CompTIA A+, CCNA and computer programming to high school juniors. He has been programming computers in one form or another since 1980 at the age of 13. Throughout his career he has been employed as an Aviation Electronics Technician, Database Programmer, Computer Technician, System's Administrator, Computer Programmer, CNC programmer, MasterCAM Designer and PLC Programmer.

If you are interested in the author's detailed history you can click here for more reading.

- Acknowledgments -

This course would not be possible without the work that Rob, aka Galleon, has done in creating QB64. Thank you! A huge thank you goes out to Ted Weisenberger, aka Clippy, for his excellent work on the QB64 Wiki. I would also like to thank the QB64 community for their help and support over the years while using QB64.

And finally, to my family, who have listened to the tappety, tap, tap of my keyboard over the last 6 months but never complained.