1 of 38

Computing Disciplines and Knowledge Areas

Sami Rollins

2 of 38

Goals for today

  • Explore how computer science relates to other computing disciplines
  • Discuss knowledge areas in computing curricula

https://www.acm.org/education/curricula-recommendations​

3 of 38

Check-in around the room

  • How are things going?

4 of 38

ACM

  • Association for Computing Machinery
  • Primary professional organization for computer scientists
  • ACM activities
    • Sponsor conferences
    • Publications
    • Recognize technical excellence 
    • Provide networking and learning opportunities
  • Develop curricula recommendations
    • Some departments follow, some loosely follow, some ignore

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

5 of 38

Perspective

  • What topics does an undergraduate computer science student need to master?
    • How do those topics go together into classes?
  • Computing careers is a different question

6 of 38

Related disciplines

  • Your degree will be in Computer Science.
  • What are related degree programs?

7 of 38

How students may perceive degree programs

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

8 of 38

Computer engineering

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

9 of 38

Information systems

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

10 of 38

Information technology

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

11 of 38

Software engineering

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

12 of 38

Computer science

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

13 of 38

Computer science knowledge areas

https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf

14 of 38

Common buckets

  • Theory
  • Systems
  • Applications

15 of 38

Common buckets

  • Programming foundations

  • Theory
  • Systems
  • Applications

  • Areas of focus
    • AI
    • Human-centered computing
    • Computer engineering (robotics)

16 of 38

Software development fundamentals

  • As such, it provides a foundation for other software-oriented knowledge areas, most notably Programming Languages, Algorithms and Complexity, and Software Engineering. 

17 of 38

Algorithms and complexity

  • This knowledge area defines the central concepts and skills required to design, implement, and analyze algorithms for solving problems.
  • An important part of computing is the ability to select algorithms appropriate to particular purposes and to apply them, recognizing the possibility that no suitable algorithm may exist.

18 of 38

Discrete structures

  • Discrete structures include important material from such areas as set theory, logic, graph theory, and probability theory. 

19 of 38

Programming languages

  • Software developers must understand the programming models underlying different languages and make informed design choices in languages supporting multiple complementary approaches.  

20 of 38

Systems fundamentals

  • Computer systems broadly span the subdisciplines of operating systems, parallel and distributed systems, communications networks, and computer architecture. Traditionally, these areas are taught in a non-integrated way through independent courses. However these sub-disciplines increasingly share important common fundamental concepts within their respective cores. These concepts include computational paradigms, parallelism, cross-layer communications, state and state transition, resource allocation and scheduling, and so on. 

21 of 38

Architecture and organization

  • 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.

22 of 38

Networking and communications

  • The Internet and computer networks are now ubiquitous and a growing number of computing activities strongly depend on the correct operation of the underlying network.

23 of 38

Operating systems

  • An operating system defines an abstraction of hardware and manages resource sharing among the computer’s users.

24 of 38

Parallel and distributed computing

  • Both parallel and distributed computing entail the logically simultaneous execution of multiple processes, whose operations have the potential to interleave in complex ways. Parallel and distributed computing builds on foundations in many areas, including an understanding of fundamental systems concepts such as concurrency and parallel execution, consistency in state/memory manipulation, and latency.

25 of 38

Computational science

  •  Computational Science is a field of applied computer science, that is, the application of computer science to solve problems across a range of disciplines
  • An amazing assortment of sub-fields have arisen under the umbrella of Computational Science, including computational biology, computational chemistry, computational mechanics, computational archeology, computational finance, computational sociology and computational forensics.

26 of 38

Graphics and visualization

  • Computer graphics is the term commonly used to describe the computer generation and manipulation of images.
  • Its uses include cartoons, film special effects, video games, medical imaging, engineering, as well as scientific, information, and knowledge visualization.

27 of 38

Human computer interaction

  • Human-computer interaction (HCI) is concerned with designing interactions between human activities and the computational systems that support them, and with constructing interfaces to afford those interactions.  

28 of 38

Information assurance and security

  • Information assurance and security as a domain is the set of controls and processes both technical and policy intended to protect and defend information and information systems by ensuring their confidentiality, integrity, and availability, and by providing for authentication and non-repudiation.

29 of 38

Information management

  • Information Management is primarily concerned with the capture, digitization, representation, organization, transformation, and presentation of information; algorithms for efficient and effective access and updating of stored information; data modeling and abstraction; and physical file storage techniques.

30 of 38

Intelligent systems

  • Artificial intelligence (AI) is the study of solutions for problems that are difficult or impractical to solve with traditional methods.

31 of 38

Platform-based development

  • Platform-based development is concerned with the design and development of software applications that reside on specific software platforms. In contrast to general purpose programming, platform-based development takes into account platform-specific constraints. For instance web programming, multimedia development, mobile computing, app development, and robotics are examples of relevant platforms that provide specific services/APIs/hardware that constrain development. 

32 of 38

Software engineering

  • Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users.
  • It encompasses all phases of the lifecycle of a software system, including requirements elicitation, analysis and specification; design; construction; verification and validation; deployment; and operation and maintenance.

33 of 38

Social issues and professional practice

  • 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.

34 of 38

Common buckets

  • Software Development Fundamentals

  • Theory
    • Algorithms and Complexity
    • Discrete Structures
    • Programming Languages
  • Systems
    • Systems Fundamentals
    • Architecture and Organization
    • Networking and Communications
    • Operating Systems
    • Parallel and Distributed Computing
  • Applications
    • Computational Science
    • Graphics and Visualization
    • Human-Computer Interaction
    • Information Assurance and Security
    • Information Management
    • Intelligent Systems
    • Platform-based Development

  • Software Engineering
  • Social Issues and Professional Practice

35 of 38

Exercise

  • Choose a college or university
    • Be creative! Let's try to get a range---small, large, public, private
  • Find their Computer Science major requirements
    • Do the requirements generally match the categories we've discussed?
    • Do the requirements look theory-heavy, systems-heavy?
  • Choose one course 
    • From the (admittedly short) course description, which knowledge areas do you think it covers?

36 of 38

Mapping to careers

https://www.acm.org/binaries/content/assets/education/curricula-recommendations/cc2005-march06final.pdf

37 of 38

Careers for computer scientists

  • Software engineering is most common
  • What are some other roles?

38 of 38

Exercise

  • Use your favorite job search site to find two job descriptions that (1) require a CS degree and (2) are not just software engineering positions
  • Which knowledge areas do you think would be relevant for the positions?