CSC 216 Introduction
This course assumes that you have some programming background. It starts with a high-level language, “C,” and then later will migrate to C++. Some of the content you will have seen, or it may be very familiar to you. If you stick with it, you will gain some knowledge and understanding of all topics. No one is a complete master. Programming is not about making your code hard for someone to read and understand. It is about making your code easy for someone to follow the algorithm and recognize its correctness. Code that is jumbled and hard to read is difficult to debug.
There are many high-level languages in our industry. C is a very common and well-used language. C was the language at the forefront with which OSes were written before being compiled. C and C++ are still very popular today. Both of these languages require writing code in a text editor and then compiling and linking the code to an executable.
I. Basics of Programming
Programming – the PC is actually just a brick sitting there. It only understands two things. A One and a Zero. It is when the programmer combines them together to form instructions that the CPU knows what to do. Many instructions can be combined to accomplish a task. This task is known as an algorithm. The algorithm should be repeatable and produce the same results again and again without error. If it can not it is said to have a bug.
Higher-Level Languages – 10010001000000000000110000000001 is an instruction on a 32 bit machine. In assembly this instruction is add x1, x0, #3 or add 3 to the register x0 and store it in x1. In a high level language such as C a programmer might write the same thing using variables instead of registers like value = data + 3; the line value = data + 3; is easier for us to read. In the end, the high level language is compiled down to the same assembly instruction.
Operating Systems – provide us with many small programs that allow us to interact with the computer. There are several flavors: Mac (OSX), Linux, Microsoft (Windows), Google (Android).
Compiling Programs – many compilers exist for taking the source code that is written and converting it into instructions that the computer can execute. Each language has its own compiler. A language can have several compilers. C and C++ have many: GNU, clang, bloodshed, Visual Studio, Objective-C, just to name a few.

Integrated Development Environments (IDE) are environments that are set up specifically for developers to code in a specific language or project. They help the developer accomplish the task quickly. Some are very complex, and some are just a little more than an editor. We will be using Vim or Emacs and later some other tools. Both are text-based editors.

Language Interpreters – Some languages are not compiled to an executable to are interpreted. Python, PHP, JavaScript. These are examples of interpreted languages. They usually run slower than compiled programs