Archive for January, 2016

Manifesto & Portrait Reflection

Thursday, January 28th, 2016

When I first arrived on campus in August 2012, I still had not a clue what I wanted to do with my life.  During high school I realized that I was good at math and science, so I decided to start as an undecided engineering major, and switch around later.  As I progressed I started to admire the programming I did in Introduction  to Engineering.  Even though I had very little programming experience coming into college, I decided to become a Computer Science major.

Much like the manifesto describes, many of us didn’t even know we wanted to be computer scientists.  The Introduction to Engineering courses, while mostly unrelated to our current studies, introduced me to programming and computer science.  It offered a great avenue for people who are unsure of what they really wanted to study to find their niche.  Without it, there would be far less people studying CS at Notre Dame.  The manifesto portrays me very well.  I know that I have potential to change the world and influence others with this super power that we call “programming.”  Okay, I’m still learning how to use it effectively, but I will get there eventually.  Over the undergraduate years we start from the basics and rise up to properly figure out what we truly want to focus on in Computer Science.  Then we get a job and change the world for the better.

As far as our portrait goes, it is a fair representation of myself.  I come from “Chicago”, wear t-shirts and jeans, play video games, browse Reddit, and love semicolons.  Unlike others, however, I actually don’t do a whole lot of programming outside of class.  While I like it (most of the time) and it can be fun (when you know what you’re doing), I know that I will be doing it for at least the very first stages of my career.  Outside of class I am very involved in the band program here at Notre Dame, participating in multiple ensembles per semester.  This combined with homework gives me little free time, especially in the fall semester.  I’m not a particularly good or efficient programmer, but I feel that it is the one thing that I can do.  I could never see myself as majoring in anything else, which is why I stuck with computer science.

Of course, the portrait is merely a bunch of stereotypes of a typical CSE student.  While they can be harmful by associating a group of people with certain aspects or characteristics, they do help in differentiating people.  At the same time, don’t just assume a CS student can automatically fix your computer.  In a way the stereotypes can be both helpful and harmful.  Every person is different, but when you lump a group of them together they start to take on unified characteristics.  And especially with a group of computer science students buried in their laptop screens, it’s going to be difficult to get them to speak out and say otherwise.

Interviewing

Tuesday, January 26th, 2016

When we first enroll in college, we do so with the mindset of becoming employed at the end of the four years.  While some people may wish to stay in school and receive multiple degrees, I wish for my schooling to be complete.  As such, I spent this fall looking for possible jobs.  I went to the fall career fair at Notre Dame and talked to several companies, handed out my resume, applied on goIrish, and followed up with recruiters.  Some reached out to me, others did not.  The few interviews I had were not as successful as I had hoped.

One company, however, invited me for a Skype interview with its founder and owner.  Although I knew that it was a small company, I thought it was uncommon to have a personal interview with the owner.  Being a Notre Dame graduate, he wanted to know all about my experiences at the University, as well as my experiences in the marching band.  I could tell that he really wanted to get to know me on a personal level.  As such, he invited me down for an on-site interview about a week later.

I’ve never thought of myself as good at interviews, namely technical interviews with a focus on programming.  Although I am a Computer Science major, I am by no means a computer master; I still have much to learn, and forget trivial concepts easily.  Needless to say, I was extremely nervous for this interview.  However, I was greeted happily by everybody there.

I had 4 separate 45 minute interviews, each with two members of the company.  Three of these were mostly behavioral, asking questions about leadership, work experience, etc.  The one other interview was with two programmers at the company, and was the quietest interview.  It mostly consisted of asking questions about experience, languages, and programs.  I feared the worst about doing whiteboard examples on data structures and algorithms which I had forgotten.  However, I was only required to do one example: write pseudocode to find all the prime numbers from 0 to 100.  Often interviewers will ask insanely tough questions that not many can solve, which gets the brain working but fails to achieve a final goal.  What I would want to give is simple questions, to see how the interviewee approaches them and comes up with his or her solution.  That way, you are assessing their problem solving skills while not being overbearing.  They are nervous; giving them an impossible problem will only shut their brain down.

After the interviews, I was invited to go out to dinner and a bar with my main recruiter.  The owner of the company likes to have his employees take interviewees out and get to know them better, most likely to see if they can be sociable.  I received an offer about a week later and accepted it soon after. I liked everything the company had to offer, being of the smaller type.  I’m afraid of bigger companies, since there are so many people in them that an employee becomes a faceless number in a small cubicle, at the very bottom of the never-ending tree of superiors and managers.  I was glad to see everybody being so friendly and welcoming towards me.  I’ve heard horror stories, especially from the fifth reading where a bad first impression will hinder the entire interview.  In my case, nobody judged me, and I felt that I wasn’t being scrutinized on everything.  Luckily I was able to meet so many people within the company (which was done on purpose).

The interview process was very ethical, in my opinion.  Instead of having a board room of multiple people listening to what you have to say, you get to talk to multiple sets of people, all with a clean slate in their minds.  Moreover, the behavioral nature of the interviews assessed how well you would work as a team.  It was clear to me that they didn’t just want good programmers, but also well-rounded people who can contribute properly to a common goal.

Hacking away at the term “Hacker”

Tuesday, January 19th, 2016

The term “Hacker” has taken a few different forms since it was first coined.  Before the advent of computers, “hacking” was defined as “To cut or chop with repeated and irregular blows.”  In that sense, the term makes perfect sense pairing it with computer programmers.  In order to perfect their work, they repeatedly chop, sculpt, and add lines of code on the given projects.  The repeated use of the word became synonymous with programmers and computer science majors, as evidenced in the Hackers and Painters reading, as the author depicts hackers as normal people who have passion for computers, code, and helping the world.

Meanwhile, since the inception of the term “Hacker”, time has not been very friendly to it.  Today’s common definitions of the word include “a person who illegally gains access to and sometimes tampers with information in a computer system” (Webster).  Unfortunately the media has portrayed anybody who fits this definition to be a hacker, and hence the definition of the word has changed.  While I do not identify with this definition (since I do not illegally break into things…because it’s against the law, obviously), it is shaping the way we think about solving problems.  “Hacker Culture” is in full effect, to the point where any time a black terminal with green/white type is displayed on a screen, the common person perceives hacking.

We hear about hacking everywhere in the 24-hour news cycles.  From credit card information to email threads, it seems that no database is safe.  However, invaluable lessons can be learned from these incidents.  As detailed in David Fincher’s 2010 drama The Social Network, Mark Zuckerberg, after infiltrating the Harvard University network, is called to a hearing to determine punishment.  He does not believe he should be punished, moreover he believes he deserves recognition from the Board for pointing out major security flaws that were inevitably going to be exploited.  As humans, we learn from our mistakes and also learn to never make them again.  But that does not excuse the infiltration of databases and servers in the hacking process, which can be essentially equated to breaking-and-entering.  In short, definition #2 of hacking depicts an immoral situation, yet sometimes vital lessons result.

By definition #1, I am a hacker.  The power of programming at this day in age gives unlimited potential to solve problems or just have fun (or both!) with computers.  Programming is highly enjoyable to myself, as I love to slowly put large chunks of the bigstock-hacker-typing-on-a-laptop-44548564puzzle together and create a finished product that is reflective of the intense work I have put into it.  In order to do this, I continually chop, or hack, away at lines of code and experiment in order to get the desired effect.  Definition #2 is the more modern definition, which often portrays a hooded incognito figure typing away at his or her computer for hours to gain access and extract information from behind security walls, and use this information to his or her pleasure.

It is unfortunate that society paints this picture as a modern representation of a hacker.  I propose a better word: a cybercriminal.  This way we can do away with the negative connotation of the word “Hack” and breathe new life, for the better of programmers everywhere.  The only task left is to rid the world of the connotation of someone leaving their Facebook logged in on a computer and another person accessing it being considered “hacking”.

Is Programming a Super Power?

Tuesday, January 12th, 2016

“With great power, comes great responsibility.” The famous words uttered by Uncle Ben remain relevant to this day, within all fields of study.  Within our highly advanced technological society we see amazing marvels that serve as a feat of science, engineering, and technology.  With the tools in place, anybody can learn to code and engineer magnificent software that can aid the world.  With that being said, there is a plethora of malicious software in the world that serves only to “torment” the people who use it, either inadvertently or not.  For this reason, I believe that programming can be used as a super power; it can be used for both good and evil.

According to the Wall Street Journal, software is “eating the world.”  Companies across the globe are transforming their services into software.  As a result, more people dabble in the realm of software by following these large companies.  This, in turn, introduces everyday people into programming.  Every year the computer science field is growing, enabling for more people now than ever to be able to harness the powers of programming.

The paragons of software engineering that we see in today certainly help the world.  However, unfortunately there exists malicious software used for hacking, stealing, or general shenanigans.  For as much as a person is capable of programming amazing software that the world could use to its advantage, they could equally create software that has malicious intents and purposes.  Thus, in our world of programming being a super power, we have super heroes and super villains.  Fortunately, the heroes outweigh the villains in size and overall world impact.  As with our fictional super hero universes, we have leagues of super heroes that ban together for a common goal.  Open source software is a prime example of this, as the developers work together and utilize each person’s individual strengths to create the best software possible.  They are serving humanity by offering their powers for no financial value.

While other engineering disciplines can also be viewed as super powers, they are a group interest rather than an individual interest.  Marvels of engineering can be built by mechanical engineers, electrical engineers, etc. But they all require a large amount of money and materials.  With programming, a single person may have the power to build amazing software, for little to no budget.  In this vein, it fits the definition of “super power”; an individual’s unusual talents and abilities that can be used to help or hinder the common good.  It should be implied that these powers are only to be used for the good of the world, but the humans are unpredictable.

Even though super powers are known to be individually exclusive and unnatural, the implication that everybody can harness this power rejects the definition.  But everybody has their own strengths that make each person’s power different than all others.  One day we will get to the point where everybody knows how to program, and our technological society completely revolves around computers.  By that time, programming will probably no longer be viewed as a super power.  To quote The Incredibles, “when everyone’s super, no one will be.”

Introductory Post

Tuesday, January 12th, 2016

Hello World!  My name is Tyler Cummings and I am a senior in Computer Science here at Notre Dame.  I wasn’t sure I had wanted to study Computer Science until my freshman year, but I have always had a deep fascination with computers.  I wanted to know more about how they work and function, and how to create amazing software.  There is something satisfying to me about writing code that not only properly compiles, but functions as intended.  This is my drive behind my studies in Computer Science; to help create software that I wish to produce, either for fun or to solve known problems.  My other interests include sports and music.  I play the Saxophone and am a four-year member of the Band of the Fighting Irish.  From this class, I hope to develop an even greater moral identity within my area of study that I can apply to every project during my entire career.

In today’s modern age, computers envelop every aspect of our lives.  Of course, there will always be ethical dilemmas within the realm of computer science.  Big issues that we see in tech news have to deal with hacking and information retrieval.  Of course, hacking is immoral and can be seen as a crime of burglary or breaking-and-entering.  In the same vein that a person should not steal, a person should not hack into a server/system/database.  In the realm or information retrieval, databases store millions of entries of personal information.  This goes hand-in-hand with hacking, as a person’s information should be just that: personal.  Even today we see controversy around government spying through the NSA.  Whistleblowers like Edward Snowden have famously brought this to light, much to the shock of United States citizens.  While the motive is to fight crime and terrorism, spying on unsuspecting citizens disheartening to think about, through computer webcams or not.  Issues like these persist in today’s technologically advanced society.  While they easily strike as immoral, there seems to be no end to the controversy.  This semester I am interested in discussing the moral and ethical rules behind building databases of personal information, as well as ethical mining of that data.