Laura Biddle

                                                                                                            11/30/06

                                                                                                            Fund. Of Computing

 

 

Final Project Part 3- Essay

 

 

            In Fundamentals of Computing, CS 005, there are many topics that have been covered over a span of 15 chapters.  In chapter one, we learned that the definition of computer science is to design and develop algorithms (an ordered sequence of instructions that is guaranteed to solve a particular problem) to solve a range of important problems, which is accomplished in four ways: determining if algorithms are correct and efficient, designing and building computer systems that can execute algorithms, designing programming languages to be able to translate algorithms, and identifying important problems and solving them via software packages.  We learned that there are three categories of operations used to construct algorithms: sequential operations, conditional operations, and iterative operations- which are described more in detail in chapter two.  Lastly, the book touched on a brief history of computers- including the creation of the first computing device in 1801 for the purpose of manufacturing rugs.

            Chapter two delved deeper into the different types of algorithms.  It was explained that an algorithm can be represented by a high level programming language, such as C++ or Java, but it was found to be not very efficient for the programmer or computer scientist.  Thus, pseudocode was the notation of choice to represent algorithms.  A sequential operation carries out a single and well defined task.  For example, a sequential operation might perform a computation, like finding the area of a rectangle.  This operation could also have an input and an output, and then provide a value when the operation was completed.  A conditional operation asks a question, mostly phrased in an if/then/else format.  For example, the algorithm would evaluate if a condition were true, and then follow one set of instructions- and if false, follow another set of instructions.  An iterative operation follows a “while” format- while a condition is true the algorithm will follow a certain amount of steps, and when the condition becomes false the algorithm will stop.  The rest of the chapter gives examples of different types of algorithms: Go Forth and Multiply; Looking, Looking, Looking; Big, Bigger, Biggest; and Meeting Your Match.  Given a set of numbers or criteria, we were able to write our own algorithms to fit the conditions given in a problem.

             Chapter three described the ways and conditions in which algorithms are most efficient.  The efficiency varies according to how much work is required of the algorithm, and because some algorithms are so large that they go up exponentially, it was important to create different ways to solve algorithms that didn’t take an exponential amount of time.  The algorithms that do the most work respectively are those of order n, log n, and n squared.  There are also desirable properties for algorithms besides efficiency: correctness, ease of understanding, and elegance.  Chapter four focuses on the binary numbering system, which is how every computer stores information internally.  We learned how to convert binary numbers to decimals, and decimals to binary.  We discovered that binary numbers can represent sound and images as well, and that computers use binary code because of its reliability, even though it is theoretically possible to create a “decimal” computer.  From there we centered on the construction of computer circuits- which is based on the branch of mathematics known as Boolean Logic.  A Boolean expression is something that evaluates with true or false.  There are three different Boolean operations: AND, OR, and NOT operations, and can all be used to construct a circuit.    

            Chapter five begins by introducing the concept of abstraction, without which it is impossible to study computer science.  Computers are very diverse in nature- the book explains that computers can cost up to 30 million dollars, be as small as a hand, and differ in such ways as size, cost, speed, memory capacity, etc.  One of the big concepts of the chapter is the Von Neumann architecture, the theoretical model of computer design upon which every computer is based.  It goes on to describe the three characteristics upon which the Von Neumann architecture is based: the four subsystems (memory, input/output, ALU and control unit), the stored program concept (when instructions for the computer are stored in memory), and the sequential execution of instructions (the process of instructions being decoded by the control unit. 

            The contents of chapter six consist of a description of an operating system.  The operating system is important because it communicates with other users and performs their requests.  A lot of these operations are for the purpose of a more friendly virtual environment, and one of the ways that this is accomplished is by way of a programming language.  While machine language was the first programming language invented, the shortcomings of this were soon realized, and assembly language was invented.  The great aspect of assembly language was the fact that it was designed for people and computers.  Once the assembly language was invented, there had to be a way for the language to be executed- via an assembler and a loader.  The assembler translates the assembly language into machine language, and the loader reads instructions and stores those instructions into memory.

            Chapter seven takes a closer look at computer networks: what they are, how they work and what benefits they have upon today’s world.  A computer network is independent computer systems that are connected for the purpose of sharing information.  Networks were first connected by dial up phone lines, but because of the low amount of bandwidth that these connections could convey, a new technology called broadband has replaced the dial up.  Broadband is divided into DSL, Cable and Ethernet, and is basically a very fast connection.  The fastest connection is Ethernet, and it was invented in the 1970s.  One recent stride in the world of communications is the spread of wireless (radio, microwave and infrared signals).  The chapter goes on to describe the two types of networks, the LAN and the WAN.  The Local Area Network connects devices that are in close proximity, while the Wide Area Network connects devices that are not in close proximity (the LAN mainly uses Ethernet, while the WAN primarily uses store and forward, packet switched technology).  The internet and email are concepts also explained in the chapter.

            Chapter eight focuses on the high level programming language C++, and how high level languages are used to help overcome the disadvantages that are presented by assembly language programming- mainly the fact that it wasn’t very user friendly.  This high level language can help the person that is programming be able to focus on their project on a higher, less complicated level without having to worry about the details.  The software life cycle was also discussed, and the significance of coding in that process.  In chapter nine, the idea of programming languages was further developed.  It was explained that there are many types of programming languages (C++, Java, html, etc.) that are used for various purposes and applications.  Even though there are so many types of languages, they all serve the same purpose in that they allow higher levels of abstraction so that the computer scientist or programmer can think in bigger pieces and not get confused with the details.

            The topics of chapter 10 are a direct segway from the previous two chapters, and the main idea is that of the compiler, which translates high level languages into machine language prior to execution.  Compilers are very large and complicated pieces of software, especially for languages like C++ and Java.  It was reported that the first compiler for the FORTRAN high level language took 18 people a span of years to complete in 1957, and even now it takes programmers years to create an efficient compiler for programming languages.

            Chapter 12 focuses on computational modeling, which is also known as simulation models.  Basically, a simulation is modeled by algorithms or mathematical equations that depict the fundamentals of a system.  This simulation is translated into a high level programming language and used with the Von Neumann architecture, and the reason for using these theoretical simulations are ethics, safety, and speed, to name a few.  Models are drawn for many scientific fields like physics, chemistry, ecology and economics.  While computational modeling is used on a more theoretical basis, there is a concept known as e-commerce that is used for commercial applications such as paying bills online and buying and selling products.  These commercial applications are described in chapter 13.  E-commerce takes as much planning as it does to open a physical store, and has many capacities that must be considered in order to be successful.  The chapter describes the basics of making and maintaining a website in order to sell retail goods.  There must be advertising, an obvious domain name, and the ability to reach the website via search engine.  It also explains the intricate details that go into designing a website, from checkout carts to frequently asked questions.  Security is also crucial on a website that specializes in sale- making sure that your information is not compromised as well as the customers’ private payment information.

            The basis of chapter fourteen lies in the branch of computer science known as artificial intelligence.  Artificial intelligence is the incorporation of intelligence into computer systems, which can be programmed to perform tasks at a faster speed and more efficiently than can humans.  This intelligence can be used for various things like genetics, evolutionary approaches (like swarm intelligence), speech recognition and image analysis.  Chapter 15, the last chapter in the book, addresses the issue of ethics in computing.  It gave some scenarios that were fun to discuss in class- such as the controversy over Napster and MP3s, encryption software to keep the government from invading private property, hackers and genetic research.  I found the case on genetic research particularly interesting, and the spins that they put on the scenario really made me rethink my opinion on the subject.  This was an example of how there can be multiple facets in any ethical dilemma.

            On the midterm exam, the first two questions were short answer, and as I got full credit for both questions I don’t feel the need to revise my answers.  The first question was about different types of machine language, and it called for an explanation and contrast between the three main types of language.  This is the answer I put: Machine language is a language of instructions.  Only the control unit of a computer can decode/translate and perform the instructions.  Typically these instructions are expressed in binary code.  A typical example of machine language has an op code and multiple address fields.  Assembly language was created after machine language because some inconveniences were noticed.  For instance, not everyone can read binary code.  So assembly language was created for people and computers, and thus is more user friendly.  High level programming language is a step above the other two.  The cool thing about high level language is that it isn’t specific to one machine, and it is much more powerful than the other two languages.  These use people language and mathematical language to help users.  The difference between assembly language and high level language is that assembly instructions are only translated into one binary instruction, while high level language can be translated into many.  Assembly language is translated by an assembler and a loader into machine language.  High level languages are much more complex- they need what is known as a compiler to translate into machine language.

            The second short answer question addressed abstraction, and the question called for a description of the term, why it is important in computer science and to give an example of its usage.  Here is my answer:  Abstraction is the term for making a complex system easier to understand, to put simply.  You can take only the necessary high level generalities and separate them from the small details, thus making the concept easier to understand.  For example, the president of McDonalds can use abstraction by viewing his company in terms of chains of stores, rather than by every individual worker in every store- otherwise there would be too many pointless details.  Abstraction is important because it helps to make computer science user friendly.

            This class has been an eye-opener for me on so many levels.  At first I was a little reluctant about taking the class, seeing as how I had no prior knowledge about computers and how they work.  For me it was a little slow going, but as the semester went on I really began to enjoy the class and the new abilities that it offered me.  Learning about the minutia of a computer was not in my interest field, but it really gave me an appreciation for the work and thinking that goes into making a computer- and the tiny details on which it is able to compute and function.  I never knew what binary code was, although I had heard of it before.  I really enjoyed learning about the ethics in computing, and I liked how we were able to discuss topics like genetic research and encryption software in class.  I enjoyed playing around with the Alice software, because I feel that it gave me a lot of new experiences and some practice in the world of virtual games. 

Probably my favorite aspect of the semester was when we were assigned to create a webpage that was fully personalized and had links to other projects that we had completed.  I know that my ability to write in HTML code will come in handy in my life after college, which is coming in May.  I never ceased to be fascinated that a typed document, once opened into the internet, could become a designed webpage, complete with color, links and pop up boxes.  I was truly amazed at this technology and I know I will cherish this ability forever.  I am also glad of this experience because it has led to some great conversations between my father and me, who is a banking executive and knows quite a bit about computers and networking.  He was especially proud when I told him I could write in HTML code.  Altogether, I feel that it has been extremely beneficial for me to take this class, as I have seemingly tripled my previous knowledge on the subject.  I am glad for the experience, and I genuinely hope that I will be able to apply my knowledge in the career of my choice and for the continuation of my life outside of Westmont.