Matt McKay Jr. 

Dr. Kim Kihlstrom

3 December 2007

Final Project -- 2000 Word Essay

The Fall Semester of 2007 is finally coming to a close. It has been a long haul on the road to learn about computer science, but after 16 weeks or so, I believe I have come a long way. Personally, I feel like a gained a fairly good grasp on the world of computer science through taking Dr. Kilhstrom's Fundamentals of Computing course. I think the main reason why I originally decided to enroll in this class was the same reason why I learned what I learned -- and that sole reason is Dr. Kim Kihlstrom, herself. I had first met Dr. Kihlstrom during Westmont's Perspectives program, in the Summer of 2006. I got the chance to sit down and ask her a lot of questions about whatever came up in our group's conversation. She was honestly one of my first real impressions of this great school, and boy was it a good one! So that is the background, and the reason why I chose to take Fundamentals of Computing was because Dr. Kilhstrom seemed like a tremendous teacher, and I felt like it would be one of those enjoyable classes that you can really take a lot away from. I am not trying to simply talk the professor up, I am just truly saying that I enjoyed Dr. Kihlstrom's class to the full extent. I highly recommend this class to any student who wants to dive into the world of computing, and no real background or extensive prior knowledge is really needed! I definitely lacked any of the sort! Anyway, next I will give an excerpt from my midterm short-answer questions as part of this assignment. The first two questions on our midterm were for the students to define abstract thinking, and secondly, to describe computer science relating to algorithms. I did pretty well on these two questions, (I wish I could say that about the rest of the test!) So, my answers to these questions are shown below: 

To think abstractly can be thought of as thinking characterized by the ability to use concepts and to make and understand generalizations, such as of the properties or pattern shared by a variety of specific items or events. Reasoning in an abstract fashion is important in computer science because there are so many new findings in the field every year, and to be able to understand all of the complex patterns and algorithms and whatnot, one must be able to use their abstract reasoning skills to understand, as well as keep paving the path of new findings in the field of computer science. An example of reasoning abstractly could be to create an algorithm for your computer company to make it easier on your employees. Without abstract thinking, a task like this would be very hard to complete. 

An algorithm is “a procedure for solving a mathematical problem in a finite number of steps that frequently involve repetition of an operation; broadly: a step-by-step method for accomplishing some task” (Invitation 6). Basically our goal when creating an algorithm is to make it as elegant as possible. Algorithms are great tools to help simplify problems and they help us get where we want to go in a more organized fashion. 

There are some common misconceptions when people talk about the field of computer science. People say that computer science is the study of computers; some also say that computer science is the study of how to write computer programs; others may also tell you that computer science is the study of the uses and the applications of computers and software. To address these misconceptions, I can simply say that computer science is not limited to any one of those narrow ideas. It is in fact a field that brings all of those elements together, as well as many other aspects. Our “Invitation” text book describes computer science as “the study of algorithms, including 1. Their formal and mathematical properties. 2. Their hardware realizations. 3. Their linguistic realizations. 4. Their applications” (Invitation 4). To make it easier to understand, computer science is not limited to people’s simple-minded, ignorant misconceptions – it is a broad field that is growing by the day and a field which incorporates room for people with many assorted talents and skills with computers.  

So these were my answers that I uploaded onto Eureka (where we turn in all of our work for this course), for the midterm. One thing that I really respect about Dr. Kilhstrom is that she is very practical in her teaching. She understands that everything that she lectures on isn't going to be 100 percent comprehended, so she helps us out by letting us make detailed notes, and use our books for references. This is a unique teaching style that I enjoy being a part of, because it doesn't emphasize simply "cramming" for a test the night before, while staying up until 5 A.M. in the morning -- which probably about 10 percent of that will even be able to be recalled a few months later. She believes that just memorization is not the key to being successful in her class. I agree with her on this. Students should be rewarded for taking good notes. My notes definitely helped me on the test. There were some points where my notes were vague, and those are the sections that hindered my test grade, but overall I like the style that Dr. Kilhstrom uses. You also learn not to take her class lightly, because some students may take it for granted that the test is open book and open note, and may not fully prepare themselves for the exam. Dr. Kihlstrom's tests are not a walk in the park, let me tell you! 

This semester has been a fun one in Fundamentals of Computing because we kind of jumped around a lot, as far as what the focus of the class was. First, we got into our textbooks and got kind of a crash course in all of the basics of computing such as algorithms, the history of computing, and a number of differentiating descriptions of computer science in general. While going through the first several chapters of the textbook, we simultaneously worked on labs in class in small groups or by ourselves. This was one of my favorite aspects of the class. The labs were very interactive, pretty much like the rest of the class for that matter! Another aspect that I found really cool about the class, was that there is a computer science website that Dr. Kilhstrom would post her slides on live! I had never had this in any of my classes before, and there were some really cool features, including a special way to submit answers, that somehow got transfered up onto the screen in the front of the room! I am not quite sure how it all worked, I'll leave that up to Dr. Kilhstrom, but it was a really cool feature in the class. The labs were pretty hard, but if we ever had any questions that other students were not able to answer, Dr. Kilhstrom was always there with a smile to help us out. That is another thing -- Dr. Kihlstrom is a very approachable teacher which makes things incredibly easier as a student. I really appreciate a teacher that actually loves to help the students during office hours. I really feel disappointed that I did not get to spend more time in her office hours during the semester, due to my obligations with the basketball team (as the manager), otherwise I think I would have got even more out of the class! I know that some of my good friends in the class went to almost every office hour opportunity, and they really enjoyed it and were thankful for every minute of it. It is just nice to have a teacher that you know is always there for the students -- a teacher that you know for a fact wants you to get the best grade possible in their class, and a teacher that wants you to learn to your full capability. That's what Dr. Kilhstrom is to Westmont students. 

Anyway, back to the course development -- after initially going through the lab manual, and the text book, we began our way onto the world of Alice. This was a really cool, yet confusing, part of the class. Alice is this three-dimensional computer program that allows you to create a number of your own worlds, with different characters in them. I really liked this program and found it to be very interesting -- that is, until I failed the Alice portion of the midterm -- just kidding! Furthermore, it was really interesting to design different 3-D worlds, and to use our creativity in that manner. Dr. Kilhstrom gave us a lot of freedom on our Alice projects as far as what to put in our worlds and how to make them. She would give us some simple guidelines, and pretty much give us the week to create them! Looking back, I know I could have put some more time into really developing an excellent 3-D world, but now I have a little bit of knowledge on the subject, so maybe I can pursue it more some day! I definitely am excited to go home over Christmas break and show my younger siblings about the Alice program. I am sure my 16 year old brother would be intrigued! The bottom line is that I had a lot of fun working with the Alice program, no matter how confusing it was at times! One thing I may add -- Dr. Kilhstrom really encouraged the better students in the class to take kind of a leadership role, in explaining different problems to ones in need (like myself), so I definitely learned a lot from my fellow classmates as well. 

After the "Alice Phase," we went back to the textbook and learned about things such as Boolean Logic, Gates, Binary Numbers, the inside of computers (taking them apart!), the organization of computer systems, paradigms, models of computation, and turing machines, just to name a few! The class was definitely fast-paced, and jam-packed with information. It is cool to look back at the slides to re-emphasisze what Dr. Kilhstrom was lecturing on in class. The slides on the website go along wonderfully with the text book. The two are right on line with each other, which is a very helpful studying tool. What is also very helpful about the format of the slides is if you are for some reason absent from class, you do not even have to miss a beat because the slides are perfectly accessible on the class website.  After going through about the 14th chapter of the text book or so, we began discussing our final project and presentation. Dr. Kilhstrom split it up into three pieces, on the way to our final presentation the week before finals. Our first big step was to create a resume as an html document and to publish it online! This was a really cool assignment because we had a lot of freedom as students for how our page was to look. Secondly, we made another web page of our choice. For our final project, we were assigned to make a homepage where we had our portfolio of the semester, with basically all of our textbook homework, as well as our Alice assignments. There were links to all of this, in addition to a link to our resume and our second website. It was very hard for me to comprehend the whole html and writing in a different language part, but it is definitely something I am glad that I went through. 

If anything, I learned in this class that it is so important to be at least somewhat computer-savvy in this day and age. Technology moves so fast, and it is hard to keep up with the computer science world, because it is so booming, but it is becoming more and more increasingly essential to have a well-rounded knowledge about the fundamentals of computing -- and that's exactly what Dr. Kihlstrom's class did for me this Fall!