1
An Extremely Short
Introduction to Computer
Programming
Mike Scott
2
Who Am I?
• From St. Charles, Missouri
• Attended Stanford University 1986 - 1990
• US Navy 1990 - 1998, Nuclear Submariner
• Married 1997 to Kelly, A US Navy Nurse
• Masters in CS, 1998, Rensselaer Polytechnic
Institute, Troy, New York
• Out of Navy 1998 (both of us), moved to Austin to
work for Motorola (Worst 10 weeks of my life)
• 2 years teaching CS at Round Rock High School
• 8 years as a lecturer here at UTCS department
3
Olivia and Isabelle
4
Computer Programming
5
Computer Science and
Computer Programming
• There are many different fields of study in
Computer Science
• Robotics
• Architecture
• Graphics
• Artificial Intelligence
• Systems
• And many, many more
6
Where Does Programming Fit in?
• "Having surveyed the relationships of computer science with other
disciplines, it remains to answer the basic questions: What is the
central core of the subject? What is it that distinguishes it from the
separate subjects with which it is related? What is the linking thread
which gathers these disparate branches into a single discipline? My
answer to these questions is simple -- it is the art of programming a
computer. It is the art of designing efficient and elegant methods of
getting a computer to solve problems, theoretical or practical, small or
large, simple or complex. It is the art of translating this design into an
effective and accurate computer program."
– C.A.R. Hoare,
Essays in Computing Science
• Many different areas of Computer Science, computer
programming is an important tool in almost all of those
areas
7
Algorithms and Computer Programs
• Algorithm, a set of detailed, exact
instructions, to carry out some task or solve
some problem
• A computer program is the expression of an
algorithm in a language a computer can
understand
• A high level programming language is
something that is used to implement an
algorithm
– suppose to be easy for humans to understand
8
Computer Programs
• You interact with computer programs all the
time.
• Those programs were written by people.
• The computer didn't know how to do it until
someone wrote the program
9
Programming Languages
• Many different programming languages
– Java, C, C++, Scheme, Haskell, Visual Basic,
Perl, Python, Tcl/Tk, Pascal, Basic, Lisp,
Prolog, Cobol, C#, Smalltalk, Eiffel, Fortran,
Ada, Mathematica, MatLab, LabView
• These languages are divided into may
different types
– Object Oriented, Procedural, Functional,
Graphical
• many different ways to solve a problem
10
What a Computer Does
• Programs must be converted into instructions the
Central Processing Unit of a computer can
understand
• The CPU carries out simple operations. Addition,
subtraction, multiplication, division on numbers
• So what is the difference between a computer and
a calculator?
–
The Big Difference is a computer can do calculations
really fast
• Pentium 4 chip from 2001 can perform approximately
1,700,000,000 computations per second
If something can be represented numerically it can be
stored on a computer and
manipulated via the
computer! pictures, images, video, music, text, DNA
data, …
11
Program Conversion
• high level programming languages are
easier for humans to use
• a CPU understands a limited set of
instructions expressed in binary, 1s and 0s
• the programs you write are translated or
converted into a set of instructions the cpu
can understand and carry out
– this is done by another program called a
compiler
12
Humans = Smart, Computers = Dumb
• Programming languages are just tools for
writing programs
• No one best programming language
• LabVIEW -> do a lot of interesting stuff very
quickly
• Really good programmers know lots of
languages and pick the right one for a
particular task
– part of solving the problem, how to frame the
solution
13
Alice
14
What is Alice?
• Alice is a visual programming language.
• Alice is designed to teach someone how to
program
– It is not used in the "real world" the way Java or
C++ is
• The output of Alice programs are movies.
15
Visual Programming
• Programming is done by pointing and
clicking, dragging and dropping, selecting
from menus, and some typing
16
Object Tree
World View
Event Editor
Details Panel
Code Editor
Control
Primitives
17
Alice Models
• Main programming data are 3d models
• Many built in and more on web
18
Output
• Output are 3d movies
– run the program, play a movie
– can also add sound to programs
• A lot easier to recognize logic errors
– "Why do my
ninja's arms
keep flying
away?"
19
Sample Program - Bunny and Broccoli
20
Sample Program
• Rolling a ball
21
Sample Program
• Finding Nemo
– The charades scene
• Student interpretations
22
LabVIEW
23
LabView
• LabVIEW is a
graphical programming language
– as opposed to a text based programming language
such as Java or C++
– originally developed to collect and analyze data from
instrumentation.
– can be used as a general purpose programming language
• There are similarities
– must think about what the problem is
– what is the program suppose to do?
– must plan a solution
– must implement and test the solution
• The difference is what you do when implementing
solution.
– typing vs. working with icons
24
LabView Program
25
Java Program (Partial)
public void paintValue(Graphics g) {
floath,s,b;
intcol;
Stringwks,outs;
intred,green,blue;
h = (float)hValue;
s = (float)sValue;
b = (float)bValue;
col = Color.HSBtoRGB(h,s,b);
g.setColor(new java.awt.Color(col));
g. fill3DRect(mainx, mainy+mainh+cy, mainw+cx+satw,cy*2, true);
int wk = col/256/256/256;
col = col - wk;
red = col/256/256;
green = (col-red*256*256)/256;
blue = col-red*256*256-green*256;
wks = Integer.toString(255+red,16);
if (wks.length()==1) wks = "0" + wks;
outs = wks;
wks = Integer.toString(255+green,16);
if (wks.length()==1) wks = "0" + wks;
outs = outs + wks;
wks = Integer.toString(255+blue,16);
if (wks.length()==1) wks = "0" + wks;
outs = outs + wks;
g.clearRect(0, mainy+mainh+cy*3, size().width, 35);
g.setColor(Color.black);
g.drawString("Color value = " + outs.toUpperCase(), mainx+5, mainy+mainh+cy*3+25);
}
26
Result