Monday, December 12, 2016

Where Do I Go From Here?

I have learned a lot about Computer Science in my first semester. I realized there are a lot of jobs out there for Computer Scientists. In almost every field there is technology that is ever growing, so there are a lot of job opportunities to choose from when I graduate. I'm still not sure what I want to do with myself when I graduate. I know I want to do something with programming, I'm just not sure what. It would be really interesting to work on the latest technology to further space exploration or the medical field. Although I would probably be happy just solving problems with programming in most any job. I've noticed a lot of people around me wanting to go into cyber security and I don't think that is something I want to do. My plan as of now, is to get a programming job and program for years and years and then maybe work my way up to a management position. Although that is a very loose plan.

There were a lot of topic in my intro to computer science class that I really enjoyed, a few of my favorites were how graphics have improved and the history of video games. I love seeing graphics for games and movies improve over the years and become more and more realistic.  It was really fascinating to see how the graphics are made and different kinds of graphics.One  thing I found really cool is why people use ping pong balls to record movements for CGI. The ping pong ball has a set diameter and you can track the ball to see how close or far it is to track movement. The history of video games was just really fun to know about, and I actually didn't know a lot of what I was taught. Like how Nintendo was originally a card company. 

I am going to continue taking computer classes to finish my Computer Science degree, my next class in CIS 300. It is a harder programming class than the one I am currently in, and uses C# and visual studios unlike Java that I have been mainly using. The switch from Java to C# has not been to hard, the languages are fairly similar and only a few commands have been changed. I'm not sure what classes past that I need to take but I'm looking forward to learning it. As of right now I still prefer Java, mostly because I've been having some major problems getting Visual Studios to work, but I'm sure once I do I won't hate it anymore. One thing I'm excited about when I finally finish the classes that I'm required to take, like chemistry and calculus, so I can focus on computer classes.

Out of all the textbooks I really enjoyed Pattern On The Stone, it was the easiest to pick up and read in my opinion and was really interesting to read. One of the most helpful chapters was the Algorithms chapter, which helped me understand algorithms really well. We also ended up touching on algorithms in a lot of topics and assignments, so I went back to that chapter a few times.

Being also an artist, I'm really drawn to video games and how they are made. I'm not sure if I would want to make one myself but it seems like a really fun and interesting project to work on. Maybe in the future I can use my artistic skills as well as my programming skills in my future career. 
I'm going to miss this class, as I learned a lot and just generally had a good time being in class. 

Monday, November 28, 2016

Making Meaning: 9 Algorithms That Changed The Future

In our class, our last textbook is 9 Algorithms That Changed The Future by John MacCormick. All together the book was rather interesting but didn't really grab my attention, which is what I really expect from a textbook. Like all the textbooks in this class it is not horribly long but long enough to get the point across. There were parts of the book that I liked and that I felt MacCormick explained really well. One starts on page 94 and explains a simplified neural network. He explains that a neural network is a computer model that represents a small faction of the brain, but very simplified. He goes on to talk about the umbrella problem, which simply is if you should take your umbrella or not based on the conditions outside. In the model he presents, he has multiple neurons that is assigned a number called its threshold. The neurons add up their numbers and if it is at least the number of the threshold the neuron fires, otherwise it does nothing. In the umbrella problem there are three inputs into the network where the neurons are. These three inputs send signals into the network, just as our eyes and ears send signals to our brain. Each input states true or false to the condition they are assigned, such as "already raining?", "humid?", or "cloudy?". The network has two neurons, one with a threshold of one and the other with a threshold of two. The first threshold will fire if "already raining?" is true or if "humid?" and "cloudy?" are both true and fire the neuron with two thresholds and thus fires the first. If either of these are met the network decides to take an umbrella, if not it remains idle.
Another part of the book I liked is MacCormick's description of tables starting on page 124. In class we had a similar discussion of how tables should work and be set up and this kind of cemented some ideas about tables. In the book it is very simplified; using a table to list people, their ages, and people they are friends with. In class we discussed how tables were used to make lists of people on websites, such as usernames and passwords.
I already knew a few things about algorithms from past assignments and books so this book did not teach me a whole lot more about them then I already knew.
John Dupuis wrote an article reviewing this book and I agree with what he has to say about it. He talks about how the book is written for those who love computers but don't know about all the inner workings of the computer. This book does a great job of describing different algorithms to the general public but does come off a bit wordy. Dupuis adds that he feels that MacCormick could have been more "techy" with the writing of this book, such as adding pseudocode or a flow chart. For me I really appreciate the amount of pictures in the book to explain what he is talking about. A few of them really help demonstrate what he is talking about. Otherwise though the book is really well suited for a general audience of people who want to know computers better.
I would recommend this book to anyone who wanted to get to know computers better, especially some basic but important algorithms that go into almost every computer. Preferably someone who is just starting out in computers with a little background so not all the topics covered in this book are confusing. I could see why this would be chosen as a textbook, as it covers a lot of important and interesting information but is also not horribly dry like a normal school textbook.

John Dupuis Reading Diary: Nine Algorithms That Changed The Future by John MacCormick
http://scienceblogs.com/confessions/2012/06/11/reading-diary-nine-algorithms-that-changed-the-future-by-john-maccormick/

Sunday, October 30, 2016

Making Meaning: Tubes

Our second book that we had to read for our class is a book called "Tubes" by Andrew Blum. Overall the book was not very engaging and it took me a lot of concentration to pick it up and read it. It just seemed dry to me or something, or maybe I just didn't like to read it because it was a textbook. Although it was interesting for someone to talk about what the internet is like outside of your home. Andrew asks the question:" When your internet cable leaves your living room, where does it go?" And Andrew goes around the world to find out this question. I found it very interesting that he went and saw some of the tech at Google. When I was little I always thought the internet was this magical thing that my dad brought into our home and it would always be there. Then I got older and learned what a router was, and I still just thought of it as a box with the internet just stored in it. I never really thought it had a location or storage like a computer does, and I'm not really sure why. When Andrew actually sees parts of the internet and just gazes upon blinking machinery, it's kind of like pulling the curtain to look at the wizard of oz. 
One part I did enjoy was on page 158 where he talks about how the routers he saw in Austin were like the building blocks of the internet. He did paint a good picture of that the hardware looked like.I think the fact that the book was so much like a novel made me not really treat it like a textbook.
One thing that I liked about Pattern on the Stone and not Tubes is that POTS felt more like a textbook for beginners in computers and less like a novel. It explained a lot of good concepts to know and had great examples to learn from. It had a good pace and did not leave a lot to question. Tubes felt a lot like a quest, and I'm not saying I don't enjoy a good quest, I am just not one to enjoy textbooks. I'm not saying the book is all bad though. The quest for the internet is very interesting, and again it seemed odd to me at first because of the strange idea that the internet had a location.
To see someone else's opinion on this book I looked to the internet for a review on Tubes and came upon Science Blogs and an article entitled "Tubes: A Journey to the Center of the Internet."
The author, Claire Evans, really enjoyed the book and Blum's quest to find out just exactly where the internet lives. She said in her article "Tubes might have well been called “Everything You’ve Always Wanted to Know About the Internet But Were Afraid to Ask.” " which I can agree with. Evans comments that this book should be required reading for anyone, just so we can have a basic understanding of the Internet and how it works. I may not say that it should be required reading but I could see a lot of people learning from this and being really interested in it. I would recommend this book to anyone who has time to just sit down and read about the internet.

Sunday, October 16, 2016

The Filter Bubble

According to Wikipedia, a filter bubble is an algorithm made by websites to predict what information you want to see based on the users past internet history, and as a result the user only gets certain kinds of information and ads. In previous blog posts I've talked about algorithms and how W. Daniel Hillis describes them in his book "Pattern on the Stone". If you haven't read my last algorithm posts, Hillis describes an algorithm as a "fail-safe procedure guaranteed to achieve a specific goal"(78). A short example would be on page(77-78) where Hillis describes his roommates algorithm for matching socks(lining them up in a row until a pair is found and continue until all socks are paired). So in the internet companies case they would use their algorithm to predict what you would want to buy by using their algorithm. Using myself as an example, I recently starting shopping on Amazon quite a lot and now a lot of my ads on Facebook and other social media sites are for Amazon products.

I did an experiment with a good friend of mine to briefly see if our internet history would be different if we searched the same things. We are not completely different but she is about two years younger than I and we differ on some world views, and also just personal views like TV shows and humor. I first googled some just basic words and phrases in google and then briefly browsed her Facebook and her Youtube. Then I googled the exact same things on my laptop.

Knowing that guns and gun rights are always in the news and social media I decided to just google the word "gun" because why not? On (name changed for privacy) "Kjirsten's" laptop I got pretty generic links for just the word "gun". It was the Wikipedia definition for the word gun and the closest gun shop in our city. Then lower just some generic websites selling guns.
I googled "gun" on my laptop and got the exact same results, same local gun shop and everything.

Getting a little more "adventurous", I googled "gun article" seeing if we'd get the same news stories about guns. This is where things started to differ. Kjirsten's first article was "stop gun violence" and then a couple pretty neutral sites. I asked her about it and she doesn't really have a view pro or against (although when pushed she said she was more against than pro). When I googled the same phrase I got a few sites that were against gun control (I am more pro gun).

I googled the word "gem" as well but didn't get any good results.

I then looked at her Facebook at it was mostly clothing ads or those companies who send you clothing and jewelry every month. Pretty typical of someone her age. My Facebook had a lot of makeup ads and an ad for fragrant beads that I just bought recently. It made sense because my friend does not like makeup while I do, so this ad placement makes a lot of sense based on our personalities and interests.

I looked then at the recommended videos on Youtube and most of Kjirsten's videos were humorous as she likes good clean humor on videos, so it makes sense for her. My Youtube was a lot of art videos, as well as humorous and a few video games. This is just a difference of personality.

The filter bubble in most of these circumstances are not all that bad, it is just recommending stuff that those companies think we would like. With the gun articles comes the problem, the filter bubble would only show stuff that we think of so we wouldn't get much different opinions to challenge our views. If we had an opinion for a reason that wasn't true, the filter bubble would just be cementing that false view.

I got my information on the filter bubble here: https://en.wikipedia.org/wiki/Filter_bubble

Saturday, October 1, 2016

The Pattern On The Stone

In my class we have just finished reading "The Pattern on the Stone" by W. Daniels Hillis and it was a pretty interesting read. I happen to be one of those people who dislike reading when it's for a class but this book was pretty thought provoking at some points. Hillis describes a lot of what he is talking about in an easy to read way for people who are just getting into computers, or don't know much about them at all. Such as in chapter 5 "Algorithms and Heuristics", he describes algorithms using socks. His roommate devised an algorithm for organizing his socks in a much faster way than he was doing it before. He would take two socks and if they didn't match he would throw them back; Instead now he found a sock and put it in a line. Once he found two matching socks in a line, he would take them out of the line and fold them.(78) I actually really enjoyed this chapter because it was fairly easy to read and it gave the examples in a way I could quickly understand.

 Being still somewhat new to computers and the terminology, the book in its entirety was much easier to read than some other course textbooks I've looked at. There was not much I didn't like about this book, again it was hard to pick up because it was required reading, but it was more enjoyable than other course books. A nice thing about this book is that whenever Hillis talked about a term or concept that was new, he very nicely explained it. I didn't have to look anything up on google to understand what he was saying. Honestly this book did help me understand computers a bit better, at least some terminology. Before reading this book I did not know much about algorithms, heuristics, or Turing Machines. I just had a small understanding of them. Such as a Turing Machine is described in his words as a "mathematician performing calculations on a scroll of paper" with an infinitely long scroll. The Turing Machine shows that although this mathematician can do all of these long problems with ease, a "stupid" but meticulous clerk could do all of the same mathematics by following a simple set of rules for reading and writing the problems on the scroll. The Turing Machine is that clerk.(63)

I do recommend this book to any new Computer Science or Computer Engineer students who need a simple way of explaining these concepts. With the real life metaphors that are easy to imagine, such as socks for algorithms or a mathematician, it is not a hard read. A lot of computer textbooks are very dry and are a pain to get through and read. This one is not written like a textbook but more of a guide to these ideas of computers. Hillis told the story of how he made a computer out of tinker toys with a few friends of his. The tinker toy computer worked like a switch and light computer but with string and sticks. The computer was "programmed" to play tic-tac-toe and it never lost.(17)
Stories like this make for a much more interesting read than being fed definitions and terms like a normal textbook.
I think this book was chosen as a textbook because of the simple and fun way programming and computers are described. I think even to someone interested in the subject but brand new to it would be able to understand the concepts. It is also pretty short and cheap unlike most college textbooks(with only 9 chapters in the whole book). For an intro class into computers this is a great book to read to get the basics.

Saturday, September 17, 2016

Algorithms: Usually Helpful Programs.

In my class recently we have been learning about algorithms and how they are used in computer programming.

Our textbook, "The Pattern on the Stone" by W. Daniel Hillis, describes algorithms as a "fail safe procedure, guaranteed to achieve a specific goal"(78). He described how his roommate devised an algorithm to sort his socks properly instead of just finding two socks and if they don't match he throws them back. In this new method he pulls them out one by one and puts them in a line, and if he finds two socks that are the same he takes them from the line and folds them together.

 I've recently been looking at algorithms, both good and bad, and found one that has really peaked my interest. It is called the Bogosort algorithm (shotgun sort, monkey sort and stupid sort are also names for this algorithm) and it is the most ridiculous algorithm I have ever seen. It is incredibly ineffective as a computer program or even in real life as it randomly sorts data until they are in the correct order. Say you have a deck of cards and you wish to sort them in order. Using bogosort, you'd basically throw them in the air and pick up the cards at random, then you'd check the new shuffled deck and if it was not in order you'd toss them again and again until they were perfectly sorted. If it were written as a computer program it would look somewhat like this:

while not inOrder(deck)
      shuffle(deck)

The algorithm itself has an average case of (n-1)n! (where n is the number of tries), so the number of attempts to sort it far out numbers the number of comparisons it makes. It only checks a couple of comparisons, no matter how large the list, before just shuffling the whole list again. However because this is an algorithm, there is a very small chance that this shuffling could sort these in the correct order, although that would take a horribly long time.

It is hilariously ridiculous, and honestly the worst algorithm I've ever seen.
Bogosort can be traced back to 1984 and is written in "The New Hacker's Dictionary" [7] as ".... It serves as a sort of canonical example of awfulness. Looking at a program and seeing a dumb algorithm, one might say 'Oh, I see, this program uses bogo-sort'". So even in the Hacker Dictionary it is known as one of the worst algorithm/programs out there.

A similar algorithm is the Bozo sort. It deals with a list of random numbers and if these numbers are not in order, the program will swap two of these numbers at random and then check again to see if its sorted and it continues on such as the Bogosort. With these kinds of programs the best you can hope for is that the lists are already sorted ahead of time or else this program could take forever to figure itself out.

I do not know if anyone has tried this method of sorting with a deck of cards, and  I imagine it would be incredibly time consuming and tedious. If just one card was out of place they would have to toss the whole deck again and pick it back up in a random order. I personally do not want to waste days of my life trying to sort anything by this algorithm.

I got most of my resources from this Wikipedia article https://en.wikipedia.org/wiki/Bogosort and http://www.hermann-gruber.com/pdf/fun07-final.pdf for some more information on Bogosort.

Sunday, September 4, 2016

A Little About Myself

My name is Anna and I am a Computer Science major at K-state university. My computer class has asked us to write a blog during the semester. This first post is just a little about myself and why I am at K-state University. 
I am originally from Prairie Village, Kansas and chose K-state because of their great engineering program and because I have family in the area around Manhattan. I originally took a few years at a local community college for credits and also to find what I really wanted to do with myself after college.
My interest in Computer Science came from my father who is a programmer. I've also really liked working with computers, even when I was little and just playing computer games. I did not know I wanted to go into this career until my first year of community college. When I was in high school I thought I could be an art major, but that wouldn't really get me anywhere.
Being a Computer Science major, my hobbies do include being on my laptop and my phone. I also have a few PC games on my laptop as well. I like other things besides computers. I love to draw and paint, which is why I contemplated being an art major for a bit. I also love planting and caring for succulent plants. With my father being allergic to all flowers and most plants, I found that I love succulents because they are all pretty in a different way and very easy to take care of.
Other then my father who is a programmer, my mother is a librarian and my brother volunteers at a rest home. We also have two dogs, one a Labrador Retriever and the other a mutt. 
My first real job was a local drug store near my house. It was family owned and I became very close with my coworkers. It was near a richer part of the neighborhood so sometimes the clientele could be pretty rude and demanding. It really was a great first job though. 
My plan after college is not all that glamorous, just get a job and a house after graduation. I would like to work in programming and maybe work my way up to management but it is up in the air right now. I do think I am going to stay in Kansas, or at least around the Kansas City area. I think there are a lot of good jobs around the area, even though I don't know specifically what I want to do.
Looking through the textbook, Patterns On The Stone, and the chapter titles, one that catches my eye is the title "Beyond Engineering". I like to think about how computer science impacts the rest of the world and not just the world of engineering. I would like to hear the authors thoughts on this topic. 
Another chapter is "Computers That Learn And Adapt", which just sounds interesting. I like the current technology that is coming out with robots that can adapt to their surroundings so I am wondering if the chapter is a little bit like that.
I am going to be honest, I don't look up a lot of news about the current technology. I usually get some news from Facebook or other sites that people find interesting. An example would be my father posted an article from http://www.iflscience.com about an amputee who got a robotic arm with a drone and its incredibly interesting. So in short I usually stumble upon articles about some of the latest tech, I usually don't go looking for it, which I should.