CS 101 – Document Everything

If I hand you a black box with one unlabeled button, what do you think that box can do? How do you think the box works? Unfortunately, programs are essentially black boxes. Unless you have either written or read the entire source code, you can't really know how the system is supposed to work. This is

CS 101 – Measuring Quality

Quality often looks like a buzzword to programmers and users. What is quality, we wonder, and how can we honestly know whether a product is quality? We have three measures in the software world for quality: operability, maintainability, and transferability. Operability Operability refers to how the system operates (kind of self-explanatory). While there are many subjective

CS 101 – Modularity

In the past few posts, we have considered that programs can be composed of smaller parts. The ability to reduce a program to a collection of smaller, connected algorithms is known as modularity. Coupling When we consider a set of modules (smaller algorithms which are connected to form a program), we can consider a measure of

CS 101 – Development Models

We have discussed development of software from the point of view of the programmer and the whole lifecycle. However, we should also look at how this development appears at the management level. Waterfall This is the most hated development model, and rightly so. This development model assumes that we take each stage on in one go, work

CS 101 – Software Development

Software is a program designed to solve a problem or fill a niche. Usually, software development goes through the following phases. Analysis Before you can solve a problem, you must identify what that problem really is. We need to identify the following things if we want to make a useful product: User - Is this designed for

CS 101 – Life Cycle of a Program

Programs go through a variety of stages on the way to execution. Depending on the type of language, some steps may be added or removed to the list, but here are the stages for a compiled language like C. Problem All programs start with a problem which needs to be solved. This problem could be as

Aside – Upcoming Tools Material

Today's post describes the stages of a program's journey from problem to execution. There are many tools which make this task easier for each language and operating system. I will be posting a series on setting up efficient C, python, and Java environments for Linux and Windows. This will probably come after I feel satisfied

CS 101 – Evolution of Programming

Programming makes our lives easier, but most people don't fully understand how much easier. Programming began with gears That's right, folks. Long ago, when you wanted to do math quickly, you had to use something like an abacus or slide rule. Sure, you had geniuses like Babbage with his mechanical adding machine, but these were very

CS 101 – Recursion and Iteration

Many problems in this world require us to perform a series of steps over and over, looking for the correct result. In computer programming, we have three ways to do this. Keep it Simple Of course, if you really want to make this easy for yourself, you just write the solution as one big block. This