'Most introductory books on programming frustrate me to no end. At the end of them you can still ask "how does the computer really work?" and not have a good answer. They tend to pass over topics that are difficult even though they are important. I will take you through the difficult issues because that is the only way to move on to masterful programming. My goal is to take you from knowing nothing about programming to understanding how to think, write, and learn like a programmer. You won’t know everything, but you will have a background for how everything fits together. At the end of this book, you should be able to do the following: • Understand how a program works and interacts with other programs • Read other people’s programs and learn how they work • Learn new programming languages quickly • Learn advanced concepts in computer science quickly I will not teach you everything. Computer science is a massive field, especially when you combine the theory with the practice of computer programming. However, I will attempt to get you started on the foundations so you can easily go wherever you want afterwards. There is somewhat of a chicken and egg problem in teaching programming, especially assembly language. There is a lot to learn - it’s almost too much to learn almost at once, but each piece 1Chapter 1. Introduction depends on all the others. Therefore, you must be patient with yourself and the computer while learning to program. If you don’t understand something the first time, reread it. If you still don’t understand it, it is sometimes best to take it by faith and come back to it later. Often after more exposure to programming the ideas will make more sense. Don’t get discouraged. It’s a long climb, but very worthwhile. At the end of each chapter are three sets of review exercises. The first set is more or less regurgitation - they check to see if can you give back what you learned in the chapter. The second set contains application questions - they check to see if you can apply what you learned to solve problems. The final set is to see if you are capable of broadening your horizons. Some of these questions may not be answerable until later in the book, but they give you some things to think about. Other questions require some research into outside sources to discover the answer. Still others require you to simply analyze your options and explain a best solution. Many of the questions don’t have right or wrong answers, but that doesn’t mean they are unimportant. Learning the issues involved in programming, learning how to research answers, and learning how to look ahead are all a major part of a programmer’s work.'
Franco Giustozzi (Faculty)
Muy buen material!