Jonathan Bartlett
2005-02-07 16:43:20 UTC
I'm teaching at our local community college as an adjunct. They have an
"intro to programming" class which teaches flow charting, logic, and
design principles for new programmers, using mostly pseudo-code rather
than actual programs.
Anyway, being a believer in knowing assembly language, I decided to put
together a computer simulation. I "designed" a simplified computer (25
instructions - add, subtract, load, store, divide, jump, and jump
conditional, with a few different addressing modes for each of them). I
had them simulate being the computer. I had a memory address space as a
grid of 255 boxes on posterboard. I had a person act as the data bus
who wrote down the instructions and brought them to the instruction
decoder, and I had the instruction decoder look up how each instruction
is processed based on the number. I had the ALU perform arithmetic
operations, and the "screen" watch a section of memory and display
letters on the screen based on what ASCII character was supposed to be
there. The registers (I had 5 general-purpose registers, an instruction
pointer, and a status register) were listed on the board. Each memory
cell and register held a number between 0 and 255, and the memory range
was between 0 and 255. Sticky Notes were used to put values into the
memory cells.
I believed in the project, but I was really surprised at how effective
it was. I had some people who were actually in the wrong class (they
were supposed to be in the "computer concepts" class -- you know, the
one where they teach you to use Word and Excel), who decided to stay
after playing the simulation. They felt they had a much better handle
on how the machine actually worked than if they had fixed their schedule
and gone to the "concepts" class (these were not teenagers, but
40-year-old women).
Anyway, we ran two programs -- find the maximum value and display a
value. It took about two hours to explain and run the simulation, and I
even had to cut the "maximum value" one short, but it was quite an
experience, and it showed that everyone can learn how computers work.
Anyway, I thought you all might be interested. I think this is a really
effective way of teaching programming (or computers, for that matter),
because it gives people an appreciation for how computers actually work.
I think we do a lot of people an injustice by assuming that they can't
learn how things work, when really if we just told them how it functions
they would be able to figure out the rest on their own.
Jon
----
Learn to program using Linux assembly language
http://www.cafeshops.com/bartlettpublish.8640017
"intro to programming" class which teaches flow charting, logic, and
design principles for new programmers, using mostly pseudo-code rather
than actual programs.
Anyway, being a believer in knowing assembly language, I decided to put
together a computer simulation. I "designed" a simplified computer (25
instructions - add, subtract, load, store, divide, jump, and jump
conditional, with a few different addressing modes for each of them). I
had them simulate being the computer. I had a memory address space as a
grid of 255 boxes on posterboard. I had a person act as the data bus
who wrote down the instructions and brought them to the instruction
decoder, and I had the instruction decoder look up how each instruction
is processed based on the number. I had the ALU perform arithmetic
operations, and the "screen" watch a section of memory and display
letters on the screen based on what ASCII character was supposed to be
there. The registers (I had 5 general-purpose registers, an instruction
pointer, and a status register) were listed on the board. Each memory
cell and register held a number between 0 and 255, and the memory range
was between 0 and 255. Sticky Notes were used to put values into the
memory cells.
I believed in the project, but I was really surprised at how effective
it was. I had some people who were actually in the wrong class (they
were supposed to be in the "computer concepts" class -- you know, the
one where they teach you to use Word and Excel), who decided to stay
after playing the simulation. They felt they had a much better handle
on how the machine actually worked than if they had fixed their schedule
and gone to the "concepts" class (these were not teenagers, but
40-year-old women).
Anyway, we ran two programs -- find the maximum value and display a
value. It took about two hours to explain and run the simulation, and I
even had to cut the "maximum value" one short, but it was quite an
experience, and it showed that everyone can learn how computers work.
Anyway, I thought you all might be interested. I think this is a really
effective way of teaching programming (or computers, for that matter),
because it gives people an appreciation for how computers actually work.
I think we do a lot of people an injustice by assuming that they can't
learn how things work, when really if we just told them how it functions
they would be able to figure out the rest on their own.
Jon
----
Learn to program using Linux assembly language
http://www.cafeshops.com/bartlettpublish.8640017