Reflection on project 01

The new Code of Ethics that our group created included clauses describing general ethical principles that are in accordance with the ACM Code of Ethics as well as some new clauses that we think are uniquely applicable to us Notre Dame computer science and engineering majors. Like the ACM Code of Ethics, our Code of Ethics addresses important ethical issues such as do no harm, fairness and honesty. These issues are important because they are fundamental to almost any Code of Ethics. Other components are more specific for computer scientists and engineers: working with technology, computer scientists and engineers need to pay attention to issues such as privacy and intellectual property. Additionally, our group decided that, as Notre Dame students, we should be held at higher ethical standards. Therefore, we included clauses such as serving others, support the Notre Dame community and continuous adherence to this Code of Ethics even after graduation.

It is true that no document is perfect. In my opinion a key weakness of our Code of Ethics is that it does not delve deep enough into the more detailed everyday operations in the field of computer science and engineering. In another word, the document is great for enumerating qualities of an ethical computer scientist or engineer. But it is not really useful as a day-to-day guidelines for computer science and engineering professionals. I think this problem can be addressed with addition of more clauses pertaining to specific ethical dilemma encountered in professional life.

I think the process of making the Code of Ethics is actually more useful than its product. Through enumeration of the principles and beliefs, we were able to evaluate our own stands on important ethical issues and this self-reflecting and active thinking process is what can make people more ethical. The Code of Ethics itself, in my opinion, is more of a record of people’s opinions than a code law governing the ethics of a profession.

Code of Ethics

As a Notre Dame Computer Science and Engineering student I will …

  1. Do no harm

Avoiding causing negative consequences for people is the most fundamental and basic rule of thumbs in ethics. First of all, computer scientists and engineers cannot have the intention to do harm. They cannot build computer software with the intention of harming other people.However, sometimes well-intended actions can still lead to negative outcomes. Though computer scientists and engineers cannot predict the future, it is necessary for them to gather as much information as possible in order to give comprehensive and thorough evaluations for their software so that they are prepared to handle possible negative impacts of the software. If unforeseen negative consequences arise, they should take responsibility and work hard on minimizing the damage.

However, sometimes well-intended actions can still lead to negative outcomes. Though computer scientists and engineers cannot predict the future, it is necessary for them to gather as much information as possible so that they are prepared to handle possible negative impacts of the software. If unforeseen negative consequences arise, they should take responsibility and work hard on minimizing the damage.

  1. Dedicate myself to serving people and contributing to society.

Computer scientists and engineers should develop software that could help change the world for the better. Our generation has already experienced how advances in technology can promote human well-being: it brings us better entertainment, faster communication, advances in medical science and overall a more comfortable and healthy life. Innovations in computer science and engineering have never ceased to improve people’s lives. And as future leaders in the new wave of technological innovations, aspiring computer scientists and engineering must always remember to use the vast computing power to improve people’s lives.

  1. Be fair and honest

A fair and honest working environment is essential for the progresses in computer science and engineering. Honesty is important for fostering trust and without a trusting relationship, collaboration becomes difficult and teamwork becomes impossible. On the other hand, being fair is just as important. The field of technology attracts talent people from all over the world with many different cultural backgrounds. In order for everyone to work together well, it is important that we do not discriminate people on the basis of race, gender, religion, age, disability, national origin, sexual orientation, or other such factors.

  1. Respect people’s privacy

Technological advances in fields such as data mining have resulted in the accumulation of a large amount of personal data on a historically unprecedented scale. As a result, computer scientists and engineers must remain vigilant and stand firmly against the misuse of personal data and breach of confidentiality. In accordance with the clause of doing no harm, computer scientists and engineers must respect personal privacy and also try their best to insure that their software products are not used for the purpose of mistreating personal information.

Data collection can only proceed with informed consent from the source of data. When working with personal data, computer scientists and engineers must only access resources and data when needed to. It is also important that they correctly dispose the data after usage.

  1. Respect other people’s intellectual property.

In most cases, copyrights, patents, trade secrets and the terms of license are protected by law. But even in situations where legal protection has not yet been extended, computer scientists and engineers must still seek proper authorization before using the products.

  1. Maintain the highest quality and effectiveness when completing my tasks.

Compute scientists and engineers must thrive for excellence. They must try their best to ensure that their software products are of the highest quality. When working on projects, they should be responsible for their assigned tasks and work with competence and effectiveness.

  1. Pay attention to professional review and criticism.

Professional reviews and constructive criticism are beneficial for personal and professional growth. Computer Scientists and engineers must be humble and open to advice and strive for improvements.

  1. Help make computing knowledge more accessible to the general public

As computer technology become more and more essential for our lives, it is important that the general public gain more knowledge on the subject. Computer scientists and engineers have the responsibility to contribute to the cause of increasing public knowledge of computer technology. It can be viewed as part of their commitment to do good to the society.

  1. Contribute to the Notre Dame community

Notre Dame students, who have all enjoyed the benefits of the great education provided by Notre Dame, bear the responsibility to contribute to the Notre Dame community. As proud members of the Notre Dame community, the students majoring in Computer Science and Engineering also have the responsibility to utilize their expertise, knowledge and experience to serve the Notre Dame community. The services can be manifested in providing assistance, spreading knowledge or helping reach solutions, etc.

  1. Acknowledge and support the proper uses of resources at Notre Dame

Because there are limited resources available on campus, and a large number of students and staff in need of those resources, the Computer Science and Engineering students need to take into other people’s needs into consideration. Also, because computer-related resources can become tools to harm the community, the Computer Science and Engineering students have the responsibilities to use the available resources responsibly and property. Before utilizing those resources, the students need to always think of the potential outcomes resulting from their actions. As members of the Notre Dame community and beneficiaries from the resources provided by the university, Notre Dame Computer Science and Engineering students also need to report any improper use of the resources by other members of the Notre Dame community.

  1. Respect and support my fellow Computer Science and Engineering classmates

The Computer Science and Engineering students have many opportunities to interact with their classmates, either inside or outside the classroom. Combined with the numerous group project requirements in Computer Science and Engineering classes, it is crucial for Computer Science and Engineering students to respect their classmates’ ideas and works, and also to provide support and assistance for those in need. A collegial environment and collaborative culture fosters greater learning experience.

  1. Support the responsible and proper use of computer power

Computer scientists should heed the potential danger of computer power, and should never allow computers to make the most important decisions as it does not have human qualities such as wisdom.

  1. Adhere to and advocate the principles of this code

Commitment to ethical conduct is expected of every student in the Computer Science and Engineering department. Not only is it important for Notre Dame students to adhere to the principles in the Code of Ethics, it is also crucial for them to encourage and support adherence by other students.

  1. Support the principles after graduation

Although the Code of Ethics is mainly written for the current students in the Compute Science and Engineering department at the University of Notre Dame, the messages in the principles are universal, and it’s important for the students to continue uphold and support those principles in their following academic pursuits or professional careers.

Reading02

Where do you see your career headed? Do you plan on staying with one company or do you envision moving from job to job? Is there such thing as company loyalty? Should you be loyal to your company and should your company be loyal to you? How do things such as non-competes and trade secrets influence your opinion? Are these contracts fair? Are they ethical? On the flip side, is job hopping an ethical practice?

Because of my interests in medicine and scientific research, I see myself working in research institutes and hospitals rather than companies. In my opinion, there seems to be more incentive to stay with one employer in academia than in the corporate world. Most academic institutes adopt the tenure system, which offer employees great rewards for staying at one place. I do not see myself moving from job to job during my career. Staying with one employer means a more stable and familiar working environment. It also offers employees the opportunity for promotions and receiving benefits such as annual raise and retirement benefit. And since the economy is not what it used to be, it seems wiser to hold on to the job you have rather than gamble for a better position. Company loyalty goes both ways: for employees it can be translated into a sense of belonging and community. And in return, employers should reward their employees for staying with them. However, I do not see job hopping as unethical. It is the employees’ right to switch jobs if they want to, as long as they devout themselves to their work completely at each position.

I am aware that there are many arguments for job hopping. Studies show that job hoppers are earning more than other people. According to Forbes, “employees who stay in companies longer than two years get paid 50% less.” Also, according to the article You should plan on switching jobs every three years for the rest of your life, “job hoppers are believed to have a higher learning curve, be higher performers, and even to be more loyal, because they care about making a good impression in the short amount of time they know they’ll stay with each employer.” It seems that job hoppers are mostly motivated by higher salary and better benefits rather than the thrill of constantly changing jobs. Therefore, it is the companies’ responsibility to revise their policies to provide more incentives to their employees and promote company loyalty.

Interestingly, many companies choose to retain their employees by force rather than incentive. Companies are making their employees to sign contracts that could affect their decisions when considering switching jobs. Contracts such as Non-competes and trade secrets are supposed to be used for the protection of companies’ trade secrets such as software and secrete formula for their products. However, they also have the “side effect” of limiting employees’ career options after leaving the companies. Nowadays the term trade secrets is being applied more and more broadly, employees are forbidden to work in the same field for a period of time after leaving a position, a field they have been trained in probably since their college education. These contracts are neither fair nor ethical. They force people to rethink about switching jobs when they should have the right to do so. According to the article How Companies Kill Their Employees’ Job Searches, “Many felt that noncompetes enforcement was particularly unfair because their employers had only mentioned the agreements after they had accepted the job and begun work. Others, such as Jerry, felt it was unfair because it restricted the use of knowledge they had acquired before taking the job.” They seem more like dirty tricks played by the companies to make their employees stay rather than rightful contracts for protecting trade secret. As stated in the article How Companies Kill Their Employees’ Job Searches, “noncompetes agreements limit the job opportunities of highly skilled workers. When their choices are so limited, employees have less incentive to develop new skills and new knowledge.” Instead of making their employees sign noncompetes and trade secret, companies should put more effort into developing incentive systems to retain their employees. This would be the fair and ethical thing to do.

Reading01

From the readings and from your experience, what exactly is a hacker? That is, what are the key characteristics of the hacker archetype? Do you identify with these attributes? That is, would you consider yourself a hacker? What is your reaction to this characterization?

Hackers are prevalent in the modern-day culture. They are always portrayed as outlaws who break into computers. They can be criminals seeking personal gain by taking advantage of the faults in computer systems. Other times, they achieve superhero status by waging wars against the evil of the world. However, this understanding of hackers and what they do is fanciful. What hackers actually do is much less exciting but equally important. In the article The word “hacker”, the author explains programmer’s understanding of hacker. “To programmers, “hacker” connotes mastery in the most literal sense: someone who can make a computer do what he wants—whether the computer wants to or not.” In another word, if you want to be a hacker, all you have to do is to build software. In the article Hackers and painters, the author makes the comparison between hacking and other creative disciplines such as painting, architecture and engineering. The article finds many commonalities among these disciplines: “… the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters.” The article also points out what is unique about the creating process in hacking. When constructing a building, architects design the building or what to build and engineers are in charge of deciding how to build it. On the other hand, when creating software, hackers have to do both the designing and building process.

Once we have an understanding of what hackers really do, we realize that there are many characteristics that are shared by all hackers. First of all, hackers are intelligent. Programming is not a trivial task. One needs to understand the process of communicating to a machine through commands. It is important for the building process of hacking. Secondly, to be a good hacker, one must be observant. Before we can utilize our programming skills, we must have ideas about what to build. For the most time, these ideas come from observations on our lives. Hackers must notice the trends so as to make successful software products. For example, as a tech entrepreneur, one must come up with profitable ideas that solve a persisting problem in the society. This characteristic is required for the designing process. Thirdly, hackers have a great deal of curiosity. They are interested in a wide range of subjects. Unlike the popular image of a hacker sitting in a dark room somewhere programming all the time, As commented by the article A Portrait of J. Random Hacker, hackers in real life can be talkative and have interest in a variety of disciplines such as art, literature and natural science. And it is their curiosity that pushes them to think and explore so that they can build great software products. Lastly, hackers are ethical. Their goal is to build software products that serve the world. And they always thrive to promote goodness in the world.

The qualities listed above are qualities that I aspire to. And I think that they are essential for achieving success in any disciplines. I hope through learning and experiencing, I could obtain these hacker qualities. However, I am reluctant to consider myself a hacker. In the article Hackers and painters, the author talks about how the term computer science can be misleading and that what is called computer science is in fact many different areas of studies: “Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they’re doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers– studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters.” I realize that I am interested in computer science for the more abstract and theoretical part of it and less for its application or hacking. Therefore for the more practical definition of the word, I do not consider myself a hacker.

reading 00 post 2

Is Computer Science an art, engineering, or science discipline? Explain your thoughts and the implications of your assessment.

In my opinion, computer science has the characteristics of art, engineering and science disciplines. Its interdisciplinary nature puts computer science in a unique position in the modern world. Computer science could find its roots in other disciplines such as mathematics and physics and also find its applications in many other disciplines such as biology, finance, engineering and art.

First, computer science shares an ultimate goal with all other engineering disciplines, which is to build and create new things. The products of creativity in computer science are software, and just like any other engineers, computer scientists build their products with “resources” in this case, computing power and codes. Therefore, software engineers should have the same feeling of ownership towards their software products as would mechanical engineers have towards cars they built or civil engineers towards bridges they constructed. However, there are differences between computer science and the more traditional engineering disciplines. As pointed out by the author of the article, Programmers: Stop Calling Yourselves Engineers, compared to other engineering disciplines, computer science seems to deemphasize on “standards” or the quality of products. I can see where the author of this article can get this idea: while computer programs could have bugs and be faulty, the margins of error for other engineering products such as bridges or chemicals are a lot tighter. But I do not see this as a reason for excluding computer science from the realm of engineering. Unlike other engineering disciplines, the resources for creation in computer science seem limitless. As a result, computer scientists are able to utilize trial and error when building their products. When a mistake is made, it can be easily corrected. This does not mean that computer scientists care less about the quality of products than other engineers. They simply have a different approach to engineering and quality control.

Second, computer science can also be considered a science discipline because it has an emphasis on discovery. As a relatively new discipline, there are still a lot of aspects of computer science that remain unknown to us, and computer scientists are making new discoveries in the field every day. Because of its roots in mathematics and physics, studies in computer science also contribute to the further understanding of those disciplines. On the other hand, other scientific disciplines are also taking advantage of the computing power available and make progress in their fields. Interdisciplinary fields such as bioinformatics and computational chemistry are contributing to our understanding of the natural world. Personally, I am interested in the use of bioinformatics and computational biology in medicine, particularly cancer research. I believe that these computational tools can help us gain a better understanding of cancer disease mechanism and lead to the development of better cancer treatments. In all, the spirit of discovery is ever present in computer science.

Last but not least, computer science has an artistic quality, the quality of creativity. Computer scientists have a great deal of liberty to decide what they want to create, and there are few restrictions on what a computer program must or must not do. As more and more people acquired programming skills, there will be many more computer programs created based on people’s visions. On the other hand, just like its application in science disciplines such as biology and chemistry, computer science are also used to create artworks such as movies and paintings. It is undeniable that the special effects in many superhero movies are Art in their own right.

Because of its interdisciplinary qualities, computer science is in such an important position ever since its introduction into the world. It can be regarded as a foundation of the modern world because we rely on computer science more and more as the society progresses.

 

 

 

Reading 00 post 1

My name is Xuanyi Li and I go by Lexi. My interests are bioinformatics, medicine, cancer research and etc. I am studying computer science because it is an interesting subject and it is important in many aspects of the modern world. For me, the application of computer science in medicine is especially interesting and I am interested in research in this area. In this class, I hope I could learn about and discuss the ethical issues in computer science. I hope I could practice my critical thinking skills and become more ethical by actively thinking about the ethical dilemmas in my professional life.

As mentioned in the reading about the ethical issues in computer science (http://www.slate.com/blogs/quora/2014/05/07/what_are_some_ethical_issues_in_computer_science_research.html), the most pressing ethical issues in computer science include software reliability and quality, the ethical usage of data and the issue of security. I am most interested in the issue concerning usage of data. As we have learned in the data mining course, nowadays there is a huge amount of data across all disciplines that are available to us. And with data mining means, we are able to get insightful information. However, there are many ethical issues in the process of data mining. Issues such as the protection of personal information and the ownership of user data stored with companies such as amazon and facebook. I am interested in this issue because the correct usage of data is especially important when dealing with medical data.