Knowledge Areas

Architecture and Organization (AR)

Computing professionals should not regard the computer as just a black box that executes programs by magic. The knowledge area Architecture and Organization builds on Systems Fundamentals (SF) to develop a deeper understanding of the hardware environment upon which all computing is based, and the interface it provides to higher software layers. Students should acquire an understanding and appreciation of a computer system’s functional components, their characteristics, performance, and interactions, and, in particular, the challenge of harnessing parallelism to sustain performance improvements now and into the future. Students need to understand computer architecture to develop programs that can achieve high performance through a programmer’s awareness of parallelism and latency. In selecting a system to use, students should be able to understand the tradeoff among various components, such as CPU clock speed, cycles per instruction, memory size, and average memory access time.

The learning outcomes specified for these topics correspond primarily to the core and are intended to support programs that elect to require only the minimum 16 hours of computer architecture of their students. For programs that want to teach more than the minimum, the same AR topics can be treated at a more advanced level by implementing a two-course sequence. For programs that want to cover the elective topics, those topics can be introduced within a two-course sequence and/or be treated in a more comprehensive way in a third course.

AR / Machine Level Representation of Data
  1. Bits, bytes, and words ★
  2. Numeric data representation and number bases ★
  3. Fixed- and floating-point systems ★
  4. Signed and twos-complement representations ★
  5. Representation of non-numeric data (character codes, graphical data) ★
  6. Representation of records and arrays ★
Learning Outcomes
  1. Explain why everything is data, including instructions, in computers. [Familiarity] ★
  2. Explain the reasons for using alternative formats to represent numerical data. [Familiarity] ★
  3. Describe how negative integers are stored in sign-magnitude and twos-complement representations. [Familiarity] ★
  4. Explain how fixed-length number representations affect accuracy and precision. [Familiarity] ★
  5. Describe the internal representation of non-numeric data, such as characters, strings, records, and arrays. [Familiarity] ★
  6. Convert numerical data from one format to another. [Usage] ★
  7. Write simple programs at the assembly/machine level for string processing and manipulation. [Usage] ★
AR / Digital Logic and Digital Systems
Learning Outcomes

    Computational Science (CN)



    CN / Data, Information, and Knowledge

    Many topics are discussed in detail in other knowledge areas in this document, specifically Information Management (IM/Information Management Concepts, IM/Database Systems, and IM/Data Modeling), Algorithms and Complexity (AL/Basic Analysis, AL/Fundamental Data Structures and Algorithms), and Software Development Fundamentals (SDF/Fundamental Programming Concepts, SDF/Development Methods).

    1. Content management models, frameworks, systems, design methods (as in IM. Information Management) 
    2. Digital representations of content including numbers, text, images (e.g., raster and vector), video (e.g., QuickTime, MPEG2, MPEG4), audio (e.g., written score, MIDI, sampled digitized sound track) and animations; complex/composite/aggregate objects; FRBR 
    3. Digital content creation / capture and preservation, including digitization, sampling, compression, conversion, transformation / translation, migration / emulation, crawling, harvesting 
    4. Content structure / management, including digital libraries and static/dynamic/stream aspects for: 
      • Data: data structures, databases
      • Information: document collections, multimedia pools, hyperbases (hypertext, hypermedia), catalogs, repositories
      • Knowledge: ontologies, triple stores, semantic networks, rules
    5. Processing and pattern recognition, including indexing, searching (including: queries and query languages; central / federated / P2P), retrieving, clustering, classifying/categorizing, analyzing/mining/extracting, rendering, reporting, handling transactions 
    6. User / society support for presentation and interaction, including browse, search, filter, route, visualize, share, collaborate, rate, annotate, personalize, recommend 
    7. Modeling, design, logical and physical implementation, using relevant systems/software 
    Learning Outcomes
    1. Identify all of the data, information, and knowledge elements and related organizations, for a computational science application. [Assessment] 
    2. Describe how to represent data and information for processing. [Familiarity] 
    3. Describe typical user requirements regarding that data, information, and knowledge. [Familiarity] 
    4. Select a suitable system or software implementation to manage data, information, and knowledge. [Assessment] 
    5. List and describe the reports, transactions, and other processing needed for a computational science application. [Familiarity] 
    6. Compare and contrast database management, information retrieval, and digital library systems with regard to handling typical computational science applications. [Assessment] 
    7. Design a digital library for some computational science users/societies, with appropriate content and services. [Usage] 

    Graphics and Visualization (GV)



    GV / Basic Rendering

    This section describes basic rendering and fundamental graphics techniques that nearly every undergraduate course in graphics will cover and that are essential for further study in graphics. Sampling and anti-aliasing are related to the effect of digitization and appear in other areas of computing, for example, in audio sampling.

    1. Rendering in nature, e.g., the emission and scattering of light and its relation to numerical integration 
    2. Forward and backward rendering (i.e., ray-casting and rasterization) 
    3. Polygonal representation 
    4. Basic radiometry, similar triangles, and projection model 
    5. Affine and coordinate system transformations 
    6. Ray tracing 
    7. Visibility and occlusion, including solutions to this problem such as depth buffering, Painter’s algorithm, and ray tracing 
    8. The forward and backward rendering equation 
    9. Simple triangle rasterization 
    10. Rendering with a shader-based API 
    11. Texture mapping, including minification and magnification (e.g., trilinear MIP-mapping) 
    12. Application of spatial data structures to rendering 
    13. Sampling and anti-aliasing 
    14. Scene graphs and the graphics pipeline 
    Learning Outcomes
    1. Discuss the light transport problem and its relation to numerical integration i.e., light is emitted, scatters around the scene, and is measured by the eye. [Familiarity] 
    2. Describe the basic graphics pipeline and how forward and backward rendering factor in this. [Familiarity] 
    3. Create a program to display 3D models of simple graphics images. [Usage] 
    4. Derive linear perspective from similar triangles by converting points (x, y, z) to points (x/z, y/z, 1). [Usage] 
    5. Obtain 2-dimensional and 3-dimensional points by applying affine transformations. [Usage] 
    6. Apply 3-dimensional coordinate system and the changes required to extend 2D transformation operations to handle transformations in 3D. [Usage] 
    7. Contrast forward and backward rendering. [Assessment] 
    8. Explain the concept and applications of texture mapping, sampling, and anti-aliasing. [Familiarity] 
    9. Explain the ray tracing/rasterization duality for the visibility problem. [Familiarity] 
    10. Implement simple procedures that perform transformation and clipping operations on simple 2-dimensional images. [Usage] 
    11. Implement a simple real-time renderer using a rasterization API (e.g., OpenGL) using vertex buffers and shaders. [Usage] 
    12. Compare and contrast the different rendering techniques. [Assessment] 
    13. Compute space requirements based on resolution and color coding. [Assessment] 
    14. Compute time requirements based on refresh rates, rasterization techniques. [Assessment] 
    GV / Fundamental Concepts

    For nearly every computer scientist and software developer, an understanding of how humans interact with machines is essential. While these topics may be covered in a standard undergraduate graphics course, they may also be covered in introductory computer science and programming courses. Part of our motivation for including immediate and retained modes is that these modes are analogous to polling vs. event driven programming. This is a fundamental question in computer science: Is there a button object, or is there just the display of a button on the screen? Note that most of the outcomes in this section are at the knowledge level, and many of these topics are revisited in greater depth in later sections.

    1. Media applications including user interfaces, audio and video editing, game engines, cad, visualization, virtual reality ★★
    2. Digitization of analog data, resolution, and the limits of human perception, e.g., pixels for visual display, dots for laser printers, and samples for audio (HCI/Foundations) ★★
    3. Use of standard APIs for the construction of UIs and display of standard media formats (see HCI/GUI construction) ★★
    4. Standard media formats, including lossless and lossy formats ★★
    5. Additive and subtractive color models (CMYK and RGB) and why these provide a range of colors ★
    6. Tradeoffs between storing data and re-computing data as embodied by vector and raster representations of images ★
    7. Animation as a sequence of still images ★
    8. Double buffering 
    Learning Outcomes
    1. Identify common uses of digital presentation to humans (e.g., computer graphics, sound). [Familiarity] ★★
    2. Explain in general terms how analog signals can be reasonably represented by discrete samples, for example, how images can be represented by pixels. [Familiarity] ★★
    3. Explain how the limits of human perception affect choices about the digital representation of analog signals. [Familiarity] ★★
    4. Construct a simple user interface using a standard API. [Usage] ★★
    5. Describe the differences between lossy and lossless image compression techniques, for example as reflected in common graphics image file formats such as JPG, PNG, MP3, MP4, and GIF. [Familiarity] ★★
    6. Describe color models and their use in graphics display devices. [Familiarity] ★
    7. Describe the tradeoffs between storing information vs. storing enough information to reproduce the information, as in the difference between vector and raster rendering. [Familiarity] ★
    8. Describe the basic process of producing continuous motion from a sequence of discrete frames (sometimes called “flicker fusion”). [Familiarity] 
    9. Describe how double-buffering can remove flicker from animation. [Familiarity] 

    Human-Computer Interaction (HCI)



    HCI / Mixed, Augmented and Virtual Reality

    Some curricula will want to emphasize an understanding of the norms and values of HCI work itself as emerging from, and deployed within specific historical, disciplinary and cultural contexts.

    1. Intellectual styles and perspectives to technology and its interfaces 
    2. Consideration of HCI as a design discipline 
      • Sketching
      • Participatory design
    3. Critically reflective HCI 
      • Critical technical practice
      • Technologies for political activism
      • Philosophy of user experience
      • Ethnography and ethnomethodology
    4. Indicative domains of application 
      • Sustainability
      • Arts-informed computing
    Learning Outcomes
    1. Explain what is meant by “HCI is a design-oriented discipline”. [Familiarity] 
    2. Detail the processes of design appropriate to specific design orientations. [Familiarity] 
    3. Apply a variety of design methods to a given problem. [Usage] 
    HCI / Design-Oriented HCI

    Some curricula will want to emphasize an understanding of the norms and values of HCI work itself as emerging from, and deployed within specific historical, disciplinary and cultural contexts.

    1. Intellectual styles and perspectives to technology and its interfaces 
    2. Consideration of HCI as a design discipline 
      • Sketching
      • Participatory design
    3. Critically reflective HCI 
      • Critical technical practice
      • Technologies for political activism
      • Philosophy of user experience
      • Ethnography and ethnomethodology
    4. Indicative domains of application 
      • Sustainability
      • Arts-informed computing
    Learning Outcomes
    1. Explain what is meant by “HCI is a design-oriented discipline”. [Familiarity] 
    2. Detail the processes of design appropriate to specific design orientations. [Familiarity] 
    3. Apply a variety of design methods to a given problem. [Usage] 
    HCI / Foundations

    For end-users, the interface is the system. So design in this domain must be interaction-focused and human-centered. Students need a different repertoire of techniques to address this than is provided elsewhere in the curriculum.

    1. Contexts for HCI (anything with a user interface, e.g., webpage, business applications, mobile applications, and games) 
    2. Processes for user-centered development, e.g., early focus on users, empirical testing, iterative design 
    3. Different measures for evaluation, e.g., utility, efficiency, learnability, user satisfaction 
    4. Usability heuristics and the principles of usability testing 
    5. Physical capabilities that inform interaction design, e.g., color perception, ergonomics 
    6. Cognitive models that inform interaction design, e.g., attention, perception and recognition, movement, and memory; gulfs of expectation and execution 
    7. Social models that inform interaction design, e.g., culture, communication, networks and organizations 
    8. Principles of good design and good designers; engineering tradeoffs 
    9. Accessibility, e.g., interfaces for differently-abled populations (e.g., blind, motion-impaired) 
    10. Interfaces for differently-aged population groups (e.g., children, 80+) 
    Learning Outcomes
    1. Discuss why human-centered software development is important. [Familiarity] 
    2. Summarize the basic precepts of psychological and social interaction. [Familiarity] 
    3. Develop and use a conceptual vocabulary for analyzing human interaction with software: affordance, conceptual model, feedback, and so forth. [Usage] 
    4. Define a user-centered design process that explicitly takes account of the fact that the user is not like the developer or their acquaintances. [Usage] 
    5. Create and conduct a simple usability test for an existing software application. [Assessment] 
    HCI / Programming Interactive Systems

    To take a user-experience-centered view of software development and then cover approaches and technologies to make that happen.

    1. Software Architecture Patterns, e.g., Model-View controller; command objects, online, offline (cross reference PL/Event Driven and Reactive Programming, where MVC is used in the context of event-driven programming) 
    2. Interaction Design Patterns: visual hierarchy, navigational distance 
    3. Event management and user interaction 
    4. Geometry management (cross-reference GV/Geometric Modelling) 
    5. Choosing interaction styles and interaction techniques 
    6. Presenting information: navigation, representation, manipulation 
    7. Interface animation techniques (e.g., scene graphs) 
    8. Widget classes and libraries 
    9. Modern GUI libraries (e.g. iOS, Android, JavaFX) GUI builders and UI programming environments (cross reference PBD/Mobile Platforms) 
    10. Declarative Interface Specification: Stylesheets and DOM 
    11. Data-driven applications (database-backed web pages) 
    12. Cross-platform design 
    13. Design for resource-constrained devices (e.g. small, mobile devices) 
    Learning Outcomes
    1. Explain the importance of Model-View controller to interface programming. [Familiarity] 
    2. Create an application with a modern graphical user interface. [Usage] 
    3. Identify commonalities and differences in UIs across different platforms. [Familiarity] 
    4. Explain and use GUI programming concepts: event handling, constraint-based layout management, etc. [Familiarity] 
    HCI / Statistical Methods for HCI

    Much HCI work depends on the proper use, understanding and application of statistics. This knowledge is often held by students who join the field from psychology, but less common in students with a CS background.

    1. t-tests 
    2. ANOVA 
    3. Randomization (non-parametric) testing, within vs. between-subjects design 
    4. Calculating effect size 
    5. Exploratory data analysis 
    6. Presenting statistical data 
    7. Combining qualitative and quantitative results 
    Learning Outcomes
    1. Explain basic statistical concepts and their areas of application. [Familiarity] 
    2. Extract and articulate the statistical arguments used in papers that quantitatively report user studies. [Usage] 
    3. Design a user study that will yield quantitative results. [Usage] 
    4. Conduct and report on a study that utilizes both qualitative and quantitative evaluation. [Usage] 
    HCI / Human Factors and Security

    Effective interface design requires basic knowledge of security psychology. Many attacks do not have a technological basis, but exploit human propensities and vulnerabilities. “Only amateurs attack machines; professionals target people” (Bruce Schneier, see Phishing Has Gotten Very Good)

    1. Applied psychology and security policies 
    2. Security economics 
    3. Regulatory environments – responsibility, liability and self-determination 
    4. Organizational vulnerabilities and threats 
    5. Usability design and security 
    6. Pretext, impersonation and fraud, e.g., phishing and spear phishing (cross-reference IAS/Threats and Attacks) 
    7. Trust, privacy and deception 
    8. Biometric authentication (camera, voice) 
    9. Identity management 
    Learning Outcomes
    1. Explain the concepts of phishing and spear phishing, and how to recognize them. [Familiarity] 
    2. Describe the issues of trust in interface design with an example of a high and low trust system. [Assessment] 
    3. Design a user interface for a security mechanism. [Assessment] 
    4. Explain the concept of identity management and its importance. [Familiarity] 
    5. Analyze a security policy and/or procedures to show where they consider, or fail to consider, human factors. [Usage] 
    HCI / Collaboration and Communication

    Computer interfaces not only support users in achieving their individual goals but also in their interaction with others, whether that is task-focused (work or gaming) or task-unfocused (social networking).

    1. Asynchronous group communication, e.g., e-mail, forums, social networks 
    2. Synchronous group communication, e.g., chat rooms, conferencing, online games 
    3. Social media, social computing, and social network analysis 
    4. Online collaboration, 'smart' spaces, and social coordination aspects of workflow technologies 
    5. Online communities 
    6. Software characters and intelligent agents, virtual worlds and avatars (cross-reference IS/Agents) 
    7. Social psychology 
    Learning Outcomes
    1. Describe the difference between synchronous and asynchronous communication. [Familiarity] 
    2. Compare the HCI issues in individual interaction with group interaction. [Assessment] 
    3. Discuss several issues of social concern raised by collaborative software. [Familiarity] 
    4. Discuss the HCI issues in software that embodies human intention. [Familiarity] 
    HCI / New Interactive Technologies

    As technologies evolve, new interaction styles are made possible. This knowledge unit should be considered extensible, to track emergent technology.

    1. Choosing interaction styles and interaction techniques 
    2. Representing information to users: navigation, representation, manipulation 
    3. Approaches to design, implementation and evaluation of non-mouse interaction 
    4. Touch and multi-touch interfaces 
    5. Shared, embodied, and large interfaces 
    6. New input modalities (such as sensor and location data) 
    7. New Windows, e.g., iPhone, Android 
    8. Speech recognition and natural language processing (cross reference IS/Natural Language Processing) 
    9. Wearable and tangible interfaces 
    10. Persuasive interaction and emotion 
    11. Ubiquitous and context-aware interaction technologies (Ubicomp) 
    12. Bayesian inference (e.g. predictive text, guided pointing) 
    13. Ambient/peripheral display and interaction 
    Learning Outcomes
    1. Describe when non-mouse interfaces are appropriate. [Familiarity] 
    2. Understand the interaction possibilities beyond mouse-and-pointer interfaces. [Familiarity] 
    3. Discuss the advantages (and disadvantages) of non-mouse interfaces. [Assessment] 
    HCI / Designing Interaction

    CS students need a minimal set of well-established methods and tools to bring to interface construction.

    1. Principles of graphical user interfaces (GUIs) 
    2. Elements of visual design (layout, colour, fonts, labelling) 
    3. Task analysis, including qualitative aspects of generating task analytic models 
    4. Low-fidelity (paper) prototyping 
    5. Quantitative evaluation techniques, e.g., keystroke-level evaluation 
    6. Help and documentation 
    7. Handling human/system failure 
    8. User interface standards 
    Learning Outcomes
    1. For an identified user group, undertake and document an analysis of their needs. [Assessment] 
    2. Create a simple application, together with help and documentation, that supports a graphical user interface. [Usage] 
    3. Conduct a quantitative evaluation and discuss/report the results. [Usage] 
    4. Discuss at least one national or international user interface design standard. [Familiarity] 
    HCI / User-Centered Design and Testing

    An exploration of techniques to ensure that end-users are fully considered at all stages of the design process, from inception to implementation.

    1. Approaches to, and characteristics of, the design process 
    2. Functionality and usability requirements (cross-reference to SE/Requirements Engineering) 
    3. Techniques for gathering requirements, e.g., interviews, surveys, ethnographic and contextual enquiry 
    4. Techniques and tools for the analysis and presentation of requirements, e.g., reports, personas 
    5. Prototyping techniques and tools, e.g., sketching, storyboards, low-fidelity prototyping, wireframes 
    6. Evaluation without users, using both qualitative and quantitative techniques, e.g., walkthroughs, GOMS, expert-based analysis, heuristics, guidelines, and standards 
    7. Evaluation with users, e.g., observation, think-aloud, interview, survey, experiment 
    8. Challenges to effective evaluation, e.g., sampling, generalization 
    9. Reporting the results of evaluations 
    10. Internationalization, designing for users from other cultures, cross-cultural 
    Learning Outcomes
    1. Explain how user-centered design complements other software process models. [Familiarity] 
    2. Use lo-fi (low fidelity) prototyping techniques to gather, and report, user responses. [Usage] 
    3. Choose appropriate methods to support the development of a specific UI. [Assessment] 
    4. Use a variety of techniques to evaluate a given UI. [Assessment] 
    5. Compare the constraints and benefits of different evaluative methods. [Assessment] 

    Information Management (IM)



    IM / Multimedia Systems
    1. Input and output devices, device drivers, control signals and protocols, DSPs 
    2. Standards (e.g., audio, graphics, video) 
    3. Applications, media editors, authoring systems, and authoring 
    4. Streams/structures, capture/represent/transform, spaces/domains, compression/coding 
    5. Content-based analysis, indexing, and retrieval of audio, images, animation, and video 
    6. Presentation, rendering, synchronization, multi-modal integration/interfaces 
    7. Real-time delivery, quality of service (including performance), capacity planning, audio/video conferencing, video-on-demand 
    Learning Outcomes
    1. Describe the media and supporting devices commonly associated with multimedia information and systems. [Familiarity] 
    2. Demonstrate the use of content-based information analysis in a multimedia information system. [Usage] 
    3. Critique multimedia presentations in terms of their appropriate use of audio, video, graphics, color, and other information presentation concepts. [Assessment] 
    4. Implement a multimedia application using an authoring system. [Usage] 
    5. For each of several media or multimedia standards, describe in non-technical language what the standard calls for, and explain how aspects of human perception might be sensitive to the limitations of that standard. [Familiarity] 
    6. Describe the characteristics of a computer system (including identification of support tools and appropriate standards) that has to host the implementation of one of a range of possible multimedia applications. [Familiarity] 

    Platform-Based Development (PBD)



    PBD / Web Platforms
    1. Web programming languages (e.g., HTML5, JavaScript, PHP, CSS) 
    2. Web platform constraints 
    3. Software as a Service (SaaS) 
    4. Web standards 
    Learning Outcomes
    1. Design and implement a simple web application. [Usage] 
    2. Describe the constraints that the web puts on developers. [Familiarity] 
    3. Compare and contrast web programming with general purpose programming. [Assessment] 
    4. Describe the differences between Software-as-a-Service and traditional software products. [Familiarity] 
    5. Discuss how web standards impact software development. [Familiarity] 
    6. Review an existing web application against a current web standard. [Assessment] 

    Social Issues and Professional Practice (SP)

    While technical issues are central to the computing curriculum, they do not constitute a complete educational program in the field. Students must also be exposed to the larger societal context of computing to develop an understanding of the relevant social, ethical, legal and professional issues. This need to incorporate the study of these non-technical issues into the ACM curriculum was formally recognized in 1991, as can be seen from the following excerpt [2]

    Undergraduates also need to understand the basic cultural, social, legal, and ethical issues inherent in the discipline of computing. They should understand where the discipline has been, where it is, and where it is heading. They should also understand their individual roles in this process, as well as appreciate the philosophical questions, technical problems, and aesthetic values that play an important part in the development of the discipline.

    Students also need to develop the ability to ask serious questions about the social impact of computing and to evaluate proposed answers to those questions. Future practitioners must be able to anticipate the impact of introducing a given product into a given environment. Will that product enhance or degrade the quality of life? What will the impact be upon individuals, groups, and institutions?

    Finally, students need to be aware of the basic legal rights of software and hardware vendors and users, and they also need to appreciate the ethical values that are the basis for those rights. Future practitioners must understand the responsibility that they will bear, and the possible consequences of failure. They must understand their own limitations as well as the limitations of their tools. All practitioners must make a longterm commitment to remaining current in their chosen specialties and in the discipline of computing as a whole.

    As technological advances continue to significantly impact the way we live and work, the critical importance of social issues and professional practice continues to increase; new computer-based products and venues pose ever more challenging problems each year. It is our students who must enter the workforce and academia with intentional regard for the identification and resolution of these problems.

    Computer science educators may opt to deliver this core and elective material in stand-alone courses, integrated into traditional technical and theoretical courses, or as special units in capstone and professional practice courses. The material in this familiarity area is best covered through a combination of one required course along with short modules in other courses. On the one hand, some units listed as Core Tier-1 (in particular, Social Context, Analytical Tools, Professional Ethics, and Intellectual Property) do not readily lend themselves to being covered in other traditional courses. Without a standalone course, it is difficult to cover these topics appropriately. On the other hand, if ethical and social considerations are covered only in the standalone course and not “in context,” it will reinforce the false notion that technical processes are void of these other relevant issues. Because of this broad relevance, it is important that several traditional courses include modules with case studies that analyze the ethical, legal, social and professional considerations in the context of the technical subject matter of the course. Courses in areas such as software engineering, databases, computer networks, information assurance and security, and introduction to computing provide obvious context for analysis of ethical issues. However, an ethics-related module could be developed for almost any course in the curriculum. It would be explicitly against the spirit of the recommendations to have only a standalone course. Running through all of the issues in this area is the need to speak to the computing practitioner’s responsibility to proactively address these issues by both moral and technical actions. The ethical issues discussed in any class should be directly related to and arise naturally from the subject matter of that class. Examples include a discussion in the database course of data aggregation or data mining, or a discussion in the software engineering course of the potential conflicts between obligations to the customer and obligations to the user and others affected by their work. Programming assignments built around applications such as controlling the movement of a laser during eye surgery can help to address the professional, ethical and social impacts of computing. Computing faculty who are unfamiliar with the content and/or pedagogy of applied ethics are urged to take advantage of the considerable resources from ACM, IEEE-CS, SIGCAS (special interest group on computers and society), and other organizations.

    It should be noted that the application of ethical analysis underlies every subsection of this Social and Professional knowledge area in computing. The ACM Code of Ethics and Professional Conduct ( provides guidelines that serve as the basis for the conduct of our professional work. The General Moral Imperatives provide an understanding of our commitment to personal responsibility, professional conduct, and our leadership roles.

    SP / History
      Learning Outcomes
        SP / Analytical Tools

        Ethical theories and principles are the foundations of ethical analysis because they are the viewpoints from which guidance can be obtained along the pathway to a decision. Each theory emphasizes different points such as predicting the outcome and following one’s duties to others in order to reach an ethically guided decision. However, in order for an ethical theory to be useful, the theory must be directed towards a common set of goals. Ethical principles are the common goals that each theory tries to achieve in order to be successful. These goals include beneficence, least harm, respect for autonomy, and justice.

        1. Ethical argumentation ★★
        2. Ethical theories and decision-making ★★
        3. Moral assumptions and values ★★
        Learning Outcomes
        1. Evaluate stakeholder positions in a given situation. [Assessment] ★★
        2. Analyze basic logical fallacies in an argument. [Assessment] ★★
        3. Analyze an argument to identify premises and conclusion. [Assessment] ★★
        4. Illustrate the use of example and analogy in ethical argument. [Usage] ★★
        5. Evaluate ethical/social tradeoffs in technical decisions. [Assessment] ★★
        SP / Security Policies, Laws and Computer Crimes
          Learning Outcomes
            SP / Intellectual Property

            Intellectual property refers to a range of intangible rights of ownership in an asset such as a software program. Each intellectual property ‘right’ is itself an asset. The law provides different methods for protecting these rights of ownership based on their type. There are essentially four types of intellectual property rights relevant to software: patents, copyrights, trade secrets and trademarks. Each affords a different type of legal protection. See cross-referencing with the Information Management (IM) Knowledge Area.

            1. Philosophical foundations of intellectual property 
            2. Intellectual property rights (cross-reference IM/Information Storage and Retrieval/intellectual property and protection) 
            3. Intangible digital intellectual property (IDIP) 
            4. Legal foundations for intellectual property protection 
            5. Digital rights management 
            6. Copyrights, patents, trade secrets, trademarks 
            7. Plagiarism 
            8. Foundations of the open source movement 
            9. Software piracy 
            Learning Outcomes
            1. Discuss the philosophical bases of intellectual property. [Familiarity] 
            2. Discuss the rationale for the legal protection of intellectual property. [Familiarity] 
            3. Describe legislation aimed at digital copyright infringements. [Familiarity] 
            4. Critique legislation aimed at digital copyright infringements. [Assessment] 
            5. Identify contemporary examples of intangible digital intellectual property. [Familiarity] 
            6. Justify uses of copyrighted materials. [Assessment] 
            7. Evaluate the ethical issues inherent in various plagiarism detection mechanisms. [Assessment] 
            8. Interpret the intent and implementation of software licensing. [Familiarity] 
            9. Discuss the issues involved in securing software patents. [Familiarity] 
            10. Characterize and contrast the concepts of copyright, patenting and trademarks. [Assessment] 
            11. Identify the goals of the open source movement. [Familiarity] 
            12. Identify the global nature of software piracy. [Familiarity] 
            SP / Economies of Computing
              Learning Outcomes
                SP / Professional Communication

                Professional communication conveys technical information to various audiences who may have very different goals and needs for that information. Effective professional communication of technical information is rarely an inherited gift, but rather needs to be taught in context throughout the undergraduate curriculum. See cross-referencing with Human-Computer Interaction (HCI) and Software Engineering (SE) Knowledge Areas.

                1. Reading, understanding and summarizing technical material, including source code and documentation ★★
                2. Writing effective technical documentation and materials ★★
                3. Dynamics of oral, written, and electronic team and group communication (cross-reference HCI/Collaboration and Communication/group communication; SE/Project Management/team participation) ★★
                4. Communicating professionally with stakeholders ★★
                5. Utilizing collaboration tools (cross-reference HCI/Collaboration and Communication/online communities; IS/Agents/collaborative agents) ★★
                6. Dealing with cross-cultural environments (cross-reference HCI/User-Centered Design and Testing/crosscultural evaluation) 
                7. Tradeoffs of competing risks in software projects, such as technology, structure/process, quality, people, market and financial (cross-reference SE/Software Project Management/Risk) 
                Learning Outcomes
                1. Write clear, concise, and accurate technical documents following well-defined standards for format and for including appropriate tables, figures, and references. [Usage] ★★
                2. Evaluate written technical documentation to detect problems of various kinds. [Assessment] ★★
                3. Develop and deliver a good quality formal presentation. [Assessment] ★★
                4. Plan interactions (e.g. virtual, face-to-face, shared documents) with others in which they are able to get their point across, and are also able to listen carefully and appreciate the points of others, even when they disagree, and are able to convey to others what they have heard. [Usage] ★★
                5. Describe the strengths and weaknesses of various forms of communication (e.g. virtual, face-to-face, shared documents). [Familiarity] ★★
                6. Examine appropriate measures used to communicate with stakeholders involved in a project. [Usage] ★★
                7. Compare and contrast various collaboration tools. [Assessment] ★★
                8. Discuss ways to influence performance and results in cross-cultural teams. [Familiarity] 
                9. Examine the tradeoffs and common sources of risk in software projects regarding technology, structure/process, quality, people, market and financial. [Usage] 
                10. Evaluate personal strengths and weaknesses to work remotely as part of a multinational team. [Assessment] 
                SP / Social Context

                Computers and the Internet, perhaps more than any other technologies, have transformed society over the past 75 years, with dramatic increases in human productivity; an explosion of options for news, entertainment, and communication; and fundamental breakthroughs in almost every branch of science and engineering. Social Context provides the foundation for all other SP knowledge units, especially Professional Ethics. Also see cross-referencing with Human-Computer Interaction (HCI) and Networking and Communication (NC) Knowledge Areas.

                1. Social implications of computing in a networked world (cross-reference HCI/Foundations/social models; IAS/Fundamental Concepts/social issues) ★★
                2. Impact of social media on individualism, collectivism and culture. ★★
                3. Growth and control of the Internet (cross-reference NC/Introduction/organization of the Internet) ★
                4. Often referred to as the digital divide, differences in access to digital technology resources and its resulting ramifications for gender, class, ethnicity, geography, and/or underdeveloped countries. ★
                5. Accessibility issues, including legal requirements ★
                6. Context-aware computing (cross-reference HCI/New Interactive Technologies)/ ubiquitous and context-aware) ★
                Learning Outcomes
                1. Describe positive and negative ways in which computer technology (networks, mobile computing, cloud computing) alters modes of social interaction at the personal level. [Familiarity] ★★
                2. Identify developers’ assumptions and values embedded in hardware and software design, especially as they pertain to usability for diverse populations including under-represented populations and the disabled. [Familiarity] ★★
                3. Interpret the social context of a given design and its implementation. [Familiarity] ★★
                4. Evaluate the efficacy of a given design and implementation using empirical data. [Assessment] ★★
                5. Summarize the implications of social media on individualism versus collectivism and culture. [Usage] ★★
                6. Discuss how Internet access serves as a liberating force for people living under oppressive forms of government; explain how limits on Internet access are used as tools of political and social repression. [Familiarity] ★
                7. Analyze the pros and cons of reliance on computing in the implementation of democracy (e.g. delivery of social services, electronic voting). [Assessment] ★
                8. Describe the impact of the under-representation of diverse populations in the computing profession (e.g., industry culture, product diversity). [Familiarity] ★
                9. Explain the implications of context awareness in ubiquitous computing systems. [Familiarity] ★
                SP / Professional Ethics

                Computer ethics is a branch of practical philosophy that deals with how computing professionals should make decisions regarding professional and social conduct. There are three primary influences: 1) an individual’s own personal code; 2) any informal code of ethical behavior existing in the work place; and 3) exposure to formal codes of ethics. See cross-referencing with the Information Assurance and Security (IAS) Knowledge Area.

                1. Community values and the laws by which we live ★★
                2. The nature of professionalism including care, attention and discipline, fiduciary responsibility, and mentoring ★★
                3. Keeping up-to-date as a computing professional in terms of familiarity, tools, skills, legal and professional framework as well as the ability to self-assess and progress in the computing field ★★
                4. Professional certification, codes of ethics, conduct, and practice, such as the ACM/IEEE-CS, SE, AITP, IFIP and international societies (cross-reference IAS/Fundamental Concepts/ethical issues) ★★
                5. Accountability, responsibility and liability (e.g. software correctness, reliability and safety, as well as ethical confidentiality of cybersecurity professionals) ★★
                6. The role of the computing professional in public policy ★
                7. Maintaining awareness of consequences ★
                8. Ethical dissent and whistle-blowing ★
                9. The relationship between regional culture and ethical dilemmas ★
                10. Dealing with harassment and discrimination ★
                11. Forms of professional credentialing ★
                12. Acceptable use policies for computing in the workplace ★
                13. Ergonomics and healthy computing environments ★
                14. Time to market and cost considerations versus quality professional standards ★
                Learning Outcomes
                1. Identify ethical issues that arise in software development and determine how to address them technically and ethically. [Familiarity] ★★
                2. Explain the ethical responsibility of ensuring software correctness, reliability and safety. [Familiarity] ★★
                3. Describe the mechanisms that typically exist for a professional to keep up-to-date. [Familiarity] ★★
                4. Describe the strengths and weaknesses of relevant professional codes as expressions of professionalism and guides to decision-making. [Familiarity] ★★
                5. Analyze a global computing issue, observing the role of professionals and government officials in managing this problem. [Assessment] ★★
                6. Evaluate the professional codes of ethics from the ACM, the IEEE Computer Society, and other organizations. [Assessment] ★★
                7. Describe ways in which professionals may contribute to public policy. [Familiarity] ★
                8. Describe the consequences of inappropriate professional behavior. [Familiarity] ★
                9. Identify progressive stages in a whistle-blowing incident. [Familiarity] ★
                10. Identify examples of how regional culture interplays with ethical dilemmas. [Familiarity] ★
                11. Investigate forms of harassment and discrimination and avenues of assistance. [Usage] ★
                12. Examine various forms of professional credentialing. [Usage] ★
                13. Explain the relationship between ergonomics in computing environments and people’s health. [Familiarity] ★
                14. Develop a computer usage/acceptable use policy with enforcement measures. [Assessment] ★
                15. Describe issues associated with industries’ push to focus on time to market versus enforcing quality professional standards. [Familiarity] ★
                SP / Privacy and Civil Liberties

                Electronic information sharing highlights the need to balance privacy protections with information access. The ease of digital access to many types of data makes privacy rights and civil liberties more complex, differing among the variety of cultures worldwide. See crossreferencing with the Human-Computer Interaction (HCI), Information Assurance and Security (IAS), Information Management (IM), and Intelligent Systems (IS) Knowledge Areas.

                1. Philosophical foundations of privacy rights (cross-reference IS/Fundamental Issues/philosophical issues) 
                2. Legal foundations of privacy protection 
                3. Privacy implications of widespread data collection for transactional databases, data warehouses, surveillance systems, and cloud computing (cross-reference IM/Database Systems/data independence; IM/Data Mining/data cleaning) 
                4. Ramifications of differential privacy 
                5. Technology-based solutions for privacy protection (cross-reference IAS/Threats and Attacks/attacks on privacy and anonymity) 
                6. Privacy legislation in areas of practice 
                7. Civil liberties and cultural differences 
                8. Freedom of expression and its limitations 
                Learning Outcomes
                1. Discuss the philosophical basis for the legal protection of personal privacy. [Familiarity] 
                2. Evaluate solutions to privacy threats in transactional databases and data warehouses. [Assessment] 
                3. Describe the role of data collection in the implementation of pervasive surveillance systems (e.g., RFID, face recognition, toll collection, mobile computing). [Familiarity] 
                4. Describe the ramifications of differential privacy. [Familiarity] 
                5. Investigate the impact of technological solutions to privacy problems. [Usage] 
                6. Critique the intent, potential value and implementation of various forms of privacy legislation. [Assessment] 
                7. Identify strategies to enable appropriate freedom of expression. [Familiarity] 
                SP / Sustainability

                Sustainability is characterized by the United Nations as ‘development that meets the needs of the present without compromising the ability of future generations to meet their own needs.’ Sustainability was first introduced in the CS2008 curricular guidelines. Topics in this emerging area can be naturally integrated into other familiarity areas and units, such as human-computer interaction and software evolution. See cross-referencing with the Human-Computer Interaction (HCI) and Software Engineering (SE) Knowledge Areas.

                1. Being a sustainable practitioner by taking into consideration cultural and environmental impacts of implementation decisions (e.g. organizational policies, economic viability, and resource consumption). 
                2. Explore global social and environmental impacts of computer use and disposal (e-waste) 
                3. Environmental impacts of design choices in specific areas such as algorithms, operating systems, networks, databases, or human-computer interaction (cross-reference SE/Software Evaluation/software evolution; HCI/Design-Oriented HCI/sustainability) 
                4. Guidelines for sustainable design standards 
                5. Systemic effects of complex computer-mediated phenomena (e.g. telecommuting or web shopping) 
                6. Pervasive computing; information processing integrated into everyday objects and activities, such as smart energy systems, social networking and feedback systems to promote sustainable behavior, transportation, environmental monitoring, citizen science and activism. 
                7. Research on applications of computing to environmental issues, such as energy, pollution, resource usage, recycling and reuse, food management, farming and others. 
                8. The interdependence of the sustainability of software systems with social systems, including the knowledge and skills of its users, organizational processes and policies, and its societal context (e.g., market forces, government policies). 
                Learning Outcomes
                1. Identify ways to be a sustainable practitioner. [Familiarity] 
                2. Illustrate global social and environmental impacts of computer use and disposal (e-waste). [Usage] 
                3. Describe the environmental impacts of design choices within the field of computing that relate to algorithm design, operating system design, networking design, database design, etc. [Familiarity] 
                4. Investigate the social and environmental impacts of new system designs through projects. [Usage] 
                5. Identify guidelines for sustainable IT design or deployment. [Familiarity] 
                6. List the sustainable effects of telecommuting or web shopping. [Familiarity] 
                7. Investigate pervasive computing in areas such as smart energy systems, social networking, transportation, agriculture, supply-chain systems, environmental monitoring and citizen activism. [Usage] 
                8. Develop applications of computing and assess through research areas pertaining to environmental issues (e.g. energy, pollution, resource usage, recycling and reuse, food management, farming). [Assessment]