Computer Brain Surgery: Programming How-To’s
Computer programs, such as the word-processing software your students use to type their reports or the organizational database you use for the computation of their grades take a lot of skill and intelligence.
To be a computer programmer means a lot of hard work, studying and actual programming, but its results (aside from becoming a sought-after human resource) are worth it.
Here are some personal skills needed for beginners in programming:
Debugging is one of the main things a programmer does. It literally means to remove errors, but it also involves scrutinizing a program and finding out how effectively it runs. Sometimes, debugging might entail actually modifying the codes, and it scares away most beginner programmers. But the key to debugging is being detail-oriented, and once a programmer is used to it, the mystery and the lure of problem-solving kicks in.
Dealing with performance problems matters just as much as the debugging. Understanding or even writing a code does not guarantee it will run smoothly. There are still other software systems the beginner programmer cannot see or control.
If, for example, one wants to make a system run faster, a mental model of why it is slow in the first place should be built first with the use of profiling tools or logs. Once the Input/Output expense (I/O) or where most of the resources and time go when a program runs is determined, then it is easy to improve the performance of even the most complicated systems.
Improving the I/O Expense is the cost of communicating with a hardware device, including network cost, disk I/O, database queries, file I/O and other hardware far from the processor.
Improving the I/O then means being able to build a faster system. This can be done through two very basic techniques: caching and representation. The former means storing a copy of some abstract value locally so the computer avoids I/O (identifying which data is the master and which are the copies), and the latter efficiently represents data through binary representation, among others.
If any of your students are truly interested in the world of programming, here are some links for more advanced programming techniques.
Structure and Interpretation of Computer Programs – a textbook for Massachusetts Institute of Technology’s introductory computer science subject
Programming Languages: Application and Interpretation – a textbook used by Brown University
The Programmers' Stone – the Art of Computer Programming
Practical Theory of Programming
Software Engineering for Internet Applications – advanced computer science with programming languages, standards and protocols
How to Design Programs
Introduction to machine learning – Artificial intelligence
Handbook of Algorithms and Data Structures – on the most efficient algorithms for various tasks
BABEL: A Glossary of Computer Oriented Abbreviations and Acronyms - by Irving Kind
Sources:
“Free books on technology subjects.” Retrieved October 8, 2008 from
http://www.techbooksforfree.com/
Read, Robert. “How to be a Programmer: A Short, Comprehensive, and Personal Summary.”
Retrieved October 8, 2008 from http://samizdat.mines.edu/howto/HowToBeAProgrammer.html#id2790282
(Published 20 October 2008, Smart Communications, Inc.)