Title: Computer Science Fundamentals
1Computer Science Fundamentals
- A topics course in Computer Science
2Topics we hope to cover
- Data representation (especially binary and hex),
arithmetic, base change algorithms - Operating systems (including an introduction to
Threads of execution) - Boolean algebra and switching functions
- Combinational and flip-flop circuitry (an
introduction to architecture) - Computer communication (an introduction to
sockets and/or datagrams) - Theory of computation (an introduction to
automata and computability) - Assembly language programming
- Program translation
- Well also learn some java programming!
3Data representation
- Information in the computer is represented in
base 2 (binary), although, for convenience, base
16 is also sometimes used. - In radix positional notation, a digit d, located
in position p, in a number base b, represents
dbp. So, the decimal value 8352 represents
8(1000)3(100)5(10)21. Similarly, the
binary value 1011101 represents the value
16403211618140211. - Note that the powers base 2 are 1,2,4,8,16,32,
201, 212, etc. Make sure you are familiar with
the two-powers.
4You will need to memorize the values 0..15 in
binary and hex
5Kinds of data
- There are many types of data stored in computer
memory. Some memory cells hold instructions,
some hold integers, some hold float values, some
hold char data, other store composite data types.
6Char data is stored internally using the ASCII
(or UNICODE) collating sequence
- You can find a complete ASCII table in most
computer texts. - Exercise In C or Java, print your own ASCII
table print the int value x 32255 in the left
column of a table and print (char)(x) in the
right column. - You will need to know the collating sequence
values for some characters like 0, 1, also
a,b, and A, B, - Exercise write these values in binary.
7Int data
- Integers may be stored internally in one of
several formats - BCD (binary coded decimal) often used in
spreadsheet programs - Unsigned int a positive binary value
- Signed int positive or negative value
8BCD
- BCD allocates 4 bits (a nibble) of binary storage
for each decimal digit to be represented. - Example 598 in decimal will require
3digits4bits each 12 bits. In BCD it looks
like this 010110011000 - Practice converting a few decimals to BCD
9Unsigned ints
- In unsigned (positive) representations, all bits
are used to indicate the value. - In 4 bits of binary, you can represent decimal
values 0,,15. (see table a few slides back.)
What values could be represented in 5 bits? In 8
bits? In 16 bits? - What is the general rule?
- Represent values 0, 48, 65, 97, and 127 in 8
bits. Example 48 decimal is 00110000 in 8 binary
bits. - 8 bits is called a byte.
10Quick conversion between bases From base b to
decimal
- To convert from any base to decimal, use Horners
algorithm for polynomial evaluation. A number in
base b can be regarded as a polynomial p in the
variable b. Let P(b) anbn a n-1 b
n-1a1b1a0b0 - This would be written as the series of
(coefficient) digits. For example, the base 6
value 32501 represents 3(64)2(63)5(62)0(61)
1(60) - Using nested multiplication we can rewrite this
without needing to compute exponentials of the
base ((((36)2)65)60)61
11Base b to decimal via Horner
- If a value in a base b is entered as a String in
a TextField named input, and the base is entered
in a TextField called basefield, we could use the
following Java code to do the conversion - String value
- int b, answer
- answer0
- bInteger.parseInt(basefield.getText())
- valueinput.getText()
- for(int j0jltvalue.length()j)
- answer answerbase (int) (value.charAt(j)-48)
12Remarks on this code exercises
- Note that the length of a String in Java can be
obtained using the class method length(). The
String method charAt(p) returns the char in
position of a String. The TextField method
getText() returns the String entered into a
TextField. - For which bases would the java code fragment not
provide the correct answer? Why? - Fix this problem.
- Complete the JApplet. Write a JApplet which
provides labels and textfields for a base, a
value and an answer and performs the conversion
from base b to base 10.
13Converting from decimal to other bases
- In determining what a decimal value would look
like if represented in another base (b), we need
to figure out what digit in base b goes in each
position of the representation. - Suppose n295 and b2, ie., we are trying to
convert to binary. The 1s place will have a 1 in
it since 295 is odd. - 295 (10) ???..??1(2)
- But how many other bits are there, and what are
each of their values? Since positions in the
binary representation indicate powers of two,
having figured out the ones place means we have
only half of n (295/2 147) left to represent.
14Example convert 295 decimal to binary
- 295 is oddleast significant bit is a 1 295(10)
???..?1(2) - 295/2 147. Since 147 is odd, 2s bit is also a
1 295(10) ???..?11(2) - 147/2 73. Since this is odd, next bit is also a
1 295(10) ???..111(2) - 73/236. Even, so next bit is a zero 295(10)
???..0111(2) - 36/218, which is even. 295(10) ???00111(2)
- 18/29, odd. 295(10) ???100111(2)
- 9/24 even. ??0100111(2)
- 4/22 even. ?00100111(2)
- 2/21 0dd. 100100111(2)
- ½0 stop.
15Decimal to any other base
- Convert from decimal to any base using the
remainder/division algorithm described
previously. Each remainder operation generates
one digit of the answer. Then divide the number
by the base and continue. - String answer
- int base Integer.parseInt(basefield.getText())
- int value Integer.parseInt(input.getText())
- while (value!0)
- answer valuebaseanswer
- value/base
16Remarks Exercises
- Note, we use the static Integer method parseInt()
to convert a String to an int value. - For what input values would this Java code not
work properly? Why? - Can you fix this problem to convert decimal
values into values in any other base? - Write the JApplet which would provide labels,
textfields and buttons enabling the user to enter
a decimal int and a new base value and convert
the decimal int to the new base. - Practice doing these conversions by hand.
17Base conversions base b to base bn
- If you are converting between bases where one
base is a power of the other, like binary to hex,
or binary to octal, or base 3 to base 9 then the
conversion may be done very easily. n digits of
base b will be needed for each 1 digit of base bn
. - Consider converting A6E9 in base 16 to binary.
Each hex digit will generate 4 binary bits. If
you have not memorized your hex digits yet, this
is a good time to start. In decimal A is 10, B
is 11, C is 12, F is 15. So A 1010(2), etc. - A6E9 (16) 1010011011101001 (2)
- Convert this number (right hand side above) to
base 8 and base 4. - Convert the base 9 value 783361 to base 3.
18An introduction to Java
- Java syntax is the same as C. In other words,
an assignment statement, an if, a while, or a for
statement in Java looks the same as in C. - Java class methods are called, like in C, using
the dot . operator - ClassInstance.methodName(parameters)
- To get a String which a user has entered into a
TextField named input we might use the code - String value input.getText()//getText is a
TextField method - Java methods (functions) have return types,
parameters, and their definitions are enclosed in
a block , like in C programming. Prototypes
are not used in Java.
19An introduction to Java
- Java provides components (classes) buttons,
textfields, and labels, among many others. These
three are called JTextField, JLabel, and JButton
in Java 1.2 and higher. These classes must be
instantiated with new. Example - JButton bnew JButton(press me)
- In a small program, declarations are typically
global (not inside a method) and data allocation
occurs in the JApplet method init(). The init
method is executed when a browser loads an
applet. - All java applets and applications must consist of
an outer class - //sample Java JAppletÂ
- import javax.swing. //contains Java2 classesÂ
- public class OuterClass extends JApplet
- //open block Â
- //methods, declarations go in here
- //close outer block
20JApplet with JLabel, JTextField and JButton
- import javax.swing. Â
- public class OuterClass extends JApplet
- //global applet declarations typically go here
- public JLabel label
- public JTextField text
- public JButton button
- public void init()//first method browser will
execute - Container cgetContentPane()//get the panel for
this applet - c.setLayout(new FlowLayout())//one sort of
layout - buttonnew JButton(press me)
- label new JLabel (enter value)
- textnew JTextField(20)
- c.add(label)//components appear in the order
they were added to the panel - c.add(text)
- c.add(button)
- //end init
- //end applet
21JApplet structure
- Note that imports appear the top of a java
Applet. These are like includes in C. - Applets may have many user defined methods.
- They may also override the Applet methods init(),
paint(), start(), stop(), and many others. - A Java applet or an application must consist of
an outer class (with a block) and any data
fields, and methods (with their blocks) defined
inside the outer block.
22Applet deployment
- We must perform a number of steps in order to
deploy an applet to our webspace so a visitor
there could run it. - Type the code into an editor or IDE
- Compile the .java file. This process will check
syntax. If it is successful, a .class file will
be created which has the same name as the
original java source file. Ie. Prog.java when
compiled with generate a file called prog.class.
Create an appropriate html file to point a
browser to your class file. - Check things out on your desktop by running the
applet in appletviewer. - Use FTP to send appropriate html and class files
to your webspace
23Using an editor
- Type the java source code into an editor or IDE
(integrated development environment like
JBuilder) and save it as a .java file. - The filename must be the same as the outerclass
name. - We will use TextPad, a shareware program, as our
editing environment, although you can also use
the Borland C editor or Word. (If you use MS
Word, make sure the file is saved as ASCII text
format and has the extension .java) - TextPad can be downloaded on your own computer.
It is produced by Helios.com - TextPad has some features of an IDE you can
compile and run java applets and applications
from TextPad. - TextPad is available in the campus labs.
24Compile the .java file.
- This process will check syntax. If it is
successful, a .class file will be created which
has the same name as the original java source
file. Ie. Prog.java when compiled with generate
a file called Prog.class.Java is case sensitive. - Compile in TextPad by selecting compile from the
tools menu. - Alternative. If youve downloaded JDK1.3.X onto
your own computer, you have java, the java
compiler as part of the kit. Open a DOS window
(run command.com)and navigate to your jdk bin
directory where you should have saved your .java
file. At the prompt, type java Prog.java - This will create a file called Prog.class.
- A class file is not an executable, it contains
portable byte-code. It requires a java
interpreter (named java) to be executed.
25Create an appropriate html file to point a
browser to your class file
- Sample html
- lthtmlgt
- ltapplet code Prog.class height300 width500gt
- lt/appletgt
- lt/htmlgt
- This must be typed into a file and saved with the
.html extension. You could call this file
Prog.html to make it easier to remember which
applet it pointed to.
26A possible problem with the html and current
browser versions (IE Netscape)
- Depending on what browser you use, and its
version, it may require a plugin to run java2.
The html file will then need to be modified to
tell the browser to go load the plug in. Campus
labs have the plugin already downloaded. - There should also be a java program called
HTMLConverter you can use to convert the html
file we created into a more complicated one that
tells the browser it needs to load a plugin to
run the applet. - My class page has examples of this converted html
file format you can cut and paste from the
examples there to create a new html. - See class notes about this topic.
27Check things out on your desktop by running the
applet in appletviewer
- If you can get into DOS (on your own computer)
and have downloaded the jdk you can use the
simple html file format I presented earlier to
check whether your applet works now. - Assuming you have an applet called Prog.java, a
class file named Prog.class and an html file
named Prog.html, navigate to the bin directory
and type appletviewer Prog.html - appletviewer is a program in the jdk which will
run your applet as a browser would, so you can
check if it works ok. - Textpad is also configured to run appletviewer in
the labs. If youve created an html file for
your applet, select appletviewer from the textpad
tool menu. You may need to have saved these
files in particular directories, like the
java/bin directory, for this to work properly in
the labs. See class notes on this.
28Use FTP to send appropriate html and class files
to your webspace
- I have a screen shot of how to configure your
WinFTP session to ship files to your webspace on
our class pages. - Make sure to send .class files as type binary.
Later, youll use binary type for jpg and wav
files also. - HTML can be sent as ascii.
- Type your applet url into the browser to go visit
your applet. It will be something like - http//www.webserver2/students/smitxy87/Prog.html
29An applet with a listener
- Applets are event-driven programs. This means
things happen when the user click buttons, moves
the mouse, or enters values into fields. - It is up to the programmer to insure the applet
listens for button clicks (or whatever) and does
what needs to be done if a button is clicked. - This is done by means of listeners in Java.
There are many (!) listeners. One of the
simplest is the one which checks if values have
been entered into textfields or if a button is
clicked. It is called ActionListener. - Listeners are types of interfaces. A java applet
or application program may use many interfaces.
30Implementing the ActionListener
- import javax.swing. Â
- public class OuterClass extends Japplet
implements ActionListener - //global applet declarations typically go here
- public JLabel label
- public JTextField text1, text2
- public JButton button
- public void init()//first method browser will
execute - Container cgetContentPane()//get the panel for
this applet - c.setLayout(new FlowLayout())//one sort of
layout - buttonnew JButton(press me)
- label new JLabel (enter value)
- text1new JTextField(20)
- Text2new JTextField(20)
- c.add(label)//components appear in the order
they were added to the panel - c.add(text1) c.add(text2)
- button.addActionListener(this)//button is
listening now for user to press it - c.add(button)
- //end init
- //see next slide!
31ActionListener interface requires the programmer
to define the method actionPerformed()
- The above applet is not complete. It is missing
the outer close block, but even so, will not
compile without the definition of the method
actionPerformed which tells the aplet what to do
if the button is pressed. - public void actionPerformed(ActionEvent x)
- int z Integer.parseInt(text1.getText())//get
int entered by user - int p 2z// do elaborate computations
- text2.setText(p)
- //when button is clicked, 2input value is
calculated and displayed - //end actionPerformed
- //end outer class