Over the course of this semester, I have learned much in Fundamentals of Computing. I have learned how to write algorithms. I have learned how to translate binary code. I have learned how to write html and how to make a website. I believe that I have developed abstract reasoning skills. I have become more familiar with the computer and the way it works. I have learned how to create an online portfolio and resume.
As Christians, it is important to study computer science, especially at Westmont. Christians need to lead the way in examining ethical issues when it comes to computing. Issues such as: security, privacy, confidentiality, pornography, plagiarism, intellectual property, and many others. Through technology we can spread the Gospel in a way that could never be done before. The world needs Christians who understand technical issues. The world needs Christians who can reason abstractly.
Computer scientists use abstract reasoning to solve problems. Reasoning abstractly means to look at the problem at hand, rather than dealing with every single detail unnecessary to solving it. Abstract reasoning is fundamental to computer science. Computer scientists reason abstractly when developing algorithms to solve problems, and then translate those algorithms into pseudo code and computer instructions. For example, when dealing with the software layer in writing a program, one doesn’t need to be thinking about the details of how the hardware carries out its instructions. Instead, it is better to focus on writing the software, excluding the unnecessary details. Abstract reasoning is not only useful to computer scientists, but can be applied to real life as well. Abstract reasoning helps us with the complexity of life.
Through this Fundamentals of Computing class, I have developed a broader understanding of computer science and all that it entails. Some common misconceptions of computer science are: 1) it is simply the study of computers; 2) it is the study of how to write computer programs; 3) it is the study of hardware and software. However, computer science can best be described as the study of algorithms. Computer scientists design and develop algorithms to solve problems.
An algorithm is a procedure for solving a mathematical problem. It has a certain number of steps and may involve the repetition of an operation. It is a step-by-step method for accomplishing a task. It is an ordered sequence of instructions used to solve a specific problem. In other words, it’s like the recipe to baking a cookie. In class, I learned how to write out an algorithm for baking a cookie.
There are different categories of operations used to construct algorithms. There are sequential operations, which carry out a well-defined task and when that task is finished, the algorithm moves on to the next task. There are conditional operations which ask a question, and then select the next task to be executed by the answer to that question. There are iterative operations which say to go back and repeat a previous series of instructions. Algorithm design is the first step in developing an algorithm. Algorithm design must ensure that the algorithm is correct, and it must ensure that the algorithm will work in the best possible way on its own. Pseudo code is used to design and represent algorithms. Pseudo code is readable, unambiguous, and able to be analyzed. There are high-level programming languages which can be used to write pseudo code. For example: Scheme, C++, and Java. Algorithm design can be a very creative process.
Through this class, I have learned about the history of computers. The history begins three-thousand years ago with important contributions made by the Greeks, Egyptians, Babylonians, and other ancient civilizations. In the seventeenth century, logarithms were invented by John Napier to simplify difficult mathematical computations. In the late seventeenth century, mechanical calculators were made. In the nineteenth century, programmable card processing machines were created. These machines could automatically read and sort data entered on punch cards. Then in the twentieth century, the computers we know today were birthed. The first computers were incredibly big and could only do so much. They could only store a few kilobytes of information at a time.
In this class, I learned how to create programs using software called Alice. In Alice, I created worlds and caused stories to unfold. In Alice, a program consists of a set of statements. Methods are used to produce a specific behavior from the objects in the world. Objects were inserted into the world and used to tell a story or to get something done. The first project I created in Alice was to get a bunny to hop realistically around a building within the Alice world. I learned how to move the various parts of the bunny and how to get the camera to follow its movements. I must admit, however, that the bunny tends to jump a whole lot faster than it realistically should. For my second project I was required to use certain functions. I created a world with an oasis, around the oasis I placed dead animals, and I had a woman enter the scene. The woman says she is thirsty and approaches the water. She looks at the dead animals surrounding the water and thinks that it could simply be coincidence. She asks the viewer if she should drink from the water. If the viewer presses “y”, she drinks, says that the water was poison, and dies. If the viewer presses “n”, she walks off in search of water elsewhere. For the midterm, we were required to get a person to do a certain type of exercise depending on which key the viewer pressed. Learning how to use the Alice software was both educational and enjoyable.
There were many other things I was able to learn in this course. I learned about the functions of different part of computer hardware. I learned how networks work and how information is sent and received. I learned about assembly language and machine language. Assembly language creates a more productive, user-oriented environment than machine language. An assembler translates an assembly language program into a machine language program. I learned about how operating systems were created and how they evolved. An operating system deals with user interface management, it takes care of program scheduling and activation, controls the access to system and files, tries to find efficient resource allocation, and deals with deadlock and error detection. I learned that the Internet is just a huge interconnected “network of networks.” I learned that a compiler is a piece of system software that translates high-level languages into machine language. A compiler’s goals are the correctness and the production of efficient and concise code. I learned about models and how they are an important way of studying physical and social phenomena, such as: the weather.
The most important aspect of this course, to me, was learning how to write in html and create a website. In this day and age, I think it’s important for everyone to know their way around the Internet and how to create pages if they needed to. Websites can be extremely useful things. For example, I’m a composer and a writer. My professor suggested that I put my music up on a website. Now that I know how to create my own websites I can put any sort of content up on the page instead of having to deal with advertisements and other annoying things. I learned about the html format and which tags did what. In order to do anything, proper html tags must be used. I learned how to insert images into a webpage and how to create links to other websites.
For the first part of making a website, we were required to make a resume. I spent an extra amount of time on it because I wanted to make an actual useful resume, and not just one to fulfill the assignment. After getting the initial layout of the resume down, I had to convert that format onto a webpage using html. One requirement for the resume page was to use JavaScript. I created a text box where someone could enter their name and a little box would pop up that said, “Welcome, ‘so and so.’” Another requirement was to have roll-over links which would change the color of the background when the mouse scrolled over them. At first the html language seemed daunting, but after awhile I got the hang of it and really enjoyed it.
I enjoyed it so much, that I decided to make a full website for the next assignment. My friend makes comics, but he doesn’t have a website, so he just emails them to people when he completes them. I thought I should make a website for him, so I took all of his comics and made one. The process to make the site took a whole lot of time, but I enjoyed it nonetheless and have decided to keep it up in order to help out my friend. Making the website has shown me that getting a career in computer science could be a lot more fun than I had once thought.
I was able to use software called Invitation to complete labs. In one of the labs, I learned a little about how to write code in C++. In another, I explored the functions of a Turing machine. I learned about assemblers and compilers, and language translation. I learned how a network sent and received information. I even got to play with an encryption tool. I also got to watch as the program demonstrated artificial intelligence.
As the end of the semester approached, I began to work on my final project, which was to create an online portfolio displaying all the work I did over the semester in Computing. Making the front-page was easy enough, but I was sure about which color to use for the background. Rather than going to a reference website that could show me the code for whatever color I wanted, I was able to have some fun by experimenting with different versions of the color code to see what turned up. For this reason, the page is green, but pink was my second choice.
A very beneficial thing to me that happened in class, was taking a tour of the college’s computer network. A computer specialist at Westmont, led a guided tour of the college’s computer infrastructure. I was led into the basement of the administrative building, and the library as well, and was shown how data gets sent to and from the campus. It was important to see just how delicate and outdated the hardware was because it gave me a better understanding of the I.T. department. Now I appreciate them more, because I realize just how fragile things can be and that I should not jump to blame them when something goes wrong. It was almost depressing in a way, to see how far behind the times Westmont’s technology had become because it seems like it will only get worse as new technologies come up and the computer department isn’t given the funding available to catch-up.
This class has surprised me by showing me that I might be able to pursue a career in computers I really wanted to. When I was in middle school I had wanted to be a computer programmer in order to be able to develop games. Yet, when I became older, I decided that sitting behind a computer screen all day, writing code, would probably not be as fun as I had once thought. Now I can see that I ignorantly did not give computer science the chance it deserved because some aspects of it can be a lot of fun. As a senior at Westmont, I have no way of changing my major (music) now. However, I can say that if I knew that I would learn so much, and have so much fun in the Fundamentals of Computing class, I may have made different choices.
-Michael Barrett
|