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 -
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.
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
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.
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 -
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
If you are interested in the author's detailed history you can click here for more reading.
- Acknowledgments -
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.