Memory, data and instruction representation
We start our exploration of data representations with some introductory videos about memory and data storage. This is a very initial step to understand how our computer machines work: in the first video, a (simple) schematic representation of a computer machine is presented. Some concepts are treated very quickly in this video, but don't worry, we'll come back and discuss them in more details during our course.
Please notice that the physical description given in the video is for information only: it will not be part of the evaluations. Moreover, in several videos we'll be watching, there is a reference to both C and Java programming languages: as you may recall, the assignments for this course are exclusively in Java. It is however important for a computer scientist to know the pointed-out differences between the two languages.
In this second video, we explore the concepts of bit, byte and data word.
We continue with the concepts of data pointers and addresses, and on the different ways we can interpret a piece of data stored in the computer memory.
Please notice that, in the original lecture given by Prof. Borriello, there are two additional videos where the addresses and pointers are explained in practice for the C programming language. As you know, instead, the reference programming language for our course is instead Java: you can watch this video for information, as well as the following one about arrays, but consider that only a little of what it is said is also true in Java.
In the next video, we explore how to make boolean algebra with the data words introduced in the previous videos. Notice that a boolean value can be represented with only one bit, and therefore several boolean values can be stored in a byte, or even in a longer data word.
Consider that the bitwise operators, that are introduced in this video for the C programming language, are also available in Java. When the logic operations are performed over boolean values with the operations && and ||, Java optimizes them in a way that the second operand is not evaluated when the expression can be evaluated only by taking into consideration the first one... Please try to figure this out by yourself.
The following video introduces the representation of integer numbers, and in particular the two's complement representation of negative integers.
This video is about the floating-point representation of real numbers.
We are not supposed to see many details of this representation, watching this introductory video is sufficient for the purposes of our course. However, the interested student can watch the additional videos that are automatically suggested by YouTube after having watched this initial one.
In the next video, we give a close look at how the CPU works. We have already studied the way the computer memory can store information. But what about the instructions to be executed? Yes, they are also encoded as sequences of bits! In this video, we discover the several steps necessary to run a small program in the computer's CPU.
Careful: Carrie Anne Philbin speaks quite fast, don't hesitate to pause and rewind her videos if some of the concepts are not immediately clear to you. And don't worry if you won't remember in detail the instructions presented in the example. The most important for you is to have a realistic view of how things actually work inside the CPU.
And to end this initial part of our course, we may ask ourselves the following question: How the CPU is able to perform the operations? To look for an answer to this question, we watch another video extracted from the Crash Course in Computer Science.
The binary representations that we have studied in the previous videos can be in fact treated by applying to them sequences of binary operators. The complexity of these operators depends on the instructions to be executed, and on the complexity of the data representation. They can nevertheless be seen as combinations of the very simple logic operators (encoded by logic gates) that are presented in this last video. These logic gates are at the core of CPUs.