Computer Science 4 All

 

The San Francisco Board of Education voted in June to offer it from prekindergarten through high school, and to make it mandatory through eighth grade

Introducing everyone to computer science is a challenge. Because “the Department of Labor predicts the nation will add 1.2 million new computer-science-related-jobs by 2022” and “we’re graduating proportionately fewer computer science majors than we did in the 1980’s,” it’s certainly beginning to make sense that we invest in computer science education. If countries with fewer resources than the US, such as Vietnam, are investing in computer science education, it seems another indication that the US should as well.

However, computer science for all may not even be feasible at the present time. “It’s hard to find anyone to teach [computer science] classes,” says Tasneem Raja. Additionally, computer science curricula can be boring for many students and more interactive sites such as Codecademy perhaps offer all the education needs for students.

Regardless of the stance, if schools continue toward CS4All, then they will also run into the issues of uninterested students, teacher shortages, and a lack of funding for necessary equipment.

In my opinion, computer science should fit in the K-12 curriculum in a similar way to San Francisco’s schools. According to New York Times, “The San Francisco Board of Education voted in June to offer [computer science courses] from prekindergarten through high school, and to make it mandatory through eighth grade.” I believe that this will lay the foundation for computational thinking, as described in the Mother Jones article. This would allow all students to become exposed to computer science and be able to make an educated choice in high school whether to further pursue computer science or not. I agree that the primary goal should not be to teach all students to code, but to teach students about computer science as a discipline. Things like logic and computational thinking, with some basic coding to enforce those ideas. This is so students could pursue computer science education further if they chose to.

I believe anyone can learn to code in the basic sense, but don’t believe everyone should learn to program explicitly. I believe that computer literacy and computational thinking are fantastic building blocks that anyone can learn. Combine this with some basic coding exercises, and I feel this is the minimal extent to which all people can program and should learn to program. Further education toward learning to program should be voluntary. It isn’t for everyone, and doesn’t have to be for everyone. However, I believe every person should become educated enough to make that choice.

Self-Driving Cars

Self driving cars are what many hope to be the future of vehicular transportation. With many potential advantages such as “reducing pollution,” “eliminating up to 90% of traffic accidents,” “increasing traffic efficiency,” and lower trip-by-trip prices, it’s obvious to see that there are reasons to look optimistically toward autonomous vehicles. If the vehicles can be safer, more efficient, and cheaper, there seems to be no reason for them not to replace the driver-reliant culture that’s currently in place.

But not so fast.

There are other factors that plague the autonomous car movement. Most notably, these factors are technology and morality. The first argument against these cars is the technology. This is more of an immediate obstacle, and one that should become less and less concerning as time goes on. However, at the present time, technology seems to prevent people from getting on board with autonomous vehicles. If cars can’t see semi trucks right in front of them and can’t handle simple bridges yet, obviously some people may pick these issues out. Additionally, morality is a touch subject. From The social dilemma of autonomous vehicles,  we see that buyers of cars certainly don’t want to sacrifice their own lives for the lives of a handful others, but agree that that would be the moral thing to do. This disconnect creates a hurdle for lawmakers, buyers, and manufacturers that doesn’t yet have a clear answer. The safety benefits will be seen when more vehicles get to the road, I believe.


The social dilemma is a difficult topic. I think that these situations where death is unavoidable will be fairly rare, as technology advances and more autonomous vehicles enter the roadways. With that said, it seems the most moral approach would be to sacrifice lives in a way that leaves the most still alive, as participants agreed in The social dilemma of autonomous vehiclesHowever, perhaps there would be a premium placed on the lives of the buyers of the cars, because if they paid top-dollar for an autonomous vehicle, many would hope they would be protected by their own vehicles systems. It’s a difficult question that seems to lie mostly under the control of companies or the government. Guidelines will probably be laid out by either and programmers would be left to implement them.


I believe self-driving cars could have great impact on all aspects of life. Socially, it may create a dichotomy (as many high-technology products do) between the have’s and the have-not’s. Additionally, there would be many people who would not want to give up driving their own cars, which could endanger many others. Economically, the benefits seem mostly positive, as time wasted in traffic may decrease and fuel savings would skyrocket. Politically, there would be many special interests that could come to the forefront, but many opportunities could present themselves to become a safer and more technology driven country as a whole.


Personally, I would like an autonomous vehicle, but would greatly appreciate the ability to drive it myself as well. To me, autonomous vehicles would be great for daily commutes and long trips. They would get me there more quickly, and I could perhaps use the time to send emails or code. I like the view that Jeffrey Zients conveys when he says, “We envision in the future, you can take your hands off the wheel, and your commute becomes restful or productive instead of frustrating and exhausting.” With that said, I still enjoy driving my car, as it’s a way to relieve stress when I go on shorter excursions (30-90 minutes). Perhaps my life is in greater danger, but I enjoy it. I’m not so sure how I’d feel if I had to suddenly give that up.

 

Project 03: Reflection

We deployed emby for this project. This program is essentially a way to host your own media and allow yourself to stream it to your other devices. You host your personal server, upload your owned media (videos, music, etc.), and then through this server you are able to access your media from various devices.

When using the cloud, users have to remember that their data exists not only on their own devices anymore. Their data is thrown around to different data centers all around the world. This makes is nice for users to know that their data is backed up and will be easily accessed by them wherever they may be. However, they must remember that they no longer own the hard drives that their data exists on, which can lead to legal issues throughout.

Personally, I do my best to avoid uploading important documents to the cloud (like Google Drive) such as passwords and tax documents. The cloud to me is a place that is only for schoolwork and personal projects. Whether or not this keeps me safer, I feel safer this way.

I think it can be worth it to manage your own cloud services, but you must be invested in it. Presently, it takes a significant amount of effort not to set up the cloud services, but to make sure everything is properly backed up and fail safe. It’s something everyone can do, with RAID and personal HADOOP deployments, yet that’s still beyond many individual’s technological capacities and wallet-reach. In the future, I think it’s fully possible to host our own if prices drop and technical knowledge grows. With that said, large companies still have the edge in reliability and accessibility for the foreseeable future.

It’s difficult to think about personal privacy and the cloud. On one hand, I expect my data to be safe and secure on the cloud, but on the other hand, I should do my best to back up my own data and avoid relying on a cloud (that I don’t know the implementation of or the company’s entire data policies) to protect it. I think the best option is simply to avoid putting very precious data on the cloud.

Net Neutrality

Net neutrality is the idea that all internet traffic is equal. No particular channels through which users and providers communicate are sped up or slowed down in order to provide different levels of service. For example, under Net Neutrality, this means that when a user would visit Netflix, his or her stream would be just a fast as when the user streams from YouTube (aside from differences in implementation between the two sites).

There are, of course, two sides of the argument… one for and one against Net Neutrality. Those for it believe that it would prevent users from being taken advantage of and that the internet should be treated as a public utility. If certain companies were able to make deals with ISP’s to speed up access to their services, then they would get preference and more activity than other, maybe smaller sites, that could not make the same deal. Supporters believe that the internet should be free from these sorts of deals so that that ISP’s would not be able to pick “winners and losers” of the internet, but rather users would directly pick these winners and losers by choosing which sites to visit. Their activity alone should be the only factor in determining how well a web site performs in the marketplace.

Those opposed to Net Neutrality believe that “some people want, and are willing to pay for, something different.” That is that perhaps people would be willing to pay for faster access to particular internet services. This would mean that users could choose their plans, be able to choose from more options, and would be able to put more money into the economy or the companies providing these services. They also believe that removing government regulation from the internet concerning providing speeds would allow the free market to cater to the needs of the users and would react more quickly than government intervention.

I think I’m of the belief that the internet is a public utility. It seems as though allowing this sort of speed discrimination would only hurt users, with them having to pay more for “add-ons” such as faster Netflix/YouTube streaming. This would be great for company cash flows, but not great for the users.

In order to implement this, I’m unsure of what the best way would be. I am not any sort of internet policy expert. To me, the best option would simply to say that all sites must be accessed with the same speed, regardless of the site. I think this is not an extreme form of over regulation, nor do I think this burdens companies or stifles innovation. As far as I can tell, this only prevents users from being taken advantage of. Quicker speeds on individual websites would not push innovation, I think it would only keep smaller, companies from being able to push through. If users can visit a sub-par site at much faster speeds, this doesn’t encourage them to use the other, more innovative sites.

Corporations as People

It’s an interesting dilemma as to where corporations lie. Whether or not they should be considered “people” is a question that seems to spark thoughts from both sides of the political spectrum.

The idea of corporate personhood is that corporations have rights that are the same, or at least in part the same, as those of a human citizen. This means that corporations have the ability to make decisions and are protected by the constitution in the same way as individuals. The companies could has the right to own land, be sued, be protected from unreasonable searches and seizure, among other rights. This allows companies to act separately, but by the influence of, their shareholders.

However, for many reasons, this corporate personhood can create issues, from both sides of the fence. These issues such as endorsing political candidates, providing contraceptives, and the protection of the personal property of shareholders. Companies are often powerful, wealthy, and can exhibit great influence where they so choose. This makes it important to closely look at what companies are able to do. With that said, it may also be important to protect the individual shareholders when the company, or its workers, are truly at fault. There are arguments for both sides.


The Sony rootkit controversy involved the company installing digital rights management (DRM) software onto the computers of users when particular CD’s were listened to. This angered certain people for multiple reasons, the majority being the following:

  1. Users weren’t told it was installed
  2. It opened up security vulnerabilities
  3. It couldn’t be uninstalled

I don’t believe this was necessarily fully ethical or unethical. Sony was attempting to protect it’s intellectual property and used a particular product from another company to do so. This action was not unethical in itself. However, it appears as though Sony did not do its due diligence in recognizing what that product actually was in the first place. I would hope that Sony simply didn’t understand what the software was doing under the hood. Perhaps some higher-ups heard it was nearly undetectable and it would protect their intellectual property, and they just said “sounds good.” That’s certainly dumb, and maybe unethical in ignorance, but not intentionally malicious. I do believe that Sony should have done a better job in being open with its consumers and ensuring that everyone knew what was going on. It would  have looked better on the company and all the people involved. Their punishment was about as ambiguous as their actions, but perhaps the public shaming was enough.


I think that corporate personhood carries with it an expectation of doing the right thing. If humans do the wrong thing, they are punished. Companies should be held to a similar standard, and probably to a further extent. Companies in almost all cases influence more people’s lives on a day to day basis than any particular individual. This means that any action a company undertakes should probably be examined closely as to how it will affect a large group of people.

In the case of Sony, they probably should be held responsible for the protection of the hundreds of thousands of users’ computers that the DRM software was installed on. Users have the right to protect themselves on their computers, and if they can’t (as was the case with the rootkit), then the entity causing this roadblock should be fixing it.

 

 

 

 

Cloud computing simply is the storage of files and performing of calculations on computers that are not your own, sending the appropriate data over the internet so the original user can again access the information. It’s helpful to use such cloud services for many reasons. Perhaps you want to back up information, access information easily from other devices, or performing calculations on a machine more powerful than your own. Cloud computing can be a great aid to you in all of these situations, but not without drawbacks.

The use of the Cloud can, as mentioned before, help with many things. Storing files in the cloud often allows access from any other computer and performing operations that your computer may not be able to handle itself are great benefits. However, we must be conscious of where this information is now stored, reliability, legal access rights, security, among other things. The Cloud is more than just an extension of one individuals hard drive. Users and developers need to remember that the files are no longer just on the computer of the user. The files are now in the hands of the companies whose data centers we use. These companies with the data centers have their own issues and business/ethical interests, and people need to make sure they know these things. We can’t just shove our information anywhere. Even if you trust the company from an ethical standpoint, reliability issues such as those last month at Amazon now become you and your users’ issues.

Additionally, not all data center-owning companies may take an ethical approach to their cloud storage. While Microsoft may “ensure [they] have strong and specific security safeguards,” not all companies can (or could have) always said this. Apple’s security flaws were exposed  during the iCloud hacking of 2014. This could happen anywhere and developers and users need to be sure they understand how their data is being stored. It’s often important data, and with the Cloud, all a hacker may need is a password and username if it’s not properly secured.

The benefits of the Cloud are huge. It’s revolutionized the way we do business, store files, and collaborate. With the Cloud, we are able to make more room on our hard drives for apps and programs, leveraging the Cloud for persistent file storage. We can now use Google’s suite of web apps to work simultaneously on documents and presentations, forgoing USB sticks to move the data from one machine to another. Simply click the share button, enter an email, and you’re there. It’s incredible. The trade-off most importantly, is that you don’t know where your data is and how protected it is. You can take a company’s word for it, but generally that’s a tough thing to do. It’s great that HTTPS and encryption standards are increasing, but who knows if companies are encrypting your files on their data center hard drives. If they aren’t, that’s a bit scarier. But, all in all, I’m bullish on the Cloud’s future as a trustworthy entity.

 

 

 

Snowden

Edward Snowden is a interesting character in the realm. “Deeply divisive” with his actions, motives, and as a figure. It’s difficult to pinpoint exactly how I feel about the whole situation, but we’ll see where I end up after talking it out a bit.

In 2013, Snowden met with the media outlet the Guardian in Kowloon, with millions of classified documents outlining US spying practices, both at home and internationally. These documents showed that the government-run NSA had been tapping communication lines of officials across the world and US citizens of interest. Sometimes citizens not of interest as well. Media outlets, upon looking at the documents, began publishing stories to get the information to the public, hoping for a reaction of some kind.

Were Snowden’s actions ethical? It’s difficult to say. On one hand, he exposed information that the public had the right to know, but may have just told the public “that the NSA was doing pretty much what you would have guessed they were doing.” On the other hand, this may have caused more panic, been exacerbated by sensationalist news coverage, and gone against the law in many more ways then one. As the conversation often came to in class concerning whistle-blowers, attempting to get information to the public is often a fairly noble quest, but often the way in which one undertakes this process can make the whole endeavor less respectable. I believe this to be the case with Snowden. It is perhaps ethical to believe that I should share private data to the public so they can know what their government is doing. However, it may be less ethical to go to “like-minded journalists” in order to push your own agenda through media outlets that may inflame the public and cause a disruption beyond what is appropriate with sometimes-sensationalist articles.

I do not claim there was, in this case, a better option than going to the media, but it’s clear that going to the media could have been approached more ethically by Snowden. Talking to outlets that do not specifically support your own agenda could have provided more balanced media coverage and allowed the public to construct more-informed opinions about the situation.

Snowden’s actions as a whole benefited the public to an extent, but did much more harm to the security of the United States. As said before, the public more or less understood what the NSA was doing, so this revelation may not have been as significant of a story to the public. I’m not at all saying that the public didn’t deserve to know these things as factual, but was the leak not something the public may have found out in a manner that does not also anger the rest of the world directly? Snowden’s leaks angered leaders from China, countries of the EU, and many Latin American countries. In angering these other world leaders, Snowden was putting the entire and mostly innocent US population at risk for retribution from these other countries.

Personally, I don’t find the trade-off worth it. Thankfully, no counterattacks were performed, to my knowledge, and lives remained mostly unchanged. One noticeable difference between then and now is that there have been increasing efforts to introduce encryption practices across the board in technology. This may have come along regardless, as I can’t remember the state of affairs prior to 2013, but I do appreciate the heightened effort to keep our information safe.

 

Project 02: Job Interview Process Reflection

The job interview process is complex and stressful for college students. Often, students aren’t aware of all the avenues of getting a job, or what to expect once the interviews and job offers come along. For this project we made a document outlining what we believe the job interview process should look like from the perspective of the student, as well as some steps that we may not have been aware of prior to going through the process a number of times.

From my experience, the most important parts of our guide are most certainly preparing for interviews adequately and anything concerning offer letters. I had not known what “preparing for an interview” meant or how to do it. After my first interview, I was in shock. Behaviorally, I feel as though I did alright. It could have been better, but I researched the company and prepared some nice questions to ask. However, I was blindsided by technical questions. Preparing for domain-specific questions are vital in interview situations.

As far as offer letters go, it’s simply a relief to have one in hand. At this point, you’ve already gone through an interview and have a position at the company (tentatively) waiting for you. That said, offers present their own sets of challenges. You must think hard about whether this is where you want to work. You must read the fine (and not-so-fine) print carefully, lest you be bitten by the legal teams. It’s more than just a salary and a dotted line to sign on. It demands your full attention and contemplation. The best advice I’d been given was from my father, telling me not to sign anything right away. Continue to look for better opportunities (even when your current offer is great) until you accept the offer. You never know what could happen.


The job market is as competitive as ever, with individuals fighting from all corners of the globe for positions. A college education is often a requirement for higher-level, higher-paying jobs. I believe colleges must make an effort to prepare their students for jobs, or else risk lagging behind vocational (or more vocationally-biased) schools. A job is what most students strive for. Learning is an important aspect, as understanding how to learn is the basis of a good employee, but it can’t be the sole focus.

The Notre Dame Computer Science curriculum is serviceable for the position it’s in. Unfortunately, the “well-rounded” education that the university as a whole attempts to provide gets in the way. Too many credits (especially for students with no AP credit) are spent toiling away in classes that don’t mean much for my career. These classes do, however, build a more well rounded person, I think. Perhaps, I focus too much on working toward getting a job, but I can’t help but think I’d be in a better position presently if I had chosen a school such as Stanford or MIT. A place where, in my first year of college, I may be able to dive deep into my major, if I chose to do so. Instead, I had to take physical education and an art history class. It’s a difficult position. Some certainly want a more well-rounded education, but others want to get the most well-rounded education they can within their discipline, something I want and am not sure I have been able to get at Notre Dame. Too often interesting and useful computer science classes give way to the Theologies and the Philosophy’s that I have yet to take.

Therac-25

The root cause of The accidents related to Therac-25 seem to be lack of programmer expertise and extreme deficiencies in quality assurance/control, testing systems, and management. Without a doubt, the abilities of the programmer(s) involved were not at an adequate level. The flow control throughout the system seems nightmarish. A 1-byte variable (Class3, seems like bad variable naming as well) that can increment indefinitely, causing an overflow back to the vital value of zero? A race condition (with an 8 second time window) that can cause fatal dosages? How do things like this exist and get past quality control and testing systems?

These problems existed because of programmer inexperience. I agree with the authors stating, “Taking a couple of programming courses or programming a home computer does not qualify anyone to produce safety-critical software.” Neither, necessarily, does a college education. I believe a college education helps programmers be more cognizant of the design choice they are making, but, aside from some specific classes, are often no substitute for real world experience. This is why we program in teams, participate in thorough code review, and write unit tests. Through these methods, more resilient code will be produced and programmers will learn even more. Simply by observing the situation and reading about the FDA’s skepticism about the quality control, it’s clear that correct procedures were not in place at AECL.

Companies and programmers working with safety-critical systems must be smart with their procedures. They must make sure to implement systems like peer review, unit testing, and perhaps user testing to ensure their systems stand up to the tasks. They must take these procedures seriously and make a concerted effort to uphold the utmost standards. Projects should be approached carefully and thoughtfully with input from the lowest-level programmers to the project managers. If a programmer runs into an issue or believes that some element of the project is beyond his/her knowledge, he/she should be sure to go to another individual who may have more knowledge on the subject rather than attempt anyway. It’s important that programmers be able to grow and make mistakes they can learn from while working, but it’s imperative these mistakes don’t make it into the final product. The errors should be stopped via the multi-redundancy of peer review, unit testing, and user testing.

As for who is liable, that’s a difficult question. It’s difficult to pinpoint the liability onto one person, since many had a hand in the product. At a company, where project teams are an integral component of the system, people who come into contact with the code could and should range from the programmer to the fellow programmers to the project managers and to the quality control testers. It’s a long chain of people. It’s ultimately the company that should be held liable, as their is most certainly an issue in the way the company has designed its systems to avoid these mistakes that led to them making their way into their product. That is, as far as all employees followed the system correctly. It’s difficult to expect any person to write flawless code, just as it is difficult to expect a writer not to make a typo. Writers have editors to help catch their mistakes, just as programmers should have a safety net as well. But ultimately this safety net something the company should be expected to implement.

Codes of Conduct

As communities grow, so do their needs. What company or professional group began as a group of five, very like-minded individuals, may eventually grow into a community of several hundred, thousand even. With a larger community, there now exist a variety of viewpoints, personalities, and idiosyncrasies. How is a community supposed to handle these things and ensure that they remain productive, on task, and respectful? Codes of conduct seem to be the only answer, but still an answer that’s less than satisfying.

I believe that codes of conduct are necessarily for companies and communities. Codes of conduct provide, as Jesse Noller says, “the explicit declaration of what is expected, and how we will react.” I think the most important aspect of this definition is that the code outlines how the governing body will react, but I’ll get back to that in a minute.

Yes, it’s important that you construct a set of guidelines by which people will act, but this is difficult. The makers of the codes of conduct must be wary of falling into the pitfalls of political correctness. Shawn M in Why the Open Code of Conduct Isn’t for Me, points out the biggest issue in the Open Code of Conduct, one that certainly plagues others codes. The Open Code of Conduct protects those who are offended, saying that this is not okay. Shawn (and I) believe this is too simple, and too much of an easy way out. There is a “difference between the intent to offend and being offended” (Shawn’s words) and we must recognize that a (sometimes abrasive) difference in opinion can enrich our lives. You have to be careful here, because obviously we don’t want individuals viciously targeting others, but we still want to allow for productive discourse.

Back to the important part, that is how the entity reacts to breaches in a code of conduct. Codes of conduct are meant to foster a standard of behavior, but also a standard of punishment. If you watch professional sports, one thing you’ll notice is that they are often inconsistent in their punishments, enraging thousands. One player will do something against the rules/code of conduct and will get fined, then the next week a player will do the same thing and perhaps go unpunished. A code of conduct should prevent these inconsistencies that cause outrage. It’s important for an entity of influence to use their power fairly, and not through a highly subjective manner. Shawn wanted to get the subjective components altered in the Open Code of Conduct, so we should strive to remove subjectivity from the reactions as well.


In the codes of conduct shown, I see them as good guidelines. They mostly just foster a behavioral standard of respect and friendliness. I don’t see a clear “How we will react” section in either, aside from “a representative will contact you personally, review the incident…” This, I feel is a major hole, but maybe when adapted by other companies a more concrete set of steps is drafted. I also feel it hypocritical of the Open Code of Conduct to make the claim that “we seek to treat everyone both as fairly and equally as possible” but then say they “[prioritize] marginalized people’s safety over privileged people’s comfort. We will not act on complaints regarding…” I know this is difficult ground to tread on. I don’t claim to understand the full viewpoint of the marginalized or that this is not the best solution, I only say that it may sound a little hypocritical. That said, if we have to put up with issues such as the potential “hypercriticality” of this statement for a while in order to reach full equality, then so be it.

[I would prefer not to have the above section shared.]


The Douglas Crockford situation seems to me to be two different parties lacking understanding and respect. From the readings, I don’t see anything remotely deserving of removal from a conference, but I cannot have the whole story. Crockford may have been abrasive in a few things he’d said, but I did not see anything that went out of its way to cause offense. Kas, on the other hand, went out of her way to attack Crockford specifically (which he had not appeared to have done), and boils down her argument in an update to “he’s still rude and a jerk.” I feel Crockford’s statements had just been taken too personally, and in a way they were not intended to be. Speaking with Crockford may have been a better route, and not caused as much of a stir. Nothing like this would ever prevent me from attending a conference, as I like to challenge myself with the company of others. Begin extraordinary is not accomplished by pushing others below me, but instead lifting myself above them.