Class Overview

I assume that since you are here, you want to learn how to program a computer. This will take a lot of work. Therefore, I want to make sure that you understand that this is a serious class, not a place to goof off or play games on the Internet. A lot of people wanted to be in this class and didn't get in. If you aren't doing the work, your spot in the class will be given to someone else.

This class, and any sort of computer programming in general, requires a good understanding of mathematics, and an ability to read and comprehend well what you read. It also requires a very basic familiarity with computers: you should know how to work with files on a computer and how to use a web browser. Other than that, very little is required. You should be able to keep up with the work no matter what year you are; I don't ask you to do any advanced math, except occasionally as a bonus problem.

Most of the class time will be spent working on assignments. Hands-on experience is far better than a lecture for learning programming. I'm not going to bore you with a lot of terminology defining what Java is, what a programming language is, and so forth. Nor am I going to try to explain what exactly it is that a computer does with the instructions that you give it. I'll just introduce enough vocabulary for us to be able to talk about the things we need to deal with to write code. You'll gain a much better understanding of these things just by working with them than you would from a lecture about them.

In the end, this class will merely give you a very simple taste of programming. To become a really good programmer took me about ten years, and there aren't any shortcuts.

I've tried to make the assignments fun; rather than just doing something simple like multiplying numbers together, your programs will be games and other interactive Java applets. Most of the assignments, especially early on, will ask you to write some piece of a program, rather than the whole program. So, for example, rather than asking you to write a complete space shooter game, I might ask you to write the code that describes how lasers move and interact with other objects. I hope that by the end of the year you will be able to write an applet like this from the ground up, so that you will be able to do a final project making a game or other program designed entirely by you.

I hope that you will enjoy this class very much, and that you will end the year with a lot of new skills and the capability to learn more on your own.

This file, and everything else you need for the class, can be found on the course website: