Danielle Gardner

Fundamentals of Computing

December 5, 2006

 

Engaging Semester of CS-005-1

 

            I rarely ever thought about giving my mind a heavy yet beneficial workout until I took Fundamentals of Computing. Looking at it from an analogy standpoint, enduring Fundamentals of Computing was like joining the new and exciting gym down the street where you have a difficult time understanding what everyone is raving about it until you endure the strenuous physical activity for yourself. Sometimes when you try these new elliptical workout machines, you find you are stretching and strengthening muscles you never quite realized existed until attending that gym. Well CS-005-1 was that ÒgymÓ and the concepts I learned this semester in class were the agents or machinery that worked parts of my brain I was unable to activate in the past thus I rarely recognized that they ever existed. I was one of many who had a preconceived notion of computer science being a field that primary deals with the study of computers and due to my beginner knowledge of computers, my expectations of the class were very low. Nevertheless, my notion was false and my satisfaction rose each week in class. Topics we covered in class ranged from problem solving and using Boolean logic to ethical issues dealing with Artificial intelligence. It became apparent that CS-005-1 covered broader ground than suspected. Most fundamentally, I learned that computer science deals with algorithms and without them, simple to very complex tasks would not be executed nor solved. Realizing that I would be dealing with algorithms and thinking in algorithms, my mind began processing problems and concepts abstractly.

       Abstract thinking activated a part of my brain I rarely used in High School. In fact, the very idea of Abstraction is scary because it involves an entirely new way of thinking and processing information. I began to think in specific ways devoid of messy details, which became a change I welcomed more than frowned upon. Sorting through heavy details while dealing with Computer Science can be stressful and overwhelming. Therefore, sorting through a computer problem using mnemonics such as Fetch-decode-execute-cycle and grouping components that would otherwise seem impossible to sort through, becomes easier to understand and less complex when applying abstraction. Without abstraction, we would get lost in our study of this complex world of computer systems, designs and logic.

       Although I broadly touched on the concept of algorithms, the different ways to represent Algorithms seemed most beneficial to my learning. Using Pseudocode means taking shorthand approaches when describing a computer program (40) as using relatively simple and well-defined structural wording does just this. Sequential, conditional and iterative operations were studied and applied in class to better understand how algorithms can operate. By focusing on Sequential operations, we dealt primarily with computations that help to solve values that were stored in the variable and these sequential operations best embody the idea of simplicity and usefulness. Conditional operations tend to ask questions that later allow for further operations to be performed thanks to the answers given for those questions. Our class could most readily detect conditional approaches when we saw ÒIF/ElseÓ statements. Lastly, the iterative operations were somewhat an incorporation of conditional statements. We notice the iterative statements as ÒwhileÓ statements that evaluate each Òtrue/false conditionÓ and determine if they are true or false. This operation is appropriately followed by performing loop operations until a false condition is presented, thus terminating the loop.

       The phrase ÒHardware WorldÓ scared me primarily because the root word was Òhard.Ó Although the concepts in these chapters were difficult, they were not impossible to comprehend. Understanding how to store information inside of computer and the complex world of ÒbinaryÓ became more a study of how computers compare and contrast to human beings. We represent information by communicating language and by using our bodies to communicate various messages. On the other hand, computers store binary data, a series of zeros and ones that are setup to represent certain values. An example of this representation would be converting 12 to binary: 111000. Expressions like (x=2) is an example of a Boolean Expression which will determine whether x really does equal two making it true otherwise making it a false expression. To my surprise, I enjoyed collecting binary inputs and outputs for the sake of constructing pictorial circuit diagrams consisting of GATES, which gather all the binary inputs, tie in some AND/OR/NOT gates and eventually produce a single output.  Sounds complicated, but once I followed the sequential steps for finding binary values and representing those to construct circuit diagrams, I felt like a computer whiz.

       In a world where complexity makes it difficult to program efficiently, Assembly language is designed to counter this and help the user program easier by using words such as ÔLOADÕ, ÔSTOREÕ and ÒGETÓ, mnemonics that speed up the programming process. I learned that assembly language is most appropriately translated using an assembler. Machine language is known for being a first-generation language and unlike Assembly language, which utilizes symbolic memory locations, Machine language deals with binary addresses like the 1Õs and 0Õs I learned about in the ÒHardware World.Ó The feasibility of using high-level programming languages is made possible by incorporating language that we use in our everyday lives and mathematical notation. Compilers provide the best aid in the translating process of this high-level language.  My overall conclusion of these two languages was that the Assembly language was proactive in successfully conquering what the Machine language has inadequately provided the user.

       As many of us are already using other means to communicate such as the Internet, the section our class discussed on Computer networks, the Internet and the World Wide Web filled in gaps of knowledge I was not aware of.  When I entered Westmont as a freshman and went down the list of necessities for proper Ôdorm lifeÕ, my Resident Assistant mentioned that I would need to get an ÒEthernetÓ cord in which I replied Òa what?Ó As a part of effective broadband technology, the Ethernet is so high-speed that it is extremely useful on a college campus because it specifies everything from how long you wait before transmission. More interesting to discover was that the Ethernet was the most widely used LAN technology, a network that connects hardware devices that are close in distance. On the other hand, you have WANS which deals with connections that are farther in proximity and because they cross private property, telecommunication services must be purchased by users for proper use of them.  The most important of all of these is the Internet, my friend and sometimes my enemy. This Internet service represents an enormous Ònetwork of networks.Ó Although I consider myself to be an expert at making use of the InternetÕs resources, I was always lacking in my knowledge of what governs the operation of the Internet. To my surprise, the Internet is made up of five layers, each with a specific responsibility.

       Without one of the five layers, the overall communication tasks we utilize from the Internet would be useless. The first layer we discussed was the Physical layer, whose goal is to create a pipe between two computers and govern the exchange of binary digits across a physical communication channel. The second layer is straightforwardly called the Data Link Layer whose goal is to carry out error handling, framing and creating an error free message pipe that is vital to avoid serious problems. The third layer is called the Network layer, used to deliver a message from the site where it was created to its ultimate destination and establishing an error-free message pipe. The transport layer happens to be the fourth layer and is essential in examining the newly arrived message at the destination node in order to assess if the other program should receive it. Lastly, our class discussed features of the fifth layer known as the Application Layer, which is one of my favorites because it deals with the implementation of various applications that perform certain functions such as receiving electronic mail to accessing web pages.       Along the lines of creating and accessing web pages, learning about special purpose languages such as HTML aided in my understanding of how web pages are created or built using this Hypertext Markup language. All the various tags, known as the special characters that represent the text of the webpage, give the web page those special effects I yearned to have one day in my very own page. Each tag has a specific purpose such as making text bold, providing a hyperlink address or even creating a data table. As I was given the direct assignment to create my own web page, I was able to use these special tags and apply HTML code while incorporating my creativity. Because browsers execute statements in the order they were received, I learned I can place scripts in the HEAD or the BODY and by inserting these scripts into my webpage, I am essentially adding the positive functional abilities of JavaScript.

       The object-orientated world of ALICE taught me to create my own computer-animated environment while using the ÒstorytellingÓ features as its appeal. Although most programming languages are designed for computation reasons, Alice is interactive and fun, allowing users to create a virtual world of fantasy. Alice attracts many users, due to its syntax free programming environment. Having the opportunity to make movies and games becomes motivation to perform other programming tasks. By watching the program execute the functions you have implanted, the user is allowed to see what mistakes they have made. I was one of those users that saw many mistakes, hence my Penguin and Eskimo movie.

       One of the most intriguing parts of the Computer Science course was learning and discussing the idea of Artificial Intelligence by incorporating intelligence into computer systems.  The sustaining goal of Artificial Intelligence is to produce machines that behave as well as or better than humans and we find ourselves contemplating questions such as Òcan machines think?Ó Creating computers that have human abilities such as having the ability to compute, use recognition skills and reasoning is quite the futuristic design and arouses many questions, raises eyebrows and also produces many concerns. For computers to have capabilities so complex as learning as well as reasoning almost degenerates humans to a simplified version of a computer. That was my original assumption of Artificial Intelligence, before I was given concrete arguments that were supportive of this branch of Computer Science.  What I failed to see before was how the beneficial components of AI exceed the possible risks. In general, Artificial Intelligence is broken up into two categories: Strong AI which makes decisions on its own and Weak AI which can make decisions but none based on what is has learned.

       I was intrigued by Alan TuringÕs ÒTuring Test of 1950Ó where an interrogator must differentiate between a human and a computer based on textual messages the interrogator receives. The idea that human intelligence could be rivaled by computers was definitely attention grabbing. I enjoyed learning about an opposing claim to Artificial intelligence, composed by the Chinese Room. This experiment tried to prove that although computers can communicate with natural language, they are unable to fully understand the principles of language. These experiments helped me visualize the implications of Artificial Intelligence especially how this innovative computer technique could be abused.  DescartesÕ dualistic view claims that the mind and body are separate yet are able to interact together thus how can Artificial intelligence exist without a soul? I realize computers can never have a soul, yet it would be unfair to raise the value of computers on a level higher than how we value humans. God created humans in his own image and breathed life into existence, not computers. However, through taking CS-005-1, I realized that God still gave us, as human beings and as Christians, the resources and intelligence to pursue other forms of technological innovation for the purpose of making improvements to every day life. If we did not put our ideas into action, then what would be the whole purpose of going to college and pursuing a higher level of education?

       In essence, learning concepts in Fundamentals of Computing has broadened my liberal arts knowledge and allowed me have a greater appreciation for the abstract components of computer science. Where I was less interested and discouraged before I entered this class, I now can walk away speaking in mnemonics, executing operations in algorithms, implementing HTML into my web pages and growing fonder of the positive aspects of computer networks. Practically using a different side of my brain when processing these concepts abstractly has been a rewarding experience and encouraged me to pursue this subject matter in greater depth. Overall, I was engaged in the material and judging by my ability to pass on the knowledge I have learned to fellow peers, I would say CS-005-1 was vastly beneficial. 

 

 

Gersting, Judith. Schneider, G. Michael. An Invitation to Computer Science. 4th Ed. Canada: Thompson Source Technology. 2007