CSC 322.01, Class 22: Demo day / Profession ethics, concluded
Overview
- Preliminaries
- Notes and news
- Upcoming work
- Questions
- Demos
- Callisto
- Local Foods
- Heartland
- PALS
- Mayflower
- Ethics case study, part two
- Additional discussion of ethics in the CS curriculum (if time)
Preliminaries
News / Etc.
- Mentor sessions will be Tue 7-8 and Thu 7-9.
- We will reassess after break.
- I’ll need help bringing food down for the CS extra in 1023.
Upcoming work
- Paper: Write your own case study, based on a real case.
Good things to do (Academic/Artistic)
- CS Extra Today! 4:15 In Science 1023. Food in that room at 4:00.
- CS Table on Tuesday!
Good things to do (Peer)
Good things to do (Misc)
Questions
Callisto
- Demo, part one: Look, we want to look like this other site.
- Demo, part two: Look, we have a stack. We don’t have choices, but
we do have a stack.
- The stack doesn’t get cleared where it has to.
Questions
- Do you preserve answers?
- Yes. They are there.
- But, um, they don’t show up again. We’ll look at that?
- What about the text fields?
- They should work. We don’t have any in the demo site.
- You will lose the text if you choose a separate path. (That’s a great test case.)
Local Foods
- Demo: Can now add “Operations” and have them work sensibly.
- Doesn’t seem to work with the front end.
- Issues with duplicate entries to be addressed.
- Demo: When you enter a farm name, brings us to that farm.
- Wouldn’t it be nicer to see approximate matches?
- Note: Need more realistic seed data.
- Icons? Still playing with it.
Heartland
- Demo: Some front-end work. Added Grinnell. Added better directory.
- Does not save.
- Demo: Send email. (Nope; simulate.)
- Sam needs to talk to the group about this upload/download database thing.
PALS
- UI Mockups
- Reports on volunteers and donors
- Who was there?
- Goal: Printed version
Mayflower
- Better appearance. Yay!
- Working on where to put the search results.
- Higlights in site menu bar
- Need to look at search results
- Search start/middle/end suggested
Ethics case study, review
The situation: You work for an ISP. One of your clients provides “bulletproof hosting” (but don’t bother to define what that is). One of their clients is a White Supremacist Group. People are clamoring for you to remove them.
Many of you have been using the ACM code of ethics in terms of how your clients’ client is using technology that we provide, but did not invent. I’d like to hear a bit more about why you think the code of ethics applies in that case.
Ethics case study, part two
Applying ethical theories
You have been assigned an “ethical theory” group. Get together with your group and decide how you would approach the problem through the lens of that ethical theory. (Yes, I realize that you may have to go back and review that ethical theory.)
Social contract: Group Q: NA, FA, CB, MB
- We give up freedoms in exchange for rules/security.
- So those WS folks should be giving up their freedom of speech in order to provide better security for others.
- Block traffic (either to the service provider or to the WS group).
- Advocation of violence breaks the social contract.
Deontology: Group 7: EB, GC, WSC, MD
- Following the rules is important. But what are the rules we’re following?
- Doing nothing doesn’t break any laws.
- Their actions are not breaking any laws.
- Some countries do have laws against racist sites; the US doesn’t.
- What does our contract with the data provider suggest?
Consequentialism: Group Banana: HF, SG, MG, BH
- “The ends justify the means”. What’s the end we care about?
- Non-violence (or safety of individuals) trumps questionable behavior.
- Threaten the content provider: Drop them or we’ll tell drop you.
Utilitarianism: Group Pi: PK, JRL, PM, SM
- Our goal is to maximize happiness (or something else).
- Maybe some kind of mediation between our company, the content provider, and the WS?
Virtue ethics: Group Phi: JM, AdM, DN, LP
- Live a life with “good morals”: Honesty, generosity, …
- So you’ll naturally make the right decision.
- Tell WS group: Please don’t cause violence. It’s wrong.
- Be rightously indignacious.
- It’s hard. We could argue for both sides.
- Where is “Freedom of Speech” on your value chart?
Justice as fairness: Group -3: ArM, JS, RS, JZ
- Each person should have liberties as long as they don’t interfere with other’s liberties.
- Resources equally availble to all.
- Also: Focus on the least advantaged.
- Conclusion: Get rid of the site.
Primary options: Effects on stakeholders
With your group, decide on the likely effects of some of the two major decisions (do nothing / ban the client) on each of the major stakeholders.
Stakeholders
Who are the stakeholders? (Some actors plus others affected by whatever decision you make.)
- Oppressed people
- White supremacists
- The bulletproof hosting service
- Our other clients / content providers
- Politicians and others of that ilk
- General public
- The company
- Shareholders
Options
- Status quo (Q, 7, Banana)
- Drop client (Q, 7, Banana)
- Tell client: Drop white supremacy group or else (Pi, Phi, -3)
- Filter traffic (Pi, Phi, -3)
Grounding the case
We will read and reflect on an actual case that underlies the theoretical case.
Additional discussion of ethics in the CS curriculum (if time)
I think that many of you never encountered a writing teacher who taught you not to write “I think”
For introducing ethics earlier / covering it more often
I think the coverage of ethics should be incorporated into the introductory class (CSC-151) itself, to give potential computer scientists a good grasp on the moral obligations of entering such a field. This way, ethics can be discussed over the course of their Grinnell education, as opposed to just in CSC-322 (which many students take in their last semester). In addition, ethics can be covered outside of class in events such as CS Tables and talks but keeping in mind that this is not inclusive for all students as many cannot make it to the talks.
I think that integrating ethics into every course is ideal. This approach allows students to see the ethical implications of each technique taught from every class, which is more significant than teaching ethics in a separate class. On the other hand, another approach which could work is teaching the ethics of every technique which has been taught to us or will be taught to us. This will allow for teaching the ethics of techniques that has yet been taught to us. This could have a similar impact to the first approach, but it is not as consistent. I think consistency plays a big role in teaching any material, which the first lends itself to.
I think ethics should be integrated into every CS course, because that is how people internalize values: through day-to-day exposure in normal situations. Parents do not generally pick one day to sit their children down and give them an intensive lecture on ethics; they introduce ethical principles as they arise. The same tactic should be applied in academia.
There shouldn’t be a dedicated course that aims to teach students about ethics, rather it should be interspersed throughout all computing courses. For example, during the final project of CSC-151, one group made a program that approximated the chance of having breast cancer through its size. It worked pretty well but it did have a sub 1% false negative rate which the group brushed off as statistically insignificant. You re-iterated that the 1% are still people whose lives might be hugely impacted which resonated with me. We could model few problems in classes that aim to solve critical issues such as the example above and therefore raise ethical questions about the results, implementation, or testing of it. A course that aims to teach about ethics will often not be taken as seriously by the students as one would want.
I think putting the discussion of ethics in this class does make a lot of sense, since this could be the first time students are working with actual clients, though it could be helpful to start the discussion earlier. Introducing less in depth ethics questions in introductory classes could help students awareness of ethical issues in computing, and would allow students to have a basic understanding of computing ethics before learning more in-depth about ethics in 321/2.
I think learning about ethics is important in all classes in one way or the other. The code of ethics do not only talk about the responsibilities of a software developer when working with a client, but also responsibilities of a software developer when they work with a team and how they must use their skills and knowledge to encourage the development of science and technology in a way that impacts the world for good. So, though CSC321/22 is the only class that deals with projects with clients, I believe that it is crucial to learn about ethics and how our work affects others in other classes. Like Narayan and Vallor point out in their article, “students should be in the habit of considering how the code they write serves the public good”, it is important for us as college students to consider the impact of our work in each class even when we are writing code for ourselves.
The article by Narayaan, et al. discusses two approaches to inserting coverage of ethics in software engineering/computer science curriculum. One is a adding a separate course taught through case studies, while the other is based upon integrating it within CS classes, with projects. There are merits to both types approaches—the first allows a look at the history of ethics in computation, while the second enables analysis of situations more like the workplace. Ideally, the integration of both approaches would be possible. Drawing from my experience in the Evolution of Technology class at Grinnell, which talked about ethics of technology through a case study approach, I can attest to how the class changed my approach in considering a technological problem and its impacts. I think a separate class would emphasize the importance of ethics, which could perhaps be lost if it was integrated within our introductory courses. This would also be more of a liberal arts experience of a course specifically focused on the history of computation. However, the importance of forming good habits, as is emphasized for documentation in the introductory classes, is also essential to teaching students about ethics.
For introducing ethics late
In my opinion I think coverage of ethics belongs in the portion of our curriculum right before we begin assigning projects to different groups within the class and begin meeting our respective clients. I think this should be the case because most ethics within software engineering pertain to some relation between a client and a group or the developers and the masses in general. I think this to be the case because as stated within the reading, Computing Ethics Why Software Engineering Courses Should Include Ethics Coverage, there is “potential for individual software engineers to produce great good, but with it naturally comes the ability to cause great harm, especially when combined with the ability to deploy code directly to end users.” As such, I believe that it is important for us to understand the potential of our own work to produce great good or more importantly, great harm in turn effectively making us that much more aware and careful with our actions.
I think that the coverage of ethics fits perfectly in the courses that deal with the creation of software for consumption by the public (Like 321/322), but I also feel like some sort of ethics should be emphasized, like workplace ethics, earlier on in the curriculum. Before we ever get the chance to create software for a client, we are taught to write code and then to write it efficiently, but it is not meant for anything else but our learning. We do not worry about how our work will affect others until we begin creating programs for other people, and then that’s when we need to look at the ethics of creating software for others. Earlier on in the curriculum however, I think it’d be best to include ethics on creating more inclusive spaces, being respectful of different backgrounds, and a greater emphasis on how to work with a partner. This way people gain a larger understanding of what it means to be a good computer scientist outside of programming, and gain skills that can be used on an everyday basis.
To best understand the ethics of programming, one must have a good knowledge of programming itself and a beginner’s understanding of working on a programming team. I say this because there are ethics about how to treat your colleagues and client, which are skills that come with working on a team. Anyway, its best to learn ethics when you have a beginner’s understanding because if you wait to late, then it might be too late, and your experienced workflow might go directly against one or more ethic principles. Therefore, its best to learn about ethics about halfway through the semester. Due to students past in the CS courses, they will have a good understanding of programming, and being halfway through the semester, will have a starter’s knowledge of working on a team for one project.
I think it makes most sense to put the discussion of ethics in either 321 or, as it is now, 322, or alternatively in its own 1 or 2 credit course. Ethics is an important concept that should be considered by everyone creating a program used by anyone else, but that does not mean it should be covered in the first introductory Computer Science class. Practical classtime restrictions aside, people just starting with CS courses do not really have to think about whether the program they are making is good for society because they are purely completing school assignments and only submitting to the professor and/or graders. Furthermore, the ethics of computer science is a rather philosophical area that beginners are neither prepared for, in terms of programming experience, nor particularly interested in; they are more concerned with either getting a taste of CS or finishing requirements for later courses. 321 and 322 are the first times students get to create something used by the rest of the world in the standard curriculum, so it makes sense to teach it then. However, I think a way to separate it from 322 would be to allow students to take it on its own, possibly requiring the completion of all intro courses, since at that point they are actively signing up for it and should have a greater understanding of CS as a field.
I like the current placement of ethics in our curriculum, but I think it could be expanded. Learning about ethics in the context of computing while we are working on a project for a real client gives us a way of seeing how these frameworks can be applied, and I think applying new information is a great way of retaining it.
I think it makes sense that we study ethics in 322 / the software development course, since it’s the first time in the major we’re creating software products for a client, rather than coding standalone assignments for our professors to grade. The other course I’ve taken which has a ethics section in the curriculum is AI, which also makes sense, considering the content of the course and the practical applications of what we learn and build. In the intro sequence, the programs we build don’t have as much of an impact on society, and don’t particularly serve a public good, so introducing ethics in this context seems premature. On the other hand, courses like 301 and 341 are far more theory focused, and again don’t seem to serve as a course where discussions of ethics are applicable to the subject matter.
CSC 207
I think covering ethics in 322 as is done currently is a good approach, since, as we’ve discussed, it’s the first time many of us are making software for clients in the real world. However, I could also see it being covered in 207, since that class involves some larger projects and students, by that point, have enough experience with the mechanics of programming that they can take a step back and think about good practices to follow if they go into the field of software engineering or other positions of technical expertise.
In the article it mentioned that habits are important to form. This made me think about how it would look to include conversations about ethics in some of the earlier courses. Based on when many CS students look for internships in industry, it would make sense to me if we had some discussion of ethics in 207.
A separate course
I agree with Narayaan and Vallor (March 2014), that habit is powerful, and that integrating ethics into every class has the potential to be very beneficial. However, in my opinion, a discussion of ethics in the early CS courses at Grinnell would be fruitless. I do not think that an early introduction or even fairly regular discussions throughout a course of engineering ethics would make it so ethics are always in the back of our minds when writing code for our assignments and labs. To practice our coding skills as we learn new material, assignments and labs propose problems that sometimes are not practical and will never be released to the public. Instead, I propose covering ethics in a 2-credit course that is mandatory for computer science majors and a prerequisite or corequisite for 321/322.
I also would love to see (and take) a separate course on ethics in computing. I think it would work well to have conversations about ethics started more than once in the curriculum, but explored in depth in one or two places (321/322, a separate course).
Other
In our curriculum, the coverage of ethics is mainly discussed in 321-322. We talked a lot about how to communicate with client, how to write better quality code and encouraged to write software that serves the community. In many lower level cs courses such as 151, 161 and 207, we also talked about decision in writing algorithm, what is the most efficient way to solve a problem, how much information or control do user have over the code and how to make the code modular and easy to understand. We also emphasized the idea of testing and always want to make sure to prove the correctness of the algorithm before pushing it to github or handing it to someone else.
The primary place it belongs is in a class on software just like how it is included in the syllabus for CSC322 at Grinnell. Professors cannot be expected to evaluate proposals and assignments for ethical risk as they already have such a heavy workload and that would be unfeasible. Similarly, I don’t think it would be feasible for their to be a ethics department that reviews all assignments; the department of academic honesty does something similar but they do not review work for consistency with a computer science ethics code, rather a general ethics code. A professor could play the role of an ethics coach function as a confidential resource for students facing ethical dilemma.
We have talked about ethics couples times in class, and I believe it is well integrated into the curriculum. The article proposes a discussion of ethics with every significant technology they teach. Discussions of hypothetical cases are the examples of where ethics coverage come into our curriculum.