Title: WEB-BASED LEARNING TOOLS ON MICROPROCESSOR FUNDAMENTALS FOR A FIRST-YEAR ENGINEERING COURSE
1WEB-BASED LEARNING TOOLS ON MICROPROCESSOR
FUNDAMENTALS FOR A FIRST-YEAR ENGINEERING COURSE
2Outline of Presentation
- Introduction
- Demo
- Student Responses
- Inside the Simulator
- Conclusion
3Introduction
- WWW has changed how teaching occurs
- Virtual labs
- limited resources
- physical space restrictions
- The Tutorial
- A series of surveys, quizzes, references and
interactive programs that simulates how a
computer based on Feymans File Clerk and one
based on the LEGO RCX executes a program.
4What is the RCX
3 input Sensors
3 output Motors
- 32 16-bit registers
- datalog
- Virtual machine
- Infrared transceiver
- programmable in NQC
5Maxfinder
- Developed web-based tutorial to enable students
to understand what goes on internally in a
computer for program like the maxfinder
6Previous Work on LEGO in the classroom
- Seymour Papert at MIT -- LOGO
- Fred Martin at MIT - programmable brick
- CEEO at Tufts K-12 education
- Dave Baum of Motorola NQC
7How students proceed through the tutorial
Pre-survey
Read reference page
Interactive demo W/ simulator
Take quiz
Post-survey
8Outline of Demonstration
- Arithmetic Instructions Module
- detailed look from students viewpoint
- Control and Input/Output Instruction Module
- introduces sensors, motors, control statements
- MaxFinder Module
9Arithmetic Operation Reference Page
- Arithmetic instructions perform arithmetic
operations with 2 operands that overwrite the
value of the first operand with the result. They
always go to the next sequential address for next
instruction. For the RCX processor, the
arithmetic instruction format is composed of five
pairs of hexadecimal digits (one byte each).
10Arithmetic Operations Reference Page -- RCX
- 1. The first byte represents one of five
operations. - 1) 14 (setv)- stores a value in the
destination register - 2) 24 (sumv)- adds operand 1 to operand 2
- 3) 34 (subv)- subtracts operand 2 from
operand 1 - 4) 44 (divv)- divides operand 2 into operand
1 - 5) 54 (mulv)- multiplies operand 1 to operand
2 - 2. The second byte is the index (or register
number) of the register that holds operand 1 and
is the index of the destination register that
stores the result. - 3. The third byte represents one of three types
for operand 2. - 1) 0 the value of operand 2 is stored
in a variable register - 2) 2 the value of op 2 is immediately
provided by the next two bytes - 3) 9 the value of operand 2 is provided
by a sensor - 4. The fourth byte is the least significant byte
of argument to the second operand. - 5. The fifth byte is the most significant byte of
argument to the second operand. (Note that the
last two bytes combine to form a two byte integer
that together represent the argument to the
second operand.
11Arithmetic Operations Reference Page -- FC
- 1. The first byte represents one of three
operations. - 1) 14 (input)- input value from the scrollbar
into the register - 2) 21 (output)- output the value from the
register to the screen - 3) 24 (add)- add contents of first register
to the second - 4) 34 (sub)- subtract contents of first
register from second - 5) 44 (div)- divide contents of second
register into the first - 6) 54 (mult)- multiply contents of first
register by the second - 2. The second byte is the index (or register
number) of the register that holds operand 1 and
is the index of the destination register that
stores the result. - 3. The third byte represents the second operand.
12Arithmetic Operations Reference Page -- RCX
Assembly Operation Machine code
sum v0, v2 v0 v0 v2 24 00 00 02 00
set v2,0x1A5 V2 0x1A5 14 02 02 A5 01
set v7, input(1)A V7sensor val port1 14 07 09 01 00
13Arithmetic Operations Reference Page-- FC
Instruction Operation Machine code
add v0, v2 v0 v0 v2 24 00 02
input v2 V2 input value Input 2
mult v9, v10 V9 v9 x v10 54 09 10
14Proceed to demo
15Results and Student Responses
- Post-Quiz Survey
- How helpful was the learning tool?
- What did the students learn?
- Student suggestions about the tutorials
strengths and weaknesses - Over 300 students responded
16Quotes from Student Responses
- It was useful in understanding the underlying
task the RCX performs to process our NQC
commands. -
- It was very helpful, and I believe we should
have been required to do this before the Scanner
project.
17Quotes from Student Responses contd
- I found it interesting to see how high-level
code works as machine code. - I was confused by some of the terminology and
it would have been helpful to have someone there
to explain.
18Quotes from Student Responses contd
- I think that the online tutorial is a useful
tool but could become overused by professors.
This may lead to excessive information for the
students, and the professors not teaching.
19Graph of Student Responses
- 1 - not helpful
- 2 - a little helpful
- 3 somewhat helpful
- 4 very helpful
20Inside the Simulator
- Approach
- Generic simulator
- Customizing for a particular example
- Implementation
- Java applet
- Object oriented
- Components encapsulated as classes
- Take advantage of inheritance
- how it is customized to a particular demo
21Simulator Organization
Boxes correspond To major classes In Java applet
22Major Classes and Methods
- RCXSimulator Class
- Program Class
- Interpreter Class
- RegisterFrame Class
23RCXSimulator Class
- accept a program, step or run through the
execution of that program, and displaying the
state - an abstract class that inherits from the APPLET
class - important methods
- init () - initialize variables and instantiate
instances of major GUI classes - run() - if the run button is pushed, execute the
next instruction until the end - actionPerformed() - perform function based on
which control button is selected - abstract int getTheProgram() - get the array of
bytecodes
24Interpreter Class
-
- The Interpreter class interprets the bytecodes
and implements the entire instruction set - This class is the data type of a variable and is
instantiated in the RCXSimulator class - Important Methods
- synchronize executeNextInstruction() - chooses
from a case statement based on the opCode a
method which interprets the next instruction.
it is synchronized because executing an
instruction is an indivisible act - -- this methods that interpret the bytecodes for
the complete instruction set - executePWR()
- executeDIR()
- executeSETV()
- executeJUMPL()
- executeSUMV()
-
25Program Class
-
- The Program class supplies the RCXSimulator class
with a programs bytecode and gives the applet
its personality - This class inherits from the RCXSimulator class
and implements its abstract methods - Important Methods
- getTheProgram() - returns the array of bytecodes
that constitute a specific program - getbytecodeMnemonics() - returns the array of
String that make up the bytecodes mnemonics - getAppletTitle() - returns the title of the
applet as a string -
26Code Statistics
- There are 24 Classes
- There are 3821 lines of code
- Sensor has 50 lines
- RCXSimulator has 591
- Interpeter has 1301 lines
- Java Class Package Libraries
- AWT
- Applet
- Thread
27Conclusions major contributions
- An effective online tutorial with simulator using
WebCT - A simulator for the RCX
- Impacted the education of 300 students
28Conclusions - Findings
- Effective as indicated by quiz survey results
- Useful as a supplement to an introductory
engineering course - Some aspects are too technical
29Future Work
- Future
- Increase functionality
- A model approach to other Domains
- Chemical Engineering
- Nano Technology