Kevin Kihlstrom
Dr. Kim Kihlstrom
CS 05
5 December 2007
A Summary of CS 05
Fundamentals of computing in most part was a computer science
course explaining the basics, and at the same time fulfilling the GE
requirement at Westmont which was abstract reasoning. On our
first test we were asked how the class fulfilled the GE and I wrote
"Definition: To solve or work through a problem in a
different/unorthodox manner. It is important to computer science
because computers use abstraction to hide different layers, or really
in a sense make it not quite what we are used to seeing. If we
didn't know how to reason around this, we would never be able to
understand computers. We do this when translating algorithms into
pseudo code, or when exploring the representation of information on the
computer. (Most of this work was taken straight from the syllabus
which was so beautifully written by Dr. Kim Kihlstrom of Westmont
college)." The other two main goals for the class were to gain a slight
knowledge of computer science and also to gain fluency in basic
computing.
The next question on the test
asked us what a is an algorithm, what are misconceptions of computer
science, and how do algorithms relate to computer science. I
wrote "As book invitation to Computer science by G. Michael Schneider
and Judith L. Gersting writes an algorithm is “A procedure for solving
a mathematical problem in a finite number of steps that frequently
involves repetition of an operation; broadly: a step-by-step method for
accomplishing some task” (5). Its basically a recipe or a plan
given out in steps to complete a task. A common misconception is
that computer science is the study of computers or that computer
science is the study of how to write computer programs and sometimes it
is believed that computer science is the study of the uses and
applications of computers and software. These from the shallow
perspective may seem to describe the hard and scintillating work which
all computer scientist do, however, they don't really get the gist of
it. The main focus of computer science is truly algorithms.
With out them, the field of computer science would impossible to
understand."
When writing an algorithm, like a recipe, it will take steps. It might say something like
step 1: find A,
step 2: find B,
step 3:keep doing this till all items are assigned a letter
step 4: add all items.
step 5, multiply the total by 0.075,
step 7: print value from step 4,
step 8: print value from step 5.
step 9: add value from step 4 and 5
step 10: if total price exceeds 100 dollars than add gratuity
step 11: gratuity = value from step 9 * (0.15)
step 12: add gratuity to total from step 9
step 13: print value from step 12.
This
might be the algorithm used at a restaurant when printing out the
check. In the algorithm there are three types of steps.
Sequential steps make of the the majority of steps in the example
above. They are basic steps that happen in the order they are
given. The second type is a conditional step. This type can
be seen in step 10 of the example where it says “if total price exceeds
100 dollars than add gratuity.” The step will only occur if a
certain requirement is fulfilled. The third type of step is an
iterative step. This can be found in step three of the example where it
says “keep doing this till all times are assigned a letter.” The
operation is going to keep happening until all the times have been
given a value.
The next major thing we
learned was five generations of computer science. Obviously since
computers were only recently made, the first generation was pretty
recent. It took place 1950-1957 and featured the first commercial
computers, the first symbolic programming language. The next
generation lasted from 1957 until 1965 and featured transistors, core
memories, the first disks for mass storage, and the first high-level
programming languages. The third generation lasted for the next
11 years and featured integrated circuits, the first minicomputers, and
the first set of computing standards for compatibility between
systems. The fourth generations went from 1975 until 1985 with
the invention of the first microcomputers, computer networks, graphical
user interfaces, and large-scale/very-large-scale integrated
circuits. The last generation, and the one we are currently in
has featured supercomputers, parallel processors, laptops/hand held
computers, and wireless computing.
For the
rest of the class, what we learned was divided into six levels. The
first level was titled Algorithmic foundations of Computer science In
this section for most of it we learned how to apply the idea of
algorithms and try to create some of our own. The main way in
which we did this was using pseudo code. What this is basically
is writing in English sentences exactly what would be needed if you
were writing in an actual code like Java or C++. The form is very
different obviously, because computer coding is different than the
English language, but in a way we took a step toward learning how to
code. We then learned how make sure our codes were neat and
efficient. There are many ways to write a code so that it does
what you want it to, the thing that will distinguish you will be how
neat and efficient it is.
The second level
of was called "the hardware world." In this section we started out
learning what it means to count in binary. The number
system we know today uses base 10. for each digit a 0-9 can be
placed. In binary only a one a zero can be used. Really it
takes some interesting thinking to grasp it. Computers use binary
to do their work, thats why we learned it. The next thing in the
section was about Boolean logic and gates. Boolean logic turns
things into a true false program. This makes it very easy for the
computer. Computers use gates, and these gates use this logic, so
that either they are open or closed, true or false. Combining
many of these gates will give you a circuit. This allows you to
do many operations. We then learned about the many parts of
computers like memory, RAM, ROM, the things that we see physically like
a monitor, keyboard, and mouse.
Level
three titled "the virtual machine" To start out this
section talks about system software. This is basically a liaison
between us as the user and hardware in the computer. The next part
talked about assembly language. This basically is a way to
simplify the look of one's code and organize it better, but at the same
time it must be used properly otherwise it will hurt the coding or ruin
it. After that Operating systems was the topic.
Operating systems have five main responsibilities which are users
interface management, program scheduling and activation, control of
access to system and files, efficient resource allocation, and deadlock
detection and error detection. After that Computer networks was
the topic. These are basically 2 or more computers(not already
connected) which get connected by telecommunications links. Added
on to that was different choices for sending data on a network, which
included telephone lines, high speed lines like DSL or cable, Ethernet,
and even faster Ethernet. After that Lan s and WANs were
explained as basic network types. Lastly in this section we got a
general idea of what the Internet is and some key components of
it. It is basically a massive group of connected networks.
Basic vocab for it included TCP/IP which is the Internet protocol
hierarchy.
The fourth level titled "the
software world." This section started first by talking about
modern high level language and how it relates to the user. In
today's world storage isn't as big of a problem, because there is so
much space these days. While in the early years it was definitely
a big worry. High-level languages allow us to think at a higher
level, or to a more complex level. The coding is getting closer to just
basic language used today. The program is a lot more
portable. In a sense high-level language is a lot more user
friendly. The next thing explained was a compiler. What
this does is translate any number of high-level codes, into machine
language. It's not as if the machine reads C++ and knows what to
do. There is a middleman (or women if you get all feminist on
me). The level then covers the topic of models and
how they help us view actual events. The church-turing machine
was then talked about as basically able to be used to test whether or
not a problem can be solved.
Level 5
"Applications" stats out by going more in depth with knowledge about
models and how they can be useful. It explained what would go
into starting an on line store or an e-business, talking about the
planning that would be required and such. It went on to talk
about the security precautions you would need to take. This lead
into the topic of encryptions and stuff like that. Encryption
basically takes your info and scrambles it making it almost unreadable,
unless a person has a decryptor which then unscrambles it and makes it
readable. After that the topic of artificial intelligence or A.I.
was talked about. The basic expectations of A.I. is that it
should seem as if a human were answering.
The last level was social issues. This dealt mainly with
moral issues that come up, when dealing with computers. And
example of this would be illegal music sharing. It isn't
necessarily stealing music, because nothing is directly taken from a
story or whatever. It would be considered copywriter
infringement. Most likely this will lead to less money going into
buying the music thats why its wrong. Other issues came up like
if you have a program and someone else wants to try it out so you let
someone borrow it and have it on their computer for a while. Are
you at fault if this person never takes the program off their computer
because basically you kept money from going to the company that started
the program. It isn't fair for the creators. The issues can go on
and on, and the problem really is that it is very easy to copy stuff
off a computer and have many versions of it. It's really tough to
decide what is right and wrong especially because all of this stuff is
so new. The information in this paper was all taken from the
slides given from Kim Kihlstrom of Westmont College.
For me personally I got a far greater understand and respect for
computers. instead of just being a bunch of wires and chips and
all types of things, now I know a little of what goes into it and how
it works. I also learned the general format for most coding
languages. This helps me slightly understand better actual
computer coding, though I still don't think I could ever do something
like it for a living. As the course intended, I truly learned how
to reason abstractly. working with different bases for numbering,
I now can think of many ways to add numbers and view things already
written. The stuff I learned won't necessarily help me with a
career job, but it will help me overall as a person. Life isn't
just about preparing for your job, because you only spend about 40
hours of a 168 hour week doing that job. The rest will be spent
sleeping, and enjoying friendships for the most part. As
computers get more and more integrated into society, and we become more
and more dependent upon them, my basic knowledge will be helpful for
me, and for others.