You are on page 1of 7

1. What is professional ethics in Computer Science?

Professional ethics are principles that govern the behaviour of a person or group in a business
environment. Like values, professional ethics provide rules on how a person should act
towards other people and institutions in such an environment.
This means that all those in a particular group will use the same professional ethics, even
though their values may be unique to each person.
 Professional ethics cover the personal, organizational and corporate standards that are
expected of professionals.
-Includes issues involving relationships or responsibilities with:
 Employees, employers, and other people who use the products or services.
 “Computer Ethics” includes social, political, and personal issues.
Computing professionals' actions change the world. To act responsibly, they should reflect
upon the wider impacts of their work, consistently supporting the public good. The ACM
Code of Ethics and Professional Conduct ("the Code") expresses the conscience of the
profession.
From the Code of Ethics and Professional Conduct (ACM):

 Contribute to society and human well-being. Programmers should work to develop


computer systems that can reduce negative consequences to society, such as threats to
safety and health, and that can make everyday activities and work easier. It is “an
obligation to develop to high standards” (Savage).
 Avoid harm to others. Computer systems have an indirect impact on third parties. They
can cause loss of information and resources that might result severely harmful for users,
the general public, or employers. Therefore, software developers should minimize the
risk of harming others due to coding errors, or security issues, by following standards to
design and test systems (Code of Ethics and Professional Conduct).
 Be honest and trustworthy. This principle encourages programmers to be honest and
aware of their limitations in knowledge and education when writing computer systems.
Also, if a programmer knows there is something wrong with a computer system, he or
she should report it immediately to avoid undesirable consequences.
 Give proper credit for intellectual property. It is mandatory for every software
developer to never use and take credit for someone else's work, even when it has not been
protected by a copyright law, patent, etc. They must recognize and fully credit other
people's works, and they should use their own ideas to develop software.
 Respect the privacy of others. Computer systems are wrongly used by some people to
violate the privacy of others. Software developers should write programs that can protect
users’ private information and that can avoid other undesired people to have unauthorized
access to it (Code of Ethics and Professional Conduct).
 Honor confidentiality. Unless required by law or any other ethical guideline, a
programmer must keep secret any additional information related to his or her employer
that arises from working in a project.
From Software Engineering Code of Ethics and Professional Practice (IEEE, ACM):
 Approve software only if they have a well-founded belief it is safe and meets
specifications. Programmers cannot assume that a system is ready to use only
because it performs the tasks needed. They should make sure these systems are
also safe and meet every specification required by the user. If programs are not
safe, users are unprotected from hackers that could steal important information or
money. Therefore, several tests should be performed in order to ensure a system's
security before approving it.
 Accept full responsibility for their own work. If a program presents errors, the
software developer should accept full responsibility for his or her work, and
should work on revising, correcting, modifying, and testing it.
 Not knowingly use software that is obtained or retained either illegally or
unethically. If a computer system will be used as a base for the creation of
another, then permission to do so should be asked by the programmer. This
principle prohibits using any other software for any purpose if the way it was
gotten is not clear or is known to be illegal or unethical.
 Identify, define, and address ethical, economic, cultural, legal and
environmental issues related to work projects. If a programmer notices and
identifies that working on a project will lead to any kind of problems, then the
programmer should report it to his or her employer before continuing.
 Ensure that specifications for software on which they work satisfy the users’
requirements and they have the appropriate approvals. Software developers
should come to their employers to ask for the correspondent approval to the
system they are creating before continuing working on the next part. If it doesn't
meet the requirements, then a modification to the source code of the system
should be made.
 Ensure adequate testing, debugging and review of software. Programmers
should perform the appropriate tests to the pieces of software they work with, and
should check for errors and system security holes to make sure that the programs
are well implemented.
 Not engage in deceptive financial practices such as bribery, double billing, or
other improper financial practices. Programmers are exposed to be participants
in illegal activities to get money. They get involved in them due to threats,
economic issues, or simply because they want to obtain easy money by taking
advantage of their knowledge about how computer systems work. This guideline
prohibits programmer involvement in such unlawful actions.
 Improve their ability to create safe, reliable, and useful quality software.
Since technology advances faster year by year, and so does virtual criminality, the
need of well-structured and designed programs is increasing. Computer systems
get old and limited by new ones and new devices. Programmers should “further
their knowledge of developments in the analysis, specification, design,
development, maintenance, and testing software and related documents”
(Software Engineering Code of Ethics and Professional Practice)[4] in order to
create better pieces of software.
COMPLIANCE WITH THE CODE.
A computing professional should...
 Uphold, promote, and respect the principles of the Code.

2. Explain the types of values in computer Science


In computer science, a value is the representation of some entity that can be manipulated by a
program. The members of a type are the values of that type.
A value type in computer programming is a coded object that involves memory allocation
directly where it is created. Value types are commonly contrasted to reference types that instead
act as pointers to a value that is stored elsewhere.
Another way to talk about value types is that they are 'stored where they are defined,’ with
specific types of memory allocation.
The "value of a variable" is given by the corresponding mapping in the environment. In
languages with assignable variables it becomes necessary to distinguish between the r-value (or
contents) and the l-value (or location) of a variable.
In declarative (high-level) languages, values have to be referentially transparent. This means that
the resulting value is independent of the location in which a (sub-)expression needed to compute
the value is stored. Only the contents of the location (the bits, whether they are 1 or 0) and their
interpretation are significant.

Assignment: l-values and r-values


Some languages use the idea of l-values and r-values, deriving from the typical mode of
evaluation on the left and right-hand side of an assignment statement. An l-value refers to an
object that persists beyond a single expression. An r-value is a temporary value that does not
persist beyond the expression that uses it.
The notion of l-values and r-values was introduced by Combined Programming Language (CPL).
The notions in an expression of r-value, l-value, and r-value ,l-value are analogous to the
parameter modes of input parameter (has a value), output parameter (can be assigned), and
input/output parameter (has a value and can be assigned), though the technical details differ
between contexts and languages.
R-values and addresses
In many languages, notably the C family, l-values have storage addresses that are
programmatically accessible to the running program (e.g., via some address-of operator like "&"
in C/C++), meaning that they are variables or de-referenced references to a certain memory
location. R-values can be l-values (see below) or non-l-values—a term only used to distinguish
from l-values. Consider the C expression . When executed, the computer generates an integer
value of 13, but because the program has not explicitly designated where in the computer this 13
is stored, the expression is a non l-value. On the other hand, if a C program declares a variable x
and assigns the value of 13 to x, then the expression has a value of 13 and is an l-value.
In C, the term l-value originally meant something that could be assigned to (hence the name,
indicating it is on the left side of the assignment operator), but since the reserved word
(constant) was added to the language, the term is now 'modifiable l-value'. In C++11 a special
semantic-glyph exists ( not to be confused with the && operator used for logical operations ), to
denote the use/access of the expression's address for the compiler only; i.e., the address cannot be
retrieved using the address-of operator during the run-time of the program (see the use of move
semantics).
This type of reference can be applied to all r-values including non-l-values as well as l-values.
Some processors provide one or more instructions which take an immediate value, sometimes
referred to as "immediate" for short. An immediate value is stored as part of the instruction
which employs it, usually to load into, add to, or subtract from, a register. The other parts of the
instruction are the opcode, and destination. The latter may be implicit. (A non-immediate value
may reside in a register, or be stored elsewhere in memory, requiring the instruction to contain a
direct or indirect address [e.g., index register address] to the value.)
The l-value expression designates (refers to) an object. A non-modifiable l-value is addressable,
but not assignable. A modifiable l-value allows the designated object to be changed as well as
examined. An rvalue is any expression, a non-l-value is any expression that is not an l-value.
One example is an "immediate value" (look below) and consequently not addressable..
In assembly language
A value can be virtually any kind of data by a given data type, for instance a string, a digit, a
single letter.
Processors often support more than one size of immediate data, e.g. 8 or 16 bit, employing a
unique opcode and mnemonic for each instruction variant. If a programmer supplies a data value
that will not fit, the assembler issues an "Out of range" error message. Most assemblers allow an
immediate value to be expressed as ASCII, decimal, hexadecimal, octal, or binary data. Thus, the
ASCII character is the same as or . The byte order of strings may differ between processors,
depending on the assembler and computer architecture.
In many modern programming languages, floating point numbers and integers, as well as
boolean variables or constants, are value types. One element of value types that is commonly
questioned by developers is how and where value types are stored in different programming
languages.
For example, in a language like C#, programmers often discuss the storage of value types on a
'stack’ or in a 'managed heap,’ which takes on the issues of memory allocation around this type
of item.
Another example would be where programmers discuss the use of specific memory allocations
for value types in the data cleanup utilities of various software applications.
3. What is the function of Professional ethics in computer science?
One function of professional ethics is to assure clients that professional services will be
rendered in accordance with reasonably high standards and acceptable moral conduct.
This confidence enables professionals to exercise relatively independent judgments in
decisions affecting clients.
A Professional Code of Ethics serves several functions:
a. Symbolises the professionalism of the group.
b. Defines and promotes a standard for external relations with clients and employers.
c. Protects the group’s interests.
d. Codifies members’ rights.
e. Expresses ideals to aspire to.
f. Offers guidelines in “gray areas”.
4. Write the characters of professional Ethics in computer science?
As a professional, you advertise your expertise and therefore have an obligation to provide it.
 The customers rely on the knowledge, expertise, and most importantly the honesty.
The products of professionals generally affect a large number of people.
 Dishonesty, carelessness or incompetence could negatively affect all of them.
A computer professionals work could potentially affect the life, health, and finances of a client.
 Computer professionals not only have responsibilities towards their direct customers, but
also the general public.
◦ Thinking about potential risks
◦ Taking action to correct these risks
 Responsibilities for noncomputer professionals:
◦ Knowing/learning enough about the system to understand potential problems
 Principles for producing good systems which concerns software developers,
programmers, consultants, and others who make decisions about obtaining systems for
large organizations.
 There are many more specific guidelines in the SE Code and in the ACM Code, which
will be explained and defined in the scenarios.
 Principles:
 Understand what success means.
 Developers and institutional users of computer system’s must view the
system’s role and their responsibility in a wide context.
◦ Include users in the design and testing stages to provide safe and useful
systems.
 Mistakes or accidents occur when technical people developed systems
without sufficient knowledge of what is important to users.
◦ Design for real users
 People make typos, get confused, or are new at their job. So, system
designers and programmers must provide clear user interfaces and include
appropriate checking of input.
◦ Don’t assume existing software is safe or correct
 Software used from another application needs to be verified for suitability
for the current project.
◦ Be open and honest about capabilities
 Emphasizing your best qualities and being dishonest is not always clear,
but it should be clear that hiding known, serious flaws and lying to
customers are on the wrong side of the line.
◦ Require a convincing case for safety
 One of the difficult ethical problems that arise in safety-critical
applications is deciding how much risk is acceptable.
 Ethical decision makers should always consider the balance of risk taken
when undergoing a project.
◦ Pay attention to defaults
 System designers should give serious thought to default settings as
protection, ease of use, and compatibility with user expectations is a
priority.
◦ Develop communication skills
 Computer professionals have to explain technical issues to clients and
coworkers.
 One’s presentations can be more effective by organizing information,
distinguishing what is important, and engaging the listener actively in the
conversation to ensure the client is interested.
Example: You are a programmer at a bank and you found flaws in your program which is used
in ATMs. Would you tell your employer?
Solution: You have to be honest. Inform your employers and try to fix the program. The
consequences for hiding faulty programs would be worst than admitting your mistakes.

You might also like