C.2.2: Computer Science Draft Competencies
AL-Algorithms and Complexity
A. Present to a group of peers the data characteristics of conditions or assumptions that can lead to different behaviors of specific algorithms and from the analysis, illustrate empirical studies to validate hypotheses about runtime measures.
B. Illustrate informally the time and space complexity of algorithms and use big-O notation formally to show asymptotic upper bounds and expected case bounds on time and space complexity, respectively.
C. Use recurrence relations to determine the time complexity of recursively defined algorithms by solve elementary recurrence relations and present the results to a group of scholars.
D. Determine an appropriate algorithmic approach to an industry problem and use appropriate techniques (e.g., greedy approach, divide-and-conquer algorithm, recursive backtracking, dynamic programming, or heuristic approach) that considers the tradeoffs between the brute force to solve a problem.
E. Implement basic numerical algorithm methods (e.g., search algorithms, common quadratic and O(N log N) sorting algorithms, fundamental graph algorithms, string-matching algorithm) to solve an industry problem and select the appreciate algorithm for a particular context.
F. Design a deterministic finite state machine for a local engineering firm that accepts a specified language and generates a regular expression to represent the language.
AR-Architecture and Organization
A. Use CAD tools for capture, synthesis, and simulation to evaluate simple building blocks of a simple computer design for a local engineering company.
B. Evaluate the timing diagram behavior of a simple processor-implemented at the logic circuit level and develop a report expressing the findings.
C. Write a simple program at the assembly/machine level for string processing and manipulation and for converting numerical data into hexadecimal form.
D. Implement a fundamental high-level construct in both machine and assembly languages and present the results to a group of peers.
E. Calculate the average memory access time under a variety of cache and memory configurations and develop a short report of the findings.
CN-Computational Science
A. Create a simple, formal mathematical model of a real-world situation and use that model in a simulation for a local technology company.
DS-Discrete Structures
A. Present to a peer group some practical examples of an appropriate set, function, or relation model, and interpret the associated operations and terminology in context.
B. Use symbolic propositional and predicate logic to model a real-life industry application by applying formal methods (e.g., calculating the validity of formulae and computing normal forms to the symbolic logic).
C. Apply rules of inference to construct proofs and present results to a group of professionals, appropriate proofs, or logical reasoning to solve a strategic problem.
D. Map real-world applications to appropriate counting formalisms and apply basic counting theories (e.g., counting arguments, the pigeonhole principle, modular arithmetic as well as compute permutations and combinations of a set) to solve an industry problem.
E. Analyze an industry problem to determine underlying recurrence relations and present the solution to professionals by using a variety of basic recurrence relations.
F. Model a real-world problem using appropriate graphing strategies (e.g., trees, traversal methods for graphs and trees, spanning trees of a graph) and determine whether two graph approaches are isomorphic.
G. Calculate different probabilities of dependent or independent events and expectations of random variables to solve a problem and present to a group of peers the ways to compute the variance for a given probability distribution.
GV-Graphics and Visualization
A. Design and develop a user interface using a standard API and that incorporates visual and audio techniques used for a local organization
HCI-Human-Computer Interaction
A. Design an interactive application, applying a user-centered design cycle with related tools and techniques (modes, navigation, visual design), to optimize usability and user experience within a corporate environment.
B. Analyze and evaluate a user interface that considers the context of use, stakeholder needs, state-of-the-art response interaction times, design modalities taking into consideration universal access, inclusiveness, assistive technologies, and culture-sensitive design.
C. Design and develop an interactive application for a local charity, applying a user-centered design cycle with related vocabulary, tools, and techniques that optimize usability and user experience.
D. Create and conduct a simple usability test to analyze and evaluate a user interface that considers the context of use taking into consideration universal access and culturally sensitive design.
E. Create a simple application, together with help and documentation, that supports a graphical user interface for an enterprise and conduct a quantitative evaluation and report the results.
IAS-Information Assurance and Security
A. Write the correct input validation code for a cybersecurity company after classifying common input validation errors.
B. Demonstrate to a group of security professionals some ways to prevent a race condition from occurring and ways to handle exceptions.
IM-Information Management
A. Contrast information with data and knowledge and describe to a group of professionals the advantages and disadvantages of centralized data control.
B. Demonstrate to a group of peers a declarative query language to elicit information from a database.
C. Contrast appropriate data models, including internal structures, for different types of data, and present an application to a group of professionals for the use of modeling concepts and notation of the relational data model.
IS-Intelligent Systems
A. Determine the characteristics of a given problem that an intelligent system must solve and present the results to a project team.
B. Formulate an industry problem specified in a natural language (e.g., English) as a constraint satisfaction problem and implement it using an appropriate technique (e.g., chronological backtracking algorithm or stochastic local search).
C. Implement an appropriate uninformed or informed search algorithm for an industry problem by characterizing time and space complexities of informed algorithm or designing the necessary heuristic evaluation function for an uninformed search algorithm to guarantee an optimal solution, respectively.
D. Translate a natural language (e.g., English) sentence for a corporate query system into a predicate logic statement by converting a logic statement into clause form and applying resolution to a set of logic statements to answer a query.
E. Make a probabilistic inference in a real-world industry problem using Bayes’ theorem to determine the probability of a hypothesis given evidence.
NC-Networking and Communication
A. Design and develop for a corporate customer a simple client-server socket-based application.
B. Design and implement a simple reliable protocol for an industry network by considering factors that affect the network’s performance.
C. Contrast fixed and dynamic allocation techniques as well as current approaches to congestion and present the results to company executives.
OS-Operating Systems
A. Apply knowledge of computing theory and mathematics to solve problems and present comprehensively the results and methods of the solution for either a professional or non-professional audience.
B. Implement software solutions within system constraints of a target system considering its abilities and constraints, and document and explain the implementation to both technical and non-technical audiences
C. Predict the behavior of systems under random events using knowledge of probability and expectation and inform users of its potential behavior.
D. Assess the security of a system using the knowledge of confidentiality, availability, and integrity with an understanding of risks, threats, vulnerabilities, and attack vectors, and relate its societal and ethical impact to the system's constituents.
PBD-Platform-based Development
A. Design for a client a responsive web application utilizing a web framework and presentation technologies in support of a diverse online community.
B. Develop a mobile app for a company that is usable, efficient, and secure on more than one device.
C. Simulate for a company an industry platform.
D. Develop and implement programming tasks via platform-specific APIs and present the results to a group of peers.
E. Present the analysis of a mobile industrial system and illustrate correct security vulnerabilities.
PD-Parallel and Distributed Computing
A. Design a scalable parallel algorithm for a computer firm by applying task-based decomposition or data-parallel decomposition.
B. Write a program for a client that correctly terminates when all concurrent tasks terminate by considering actors and/or reactive processes, deadlocks, and properly synchronized queues.
C. Write a test program for a company that reveals a concurrent programming error (e.g., missing an update when two activities both try to increment a variable).
D. Present computational results of the work and span in a program by identifying independent tasks that may be parallelized and determining the critical path for a parallel execution diagram.
E. Implement a parallel divide-and-conquer (and/or graph algorithm) for a client by mapping and reducing operations for the real industry problem and empirically measure its performance relative to its sequential analog.
PL-Programming Languages
A. Present the design and implementation of a class considering object-oriented encapsulation mechanisms (e.g., class hierarchies, interfaces, and private members).
B. Produce a brief report on the implementation of a basic algorithm considering control flow in a program using dynamic dispatch that avoids assigning to a mutable state (or considering reference equality) for two different languages.
C. Present the implementation of a useful function that takes and returns other functions considering variables and lexical scope in a program as well as functional encapsulation mechanisms.
D. Use iterators and other operations on aggregates (including operations that take functions as arguments) in two programming languages and present to a group of professionals some ways of selecting the most natural idioms for each language.
E. Contrast and present to peers (1) the procedural/functional approach (defining a function for each operation with the function body providing a case for each data variant) and (2) the object-oriented approach (defining a class for each data variant with the class definition providing a method for each operation).
F. Write event handlers for a web developer for use in reactive systems such as GUIs.
G. Demonstrate program pieces (such as functions, classes, methods) that use generic or compound types, including for collections to write programs.
H. Write a program for a client to process a representation of code that illustrates the incorporation of an interpreter, an expression optimizer, and a documentation generator.
I. Use type-error messages, memory leaks, and dangling-pointer to debug a program for an engineering firm.
SDF-Software Development Fundamentals
A. Create an appropriate algorithm to illustrate iterative, recursive functions, as well as divide-and-conquer techniques and use a programming language to implement, test, and debug the algorithm for solving a simple industry problem.
B. Decompose a program for a client that identifies the data components and behaviors of multiple abstract data types and implementing a coherent abstract data type, with loose coupling between components and behaviors.
C. Design, implement, test, and debug an industry program that uses fundamental programming constructs including basic computation, simple and file I/O, standard conditional and iterative structures, the definition of functions, and parameter passing.
D. Present the costs and benefits of dynamic and static data structure implementations, choosing the appropriate data structure for modeling a given engineering problem.
E. Apply consistent documentation and program style standards for a software engineering company that contribute to the readability and maintainability of software, conducting a personal and small-team code review on program component using a provided checklist.
F. Demonstrate common coding errors, constructing and debugging programs using the standard libraries available with a chosen programming language.
G. Refactor an industry program by identifying opportunities to apply procedural abstraction.
SE-Software Engineering
A. Conduct a review of a set of software requirements for a local project, distinguishing between functional and non-functional requirements, and evaluate the extent to which the set exhibits the characteristics of good requirements.
B. Present to a client the design of a simple software system using a modeling notation (such as UML), including an explanation of how the design incorporated system design principles.
SF-Systems Fundamentals
A. Design a simple sequential problem and a parallel version of the same problem using fundamental building blocks of logic design and use appropriate tools to evaluate the design for a commercial organization and evaluate both problem versions.
B. Develop a program for a local organization that incorporated error detection and recovery that incorporates appropriate tools for program tracing and debugging.
C. Design a simple parallel program for a corporation that manages shared resources through synchronization primitives and use tools to evaluate program performance.
D. Design and conduct a performance-oriented, pattern recognition experiment incorporating state machine descriptors and simple schedule algorithms for exploiting redundant information and data correction that is usable for a local engineering company and use appropriate tools to measure program performance.
E. Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in terms of capacity, miss/hit rate, and access time for a local engineering company.
F. Measure the performance of two application instances running on separate virtual machines at a local engineering company and determine the effect of performance isolation.
SP-Social Issues and Professional Practice
A. Perform a system analysis for a local organization and present the results to them in a non-technical way.
B. Integrate interdisciplinary knowledge to develop a program for a local organization.
C. Document industry trends, innovations, and new technologies and produce a report to influence a targeted workspace.
D. Present to a group of professionals an innovative computer system by using audience-specific language and examples to illustrate the group's needs.
E. Produce a document that is helpful to others that addresses the effect of societal change due to technology.
F. Adopt processes to track customer requests, needs, and satisfaction.
G. Compare different error detection and correction methods for their data overhead, implementation complexity, and relative execution time for encoding, detecting, and correcting errors and ensure that any error does not affect humans adversely.
Number of Draft Competencies = 84
Task Force Members on the CS Subgroup
Bruce McMillin (Leader)
John Impagliazzo
Richard LeBlanc
Ariel Sabiguero Yawelak
Ming Zhang