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.