Jared Madrazo

Dr. Kihlstrom

Fundamental of Computing

1 December 2007

What I have learned in CS5

            This class has taught me some of the basic components of what computer science is and how computers function.  Before the class I did not know anything about things such as networking or computer hardware.  Now that I have taken this class I feel more comfortable about answering questions about computers and more confident that I know what I am talking about.  I now enjoy computers more than when I did before I took this course.

            The content of CS5 is based on the material from the text Invitation to Computer Science: C++ Version.  This textbook taught me many different things.  The book is divided into six separate sections called levels and each one of these levels addresses one aspect of the definition of computer science (slides).  Chapters one, two, and three are a part of level one and these discuss the algorithmic foundations of computer science.  This is information such as what computer science is, algorithm discovery and design, and the efficiency of algorithms.  Level two covers chapters four and five and are all about computer hardware.  The hardware world includes binary numbers, Boolean logic, and gates.  It is also about the organization of computer systems. Level three, which includes chapters six and seven, talks about the virtual machine.  Computer networks, the Internet, and the World Wide Web are all a part of this.  Chapters eight, nine, ten, and eleven are the fourth level and they describe the software of a computer.  The software world covers an introduction to high-level language programming, the tower of Babel, compilers and language translation, and models of computation.  Level five is chapters twelve, thirteen, and fourteen and they explain applications such as simulation and modeling, electronic commerce and information security, and artificial intelligence.  The last level is chapter fifteen, which is all about making decisions about computers, information, and society (slides).

            This course is part of the computer science major and the definition of computer science is confusing to some people.  Computer science is not the study of computers, the study of how to write computer programs, or the study of the uses and applications of computers and software.  Computer science is the study of algorithms.  A computer scientist designs and develops algorithms to solve problems (slides).  The definition of 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” (Schneider, Gersting 5).  How is computer science related to algorithms?  Computer science is related to algorithms because all the different types of algorithms are a part of it: algorithms such as formal and mathematical properties, hardware realizations, linguistic realizations, and their applications.  Computer science cannot exist without algorithms; they are a part of each other (slides).  Before taking CS5 I knew computer science involved computers but I had no idea what was actually a part of it.

CS5 covers the general education requirement “reasoning abstractly”.  To reason abstractly is the ability to reason about a problem in an abstract, rather than a concrete, manner and is a uniquely human ability and thus is central to our understanding and pursuit of the liberal arts (syllabus).  Reasoning abstractly also has to do with representing something with the right amount of detail that will give you the necessary information and allow someone to accomplish a task at a particular time.  It is not necessary to have all the details for certain things.  With the ability to reason abstractly we are able to deal with difficult concepts that may arise because we include only the details that are necessary and hide the rest so we can manage the complexity.  Abstract reasoning is important to computer science because it is a necessary component of looking at the representation of information in a computer and exploring the idea of an abstract data type.  We also reason abstractly in developing algorithms and computer instructions.  An example of reasoning abstractly would be when people need to design instructions for developing something.  Instruction on building something such as a plane requires abstract reasoning just like a computer program would.  These are all reasons why reasoning abstractly is important to computer science.

The textbook has taught me some new things.  The textbook has taught me the types of algorithmic operations: sequential, conditional, and iterative.  I have learned that sequential operations involve computation operations with variables.  I did not know the format of a sequential operation but now I know that it also involves input and output operations.  An input operation means to receive data from the outside world.  For example, get a value for r, the radius of the circle.  An output operation sends the results to the outside world for display (slides).  A sequential operation is also called a straight-line algorithm because it executes its instructions in a straight-line from top to bottom and then stops (slides).  Conditional and iterative operations are both components of control operations.  A conditional operation asks questions and chooses alternative actions based on the answers.  Iterative operations perform a “looping” behavior, repeating actions until a continuation condition becomes false (slides).  A loop is a repetition of a set of instructions.  At the beginning of the year when Dr. Kihlstrom brought in the recipe to bake cookies it gave me a good visual of how these operations work.  It was a simple set of instructions that we came up with to create a cookie algorithm.  The cookie-making algorithm is an example of the straight-line algorithm because the instructions have to be executed from top to bottom.  If the instructions are done out of order the cookie will not taste very good.  This experience helped me in understanding the basics to creating an algorithm. 

This kind of work is beneficial to me because it can be used in my everyday life.  If I go out to buy something and I see an item that I like an algorithm can be used to figure out the cost of how much I will spend.  The algorithm will include the price of the item I want to get plus the quantity purchased.  But there is a sales tax as well so I have to add that in.  If I set up a step-by-step process to figure out how much I will spend I can use this for other things I buy as well.  It is important for me to keep track of how much I spend; therefore an algorithm is very useful to me. 

Another thing the textbook has taught me is the memory and cache in a computer.  I had heard people talking about RAM and cache in different places but I was unsure of exactly what they were.  I now know that RAM stands for random access memory and that it maps addresses to memory locations.  I have learned that Cache memory is important because it keeps values currently in use in faster memory to speed access times (slides).  It is beneficial for me to know this because I need to know how my computer remembers things and how much space is in my memory.  If my computer begins to move slowly or act abnormal I know something could be affecting my memory or that I have too many things loaded on my computer.  When I look into buying a new computer I will consider how much RAM and cache is in it.

            The work that we did on the Alice programs has taught me a lot.  I have never worked with a program like Alice.  I find it challenging to create a world that has certain requirements.  Some things the assignments teach me are patience, new vocabulary, and figuring out how to work with a new program.  I learn patience through all the time I spend trying to figure out the properties, methods, and functions for the different worlds.  There is many times where I click on methods and say “head turn” thinking that it will automatically turn the way I want.  This is not true.  I have to go back and specify how far around I want the head to turn.  Many times this takes me a long time to figure out, which is how I learn to be patient with the program.  In the Alice programs there are words that mean things to the program that are different than how I have learned them.  I have learned new definitions for the words function and parameter.  I have learned that parameters are used to write methods that are more broadly useful and functions are messages used to retrieve information (slides).  Using a program like Alice is a fun and creative introduction to programming.  I have never done any programming at all so to be able to work with Alice is a privilege. 

            The Alice program is beneficial to me because it helps me practice what I have learned in the textbook.  For example, in the projects I had to use an if/then statement and an iterative operation.  This shows me that parts of an algorithm can be used for real world situations like a total cost algorithm as well as for programming on a computer.  If I continue to practice using these operations on the Alice program as well as in situations in the real world it will become easier for me to use algorithms on a regular basis. 

            The most enjoyable learning experience I have had through this class has been the web development.  Web development is discussed in the text but the two programs that I have learned most from are the Microsoft notepad and KompoZer.  In creating my resume online and the final projects I learned how to convert word documents to html documents.  I had no idea that this was possible before I actually did it.  Converting my Alice assignments to an html document was also a challenge because I had to download other programs in order for it to work.  It was interesting to work on my own web page because I have never done it before.  Before this assignment I did not realize how much time and effort people put in to create an attractive web page.  It took a lot of time for me to create my web page and when I look at web pages online I see so much more material in theirs compared to what I have in mine.  Using notepad took time to learn as well.  When using notepad I have to be very cautious because I have to use the correct wording or the work will not show up my web page.  An example of this is using quotes on certain lines.  If I forget a quote on a line that needs it there is going to be some kind of a mistake.  Without proper wording in the notepad I will not be able to add components such as a horizontal rule or hyperlink to another file. 

            I believe knowing how to create a web page and converting documents to html format is extremely beneficial.  Many businesses have websites that advertise their products.  People are the ones who create the style of the websites and the content of them.  I now have the ability to accomplish this.  Knowing how to create a web page is not only an advantage for businesses but also people.  There are many personal web pages that people create in order to show something to other people.  An example is a web page that shows a persons house and property.  Another example is a resume!  For others to be able to see my resume is an advantage for me.  I am very glad that web development is a big part of this class.

            When I registered for this class I was not sure what to expect.  I signed up because I wanted to learn more about computers and this class has definitely done that for me.  I now feel more comfortable using computers because I know where certain programs are on my computer.  I will certainly recommend this class to other people who are thinking about taking it for a couple reasons.  One is because the course will challenge people and challenge their computer skills.  Another reason is because of how helpful the professor is.  Anytime I need help with something Dr. Kihlstrom is there to answer my questions.  Whether it is in class or in office hours she is always willing to help.  Taking this class will teach people things that can help them the rest of their lives.