AL |
Basic Analysis |
1 |
Familiarity |
1 |
Explain what is meant by “best”, “expected”, and “worst” case behavior of an algorithm. |
AL |
Basic Analysis |
1 |
Assessment |
2 |
In the context of specific algorithms, identify the characteristics of data and/or other conditions or assumptions that lead to different behaviors. |
AL |
Basic Analysis |
1 |
Usage |
3 |
Determine informally the time and space complexity of simple algorithms. |
AL |
Basic Analysis |
1 |
Familiarity |
4 |
State the formal definition of big O. |
AL |
Basic Analysis |
1 |
Familiarity |
5 |
List and contrast standard complexity classes. |
AL |
Basic Analysis |
1 |
Assessment |
6 |
Perform empirical studies to validate hypotheses about runtime stemming from mathematical analysis Run algorithms on input of various sizes and compare performance. |
AL |
Basic Analysis |
1 |
Familiarity |
7 |
Give examples that illustrate time-space trade-offs of algorithms. |
AL |
Basic Analysis |
2 |
Usage |
8 |
Use big O notation formally to give asymptotic upper bounds on time and space complexity of algorithms. |
AL |
Basic Analysis |
2 |
Usage |
9 |
Use big O notation formally to give expected case bounds on time complexity of algorithms. |
AL |
Basic Analysis |
2 |
Familiarity |
10 |
Explain the use of big omega, big theta, and little o notation to describe the amount of work done by an algorithm. |
AL |
Basic Analysis |
2 |
Usage |
11 |
Use recurrence relations to determine the time complexity of recursively defined algorithms. |
AL |
Basic Analysis |
2 |
Usage |
12 |
Solve elementary recurrence relations, eg, using some form of a Master Theorem. |
AL |
Algorithmic Strategies |
1 |
Familiarity |
1 |
For each of the strategies (brute-force, greedy, divide-and-conquer, recursive backtracking, and dynamic programming), identify a practical example to which it would apply. |
AL |
Algorithmic Strategies |
1 |
Assessment |
2 |
Use a greedy approach to solve an appropriate problem and determine if the greedy rule chosen leads to an optimal solution. |
AL |
Algorithmic Strategies |
1 |
Usage |
3 |
Use a divide-and-conquer algorithm to solve an appropriate problem. |
AL |
Algorithmic Strategies |
1 |
Usage |
4 |
Use recursive backtracking to solve a problem such as navigating a maze. |
AL |
Algorithmic Strategies |
1 |
Usage |
5 |
Use dynamic programming to solve an appropriate problem. |
AL |
Algorithmic Strategies |
1 |
Assessment |
6 |
Determine an appropriate algorithmic approach to a problem. |
AL |
Algorithmic Strategies |
2 |
Familiarity |
7 |
Describe various heuristic problem-solving methods. |
AL |
Algorithmic Strategies |
2 |
Usage |
8 |
Use a heuristic approach to solve an appropriate problem. |
AL |
Algorithmic Strategies |
2 |
Assessment |
9 |
Describe the trade-offs between brute force and heuristic strategies. |
AL |
Algorithmic Strategies |
2 |
Familiarity |
10 |
Describe how a branch-and-bound approach may be used to improve the performance of a heuristic method. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Usage |
1 |
Implement basic numerical algorithms. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Assessment |
2 |
Implement simple search algorithms and explain the differences in their time complexities. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Usage |
3 |
Be able to implement common quadratic and O(N log N) sorting algorithms. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Familiarity |
4 |
Describe the implementation of hash tables, including collision avoidance and resolution. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Familiarity |
5 |
Discuss the runtime and memory efficiency of principal algorithms for sorting, searching, and hashing. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Familiarity |
6 |
Discuss factors other than computational efficiency that influence the choice of algorithms, such as programming time, maintainability, and the use of application-specific patterns in the input data. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Familiarity |
7 |
Explain how tree balance affects the efficiency of various binary search tree operations. |
AL |
Fundamental Data Structures and Algorithms |
1 |
Usage |
8 |
Solve problems using fundamental graph algorithms, including depth-first and breadth-first search. |
AL |
Fundamental Data Structures and Algorithms |
2 |
Assessment |
9 |
Demonstrate the ability to evaluate algorithms, to select from a range of possible options, to provide justification for that selection, and to implement the algorithm in a particular context. |
AL |
Fundamental Data Structures and Algorithms |
2 |
Familiarity |
10 |
Describe the heap property and the use of heaps as an implementation of priority queues. |
AL |
Fundamental Data Structures and Algorithms |
2 |
Usage |
11 |
Solve problems using graph algorithms, including single-source and all-pairs shortest paths, and at least one minimum spanning tree algorithm. |
AL |
Fundamental Data Structures and Algorithms |
2 |
Usage |
12 |
Trace and/or implement a string-matching algorithm. |
AL |
Basic Automata Computability and Complexity |
1 |
Familiarity |
1 |
Discuss the concept of finite state machines. |
AL |
Basic Automata Computability and Complexity |
1 |
Usage |
2 |
Design a deterministic finite state machine to accept a specified language. |
AL |
Basic Automata Computability and Complexity |
1 |
Usage |
3 |
Generate a regular expression to represent a specified language. |
AL |
Basic Automata Computability and Complexity |
1 |
Familiarity |
4 |
Explain why the halting problem has no algorithmic solution. |
AL |
Basic Automata Computability and Complexity |
2 |
Usage |
5 |
Design a context-free grammar to represent a specified language. |
AL |
Basic Automata Computability and Complexity |
2 |
Familiarity |
6 |
Define the classes P and NP. |
AL |
Basic Automata Computability and Complexity |
2 |
Familiarity |
7 |
Explain the significance of NP-completeness. |
AL |
Advanced Computational Complexity |
3 |
Familiarity |
1 |
Define the classes P and NP (Also appears in AL/Basic Automata, Computability, and Complexity). |
AL |
Advanced Computational Complexity |
3 |
Familiarity |
2 |
Define the P-space class and its relation to the EXP class. |
AL |
Advanced Computational Complexity |
3 |
Familiarity |
3 |
Explain the significance of NP-completeness (Also appears in AL/Basic Automata, Computability, and Complexity). |
AL |
Advanced Computational Complexity |
3 |
Familiarity |
4 |
Provide examples of classic NP-complete problems. |
AL |
Advanced Computational Complexity |
3 |
Usage |
5 |
Prove that a problem is NP-complete by reducing a classic known NP-complete problem to it. |
AL |
Advanced Automata Theory and Computability |
3 |
Assessment |
1 |
Determine a language’s place in the Chomsky hierarchy (regular, context-free, recursively enumerable). |
AL |
Advanced Automata Theory and Computability |
3 |
Usage |
2 |
Convert among equivalently powerful notations for a language, including among DFAs, NFAs, and regular expressions, and between PDAs and CFGs. |
AL |
Advanced Automata Theory and Computability |
3 |
Familiarity |
3 |
Explain the Church-Turing thesis and its significance. |
AL |
Advanced Automata Theory and Computability |
3 |
Familiarity |
4 |
Explain Rice’s Theorem and its significance. |
AL |
Advanced Automata Theory and Computability |
3 |
Familiarity |
5 |
Provide examples of uncomputable functions. |
AL |
Advanced Automata Theory and Computability |
3 |
Usage |
6 |
Prove that a problem is uncomputable by reducing a classic known uncomputable problem to it. |
AL |
Advanced Data Structures Algorithms and Analysis |
3 |
Assessment |
1 |
Understand the mapping of real-world problems to algorithmic solutions (eg, as graph problems, linear programs, etc). |
AL |
Advanced Data Structures Algorithms and Analysis |
3 |
Assessment |
2 |
Select and apply advanced algorithmic techniques (eg, randomization, approximation) to solve real problems. |
AL |
Advanced Data Structures Algorithms and Analysis |
3 |
Assessment |
3 |
Select and apply advanced analysis techniques (eg, amortized, probabilistic, etc) to algorithms. |
AR |
Digital logic and digital systems |
2 |
Familiarity |
1 |
Describe the progression of computer technology components from vacuum tubes to VLSI, from mainframe computer architectures to the organization of warehouse-scale computers. |
AR |
Digital logic and digital systems |
2 |
Familiarity |
2 |
Comprehend the trend of modern computer architectures towards multi-core and that parallelism is inherent in all hardware systems. |
AR |
Digital logic and digital systems |
2 |
Familiarity |
3 |
Explain the implications of the “power wall” in terms of further processor performance improvements and the drive towards harnessing parallelism. |
AR |
Digital logic and digital systems |
2 |
Familiarity |
4 |
Articulate that there are many equivalent representations of computer functionality, including logical expressions and gates, and be able to use mathematical expressions to describe the functions of simple combinational and sequential circuits. |
AR |
Digital logic and digital systems |
2 |
Usage |
5 |
Design the basic building blocks of a computer: arithmetic-logic unit (gate-level), registers (gate-level), central processing unit (register transfer-level), memory (register transfer-level). |
AR |
Digital logic and digital systems |
2 |
Usage |
6 |
Use CAD tools for capture, synthesis, and simulation to evaluate simple building blocks (eg, arithmetic-logic unit, registers, movement between registers) of a simple computer design. |
AR |
Digital logic and digital systems |
2 |
Assessment |
7 |
Evaluate the functional and timing diagram behavior of a simple processor implemented at the logic circuit level. |
AR |
Machine level representation of data |
2 |
Familiarity |
1 |
Explain why everything is data, including instructions, in computers. |
AR |
Machine level representation of data |
2 |
Familiarity |
2 |
Explain the reasons for using alternative formats to represent numerical data. |
AR |
Machine level representation of data |
2 |
Familiarity |
3 |
Describe how negative integers are stored in sign-magnitude and twos-complement representations. |
AR |
Machine level representation of data |
2 |
Familiarity |
4 |
Explain how fixed-length number representations affect accuracy and precision. |
AR |
Machine level representation of data |
2 |
Familiarity |
5 |
Describe the internal representation of non-numeric data, such as characters, strings, records, and arrays. |
AR |
Machine level representation of data |
2 |
Usage |
6 |
Convert numerical data from one format to another. |
AR |
Machine level representation of data |
2 |
Usage |
7 |
Write simple programs at the assembly/machine level for string processing and manipulation. |
AR |
Assembly level machine organization |
2 |
Familiarity |
1 |
Explain the organization of the classical von Neumann machine and its major functional units. |
AR |
Assembly level machine organization |
2 |
Familiarity |
2 |
Describe how an instruction is executed in a classical von Neumann machine, with extensions for threads, multiprocessor synchronization, and SIMD execution. |
AR |
Assembly level machine organization |
2 |
Familiarity |
3 |
Describe instruction level parallelism and hazards, and how they are managed in typical processor pipelines. |
AR |
Assembly level machine organization |
2 |
Familiarity |
4 |
Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler. |
AR |
Assembly level machine organization |
2 |
Familiarity |
5 |
Demonstrate how to map between high-level language patterns into assembly/machine language notations. |
AR |
Assembly level machine organization |
2 |
Familiarity |
6 |
Explain different instruction formats, such as addresses per instruction and variable length vs fixed length formats. |
AR |
Assembly level machine organization |
2 |
Familiarity |
7 |
Explain how subroutine calls are handled at the assembly level. |
AR |
Assembly level machine organization |
2 |
Familiarity |
8 |
Explain the basic concepts of interrupts and I/O operations. |
AR |
Assembly level machine organization |
2 |
Usage |
9 |
Write simple assembly language program segments. |
AR |
Assembly level machine organization |
2 |
Usage |
10 |
Show how fundamental high-level programming constructs are implemented at the machine-language level. |
AR |
Memory system organization and architecture |
2 |
Familiarity |
1 |
Identify the main types of memory technology (eg, SRAM, DRAM, Flash, magnetic disk) and their relative cost and performance. |
AR |
Memory system organization and architecture |
2 |
Familiarity |
2 |
Explain the effect of memory latency on running time. |
AR |
Memory system organization and architecture |
2 |
Familiarity |
3 |
Describe how the use of memory hierarchy (cache, virtual memory) is used to reduce the effective memory latency. |
AR |
Memory system organization and architecture |
2 |
Familiarity |
4 |
Describe the principles of memory management. |
AR |
Memory system organization and architecture |
2 |
Familiarity |
5 |
Explain the workings of a system with virtual memory management. |
AR |
Memory system organization and architecture |
2 |
Usage |
6 |
Compute Average Memory Access Time under a variety of cache and memory configurations and mixes of instruction and data references. |
AR |
Interfacing and communication |
2 |
Familiarity |
1 |
Explain how interrupts are used to implement I/O control and data transfers. |
AR |
Interfacing and communication |
2 |
Familiarity |
2 |
Identify various types of buses in a computer system. |
AR |
Interfacing and communication |
2 |
Familiarity |
3 |
Describe data access from a magnetic disk drive. |
AR |
Interfacing and communication |
2 |
Familiarity |
4 |
Compare common network organizations, such as ethernet/bus, ring, switched vs routed. |
AR |
Interfacing and communication |
2 |
Familiarity |
5 |
Identify the cross-layer interfaces needed for multimedia access and presentation, from image fetch from remote storage, through transport over a communications network, to staging into local memory, and final presentation to a graphical display. |
AR |
Interfacing and communication |
2 |
Familiarity |
6 |
Describe the advantages and limitations of RAID architectures. |
AR |
Functional organization |
3 |
Familiarity |
1 |
Compare alternative implementation of datapaths. |
AR |
Functional organization |
3 |
Familiarity |
2 |
Discuss the concept of control points and the generation of control signals using hardwired or microprogrammed implementations. |
AR |
Functional organization |
3 |
Familiarity |
3 |
Explain basic instruction level parallelism using pipelining and the major hazards that may occur. |
AR |
Functional organization |
3 |
Usage |
4 |
Design and implement a complete processor, including datapath and control. |
AR |
Functional organization |
3 |
Assessment |
5 |
Determine, for a given processor and memory system implementation, the average cycles per instruction. |
AR |
Multiprocessing and alternative architectures |
3 |
Familiarity |
1 |
Discuss the concept of parallel processing beyond the classical von Neumann model. |
AR |
Multiprocessing and alternative architectures |
3 |
Familiarity |
2 |
Describe alternative parallel architectures such as SIMD and MIMD. |
AR |
Multiprocessing and alternative architectures |
3 |
Familiarity |
3 |
Explain the concept of interconnection networks and characterize different approaches. |
AR |
Multiprocessing and alternative architectures |
3 |
Familiarity |
4 |
Discuss the special concerns that multiprocessing systems present with respect to memory management and describe how these are addressed. |
AR |
Multiprocessing and alternative architectures |
3 |
Familiarity |
5 |
Describe the differences between memory backplane, processor memory interconnect, and remote memory via networks, their implications for access latency and impact on program performance. |
AR |
Performance enhancements |
3 |
Familiarity |
1 |
Describe superscalar architectures and their advantages. |
AR |
Performance enhancements |
3 |
Familiarity |
2 |
Explain the concept of branch prediction and its utility. |
AR |
Performance enhancements |
3 |
Familiarity |
3 |
Characterize the costs and benefits of prefetching. |
AR |
Performance enhancements |
3 |
Familiarity |
4 |
Explain speculative execution and identify the conditions that justify it. |
AR |
Performance enhancements |
3 |
Familiarity |
5 |
Discuss the performance advantages that multithreading offered in an architecture along with the factors that make it difficult to derive maximum benefits from this approach. |
AR |
Performance enhancements |
3 |
Familiarity |
6 |
Describe the relevance of scalability to performance. |
CN |
Introduction to Modeling and Simulation |
1 |
Familiarity |
1 |
Explain the concept of modeling and the use of abstraction that allows the use of a machine to solve a problem. |
CN |
Introduction to Modeling and Simulation |
1 |
Familiarity |
2 |
Describe the relationship between modeling and simulation, ie, thinking of simulation as dynamic modeling. |
CN |
Introduction to Modeling and Simulation |
1 |
Usage |
3 |
Create a simple, formal mathematical model of a real-world situation and use that model in a simulation. |
CN |
Introduction to Modeling and Simulation |
1 |
Familiarity |
4 |
Differentiate among the different types of simulations, including physical simulations, human-guided simulations, and virtual reality. |
CN |
Introduction to Modeling and Simulation |
1 |
Familiarity |
5 |
Describe several approaches to validating models. |
CN |
Introduction to Modeling and Simulation |
1 |
Usage |
6 |
Create a simple display of the results of a simulation. |
CN |
Modeling and Simulation |
3 |
Familiarity |
1 |
Explain and give examples of the benefits of simulation and modeling in a range of important application areas. |
CN |
Modeling and Simulation |
3 |
Usage |
2 |
Demonstrate the ability to apply the techniques of modeling and simulation to a range of problem areas. |
CN |
Modeling and Simulation |
3 |
Familiarity |
3 |
Explain the constructs and concepts of a particular modeling approach. |
CN |
Modeling and Simulation |
3 |
Assessment |
4 |
Explain the difference between validation and verification of a model; demonstrate the difference with specific examples. |
CN |
Modeling and Simulation |
3 |
Assessment |
5 |
Verify and validate the results of a simulation. |
CN |
Modeling and Simulation |
3 |
Assessment |
6 |
Evaluate a simulation, highlighting the benefits and the drawbacks. |
CN |
Modeling and Simulation |
3 |
Assessment |
7 |
Choose an appropriate modeling approach for a given problem or situation. |
CN |
Modeling and Simulation |
3 |
Assessment |
8 |
Compare results from different simulations of the same situation and explain any differences. |
CN |
Modeling and Simulation |
3 |
Assessment |
9 |
Infer the behavior of a system from the results of a simulation of the system. |
CN |
Modeling and Simulation |
3 |
Assessment |
10 |
Extend or adapt an existing model to a new situation. |
CN |
Processing |
3 |
Familiarity |
1 |
Explain the characteristics and defining properties of algorithms and how they relate to machine processing. |
CN |
Processing |
3 |
Assessment |
2 |
Analyze simple problem statements to identify relevant information and select appropriate processing to solve the problem. |
CN |
Processing |
3 |
Familiarity |
3 |
Identify or sketch a workflow for an existing computational process such as the creation of a graph based on experimental data. |
CN |
Processing |
3 |
Familiarity |
4 |
Describe the process of converting an algorithm to machine-executable code. |
CN |
Processing |
3 |
Familiarity |
5 |
Summarize the phases of software development and compare several common lifecycle models. |
CN |
Processing |
3 |
Familiarity |
6 |
Explain how data is represented in a machine Compare representations of integers to floating point numbers Describe underflow, overflow, round off, and truncation errors in data representations. |
CN |
Processing |
3 |
Usage |
7 |
Apply standard numerical algorithms to solve ODEs and PDEs Use computing systems to solve systems of equations. |
CN |
Processing |
3 |
Familiarity |
8 |
Describe the basic properties of bandwidth, latency, scalability and granularity. |
CN |
Processing |
3 |
Familiarity |
9 |
Describe the levels of parallelism including task, data, and event parallelism. |
CN |
Processing |
3 |
Assessment |
10 |
Compare and contrast parallel programming paradigms recognizing the strengths and weaknesses of each. |
CN |
Processing |
3 |
Familiarity |
11 |
Identify the issues impacting correctness and efficiency of a computation. |
CN |
Processing |
3 |
Usage |
12 |
Design, code, test and debug programs for a parallel computation. |
CN |
Interactive Visualization |
3 |
Assessment |
1 |
Compare common computer interface mechanisms with respect to ease-of-use, learnability, and cost. |
CN |
Interactive Visualization |
3 |
Usage |
2 |
Use standard APIs and tools to create visual displays of data, including graphs, charts, tables, and histograms. |
CN |
Interactive Visualization |
3 |
Familiarity |
3 |
Describe several approaches to using a computer as a means for interacting with and processing data. |
CN |
Interactive Visualization |
3 |
Assessment |
4 |
Extract useful information from a dataset. |
CN |
Interactive Visualization |
3 |
Assessment |
5 |
Analyze and select visualization techniques for specific problems. |
CN |
Interactive Visualization |
3 |
Familiarity |
6 |
Describe issues related to scaling data analysis from small to large data sets. |
CN |
Data, Information, and Knowledge |
3 |
Assessment |
1 |
Identify all of the data, information, and knowledge elements and related organizations, for a computational science application. |
CN |
Data, Information, and Knowledge |
3 |
Familiarity |
2 |
Describe how to represent data and information for processing. |
CN |
Data, Information, and Knowledge |
3 |
Familiarity |
3 |
Describe typical user requirements regarding that data, information, and knowledge. |
CN |
Data, Information, and Knowledge |
3 |
Assessment |
4 |
Select a suitable system or software implementation to manage data, information, and knowledge. |
CN |
Data, Information, and Knowledge |
3 |
Familiarity |
5 |
List and describe the reports, transactions, and other processing needed for a computational science application. |
CN |
Data, Information, and Knowledge |
3 |
Assessment |
6 |
Compare and contrast database management, information retrieval, and digital library systems with regard to handling typical computational science applications. |
CN |
Data, Information, and Knowledge |
3 |
Usage |
7 |
Design a digital library for some computational science users / societies, with appropriate content and services. |
CN |
Numerical Analysis |
3 |
Familiarity |
1 |
Define error, stability, machine precision concepts and the inexactness of computational approximations. |
CN |
Numerical Analysis |
3 |
Usage |
2 |
Implement Taylor series, interpolation, extrapolation, and regression algorithms for approximating functions. |
CN |
Numerical Analysis |
3 |
Usage |
3 |
Implement algorithms for differentiation and integration. |
CN |
Numerical Analysis |
3 |
Usage |
4 |
Implement algorithms for solving differential equations. |
DS |
Sets, Relations, and Functions |
1 |
Familiarity |
1 |
Explain with examples the basic terminology of functions, relations, and sets. |
DS |
Sets, Relations, and Functions |
1 |
Usage |
2 |
Perform the operations associated with sets, functions, and relations. |
DS |
Sets, Relations, and Functions |
1 |
Assessment |
3 |
Relate practical examples to the appropriate set, function, or relation model, and interpret the associated operations and terminology in context. |
DS |
Basic Logic |
1 |
Usage |
1 |
Convert logical statements from informal language to propositional and predicate logic expressions. |
DS |
Basic Logic |
1 |
Usage |
2 |
Apply formal methods of symbolic propositional and predicate logic, such as calculating validity of formulae and computing normal forms. |
DS |
Basic Logic |
1 |
Usage |
3 |
Use the rules of inference to construct proofs in propositional and predicate logic. |
DS |
Basic Logic |
1 |
Usage |
4 |
Describe how symbolic logic can be used to model real-life situations or applications, including those arising in computing contexts such as software analysis (eg, program correctness), database queries, and algorithms. |
DS |
Basic Logic |
1 |
Usage |
5 |
Apply formal logic proofs and/or informal, but rigorous, logical reasoning to real problems, such as predicting the behavior of software or solving problems such as puzzles. |
DS |
Basic Logic |
1 |
Familiarity |
6 |
Describe the strengths and limitations of propositional and predicate logic. |
DS |
Proof Techniques |
1 |
Familiarity |
1 |
Identify the proof technique used in a given proof. |
DS |
Proof Techniques |
1 |
Usage |
2 |
Outline the basic structure of each proof technique (direct proof, proof by contradiction, and induction) described in this unit. |
DS |
Proof Techniques |
1 |
Usage |
3 |
Apply each of the proof techniques (direct proof, proof by contradiction, and induction) correctly in the construction of a sound argument. |
DS |
Proof Techniques |
1 |
Assessment |
4 |
Determine which type of proof is best for a given problem. |
DS |
Proof Techniques |
1 |
Assessment |
5 |
Explain the parallels between ideas of mathematical and/or structural induction to recursion and recursively defined structures. |
DS |
Proof Techniques |
1 |
Assessment |
6 |
Explain the relationship between weak and strong induction and give examples of the appropriate use of each. |
DS |
Proof Techniques |
2 |
Familiarity |
7 |
State the well-ordering principle and its relationship to mathematical induction. |
DS |
Basics of Counting |
1 |
Usage |
1 |
Apply counting arguments, including sum and product rules, inclusion-exclusion principle and arithmetic/geometric progressions. |
DS |
Basics of Counting |
1 |
Usage |
2 |
Apply the pigeonhole principle in the context of a formal proof. |
DS |
Basics of Counting |
1 |
Usage |
3 |
Compute permutations and combinations of a set, and interpret the meaning in the context of the particular application. |
DS |
Basics of Counting |
1 |
Usage |
4 |
Map real-world applications to appropriate counting formalisms, such as determining the number of ways to arrange people around a table, subject to constraints on the seating arrangement, or the number of ways to determine certain hands in cards (eg, a full house). |
DS |
Basics of Counting |
1 |
Usage |
5 |
Solve a variety of basic recurrence relations. |
DS |
Basics of Counting |
1 |
Usage |
6 |
Analyze a problem to determine underlying recurrence relations. |
DS |
Basics of Counting |
1 |
Usage |
7 |
Perform computations involving modular arithmetic. |
DS |
Graphs and Trees |
1 |
Familiarity |
1 |
Illustrate by example the basic terminology of graph theory, and some of the properties and special cases of each type of graph/tree. |
DS |
Graphs and Trees |
1 |
Usage |
2 |
Demonstrate different traversal methods for trees and graphs, including pre, post, and in-order traversal of trees. |
DS |
Graphs and Trees |
1 |
Usage |
3 |
Model a variety of real-world problems in computer science using appropriate forms of graphs and trees, such as representing a network topology or the organization of a hierarchical file system. |
DS |
Graphs and Trees |
1 |
Usage |
4 |
Show how concepts from graphs and trees appear in data structures, algorithms, proof techniques (structural induction), and counting. |
DS |
Graphs and Trees |
2 |
Usage |
5 |
Explain how to construct a spanning tree of a graph. |
DS |
Graphs and Trees |
2 |
Usage |
6 |
Determine if two graphs are isomorphic. |
DS |
Discrete Probability |
1 |
Usage |
1 |
Calculate probabilities of events and expectations of random variables for elementary problems such as games of chance. |
DS |
Discrete Probability |
1 |
Usage |
2 |
Differentiate between dependent and independent events. |
DS |
Discrete Probability |
1 |
Usage |
3 |
Identify a case of the binomial distribution and compute a probability using that distribution. |
DS |
Discrete Probability |
1 |
Usage |
4 |
Apply Bayes theorem to determine conditional probabilities in a problem. |
DS |
Discrete Probability |
1 |
Usage |
5 |
Apply the tools of probability to solve problems such as the average case analysis of algorithms or analyzing hashing. |
DS |
Discrete Probability |
1 |
Usage |
6 |
Compute the variance for a given probability distribution. |
DS |
Discrete Probability |
2 |
Usage |
7 |
Explain how events that are independent can be conditionally dependent (and vice-versa) Identify real-world examples of such cases. |
GV |
Fundamental Concepts |
1 |
Familiarity |
1 |
Identify common uses of digital presentation to humans (eg, computer graphics, sound). |
GV |
Fundamental Concepts |
1 |
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. |
GV |
Fundamental Concepts |
1 |
Familiarity |
3 |
Explain how the limits of human perception affect choices about the digital representation of analog signals. |
GV |
Fundamental Concepts |
1 |
Usage |
4 |
Construct a simple user interface using a standard API. |
GV |
Fundamental Concepts |
1 |
Familiarity |
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. |
GV |
Fundamental Concepts |
2 |
Familiarity |
6 |
Describe color models and their use in graphics display devices. |
GV |
Fundamental Concepts |
2 |
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. |
GV |
Fundamental Concepts |
3 |
Familiarity |
8 |
Describe the basic process of producing continuous motion from a sequence of discrete frames (sometimes called “flicker fusion”). |
GV |
Fundamental Concepts |
3 |
Familiarity |
9 |
Describe how double-buffering can remove flicker from animation. |
GV |
Basic Rendering |
3 |
Familiarity |
1 |
Discuss the light transport problem and its relation to numerical integration ie, light is emitted, scatters around the scene, and is measured by the eye. |
GV |
Basic Rendering |
3 |
Familiarity |
2 |
Describe the basic graphics pipeline and how forward and backward rendering factor in this. |
GV |
Basic Rendering |
3 |
Usage |
3 |
Create a program to display 3D models of simple graphics images. |
GV |
Basic Rendering |
3 |
Usage |
4 |
Derive linear perspective from similar triangles by converting points (x, y, z) to points (x/z, y/z, 1). |
GV |
Basic Rendering |
3 |
Usage |
5 |
Obtain 2-dimensional and 3-dimensional points by applying affine transformations. |
GV |
Basic Rendering |
3 |
Usage |
6 |
Apply 3-dimensional coordinate system and the changes required to extend 2D transformation operations to handle transformations in 3D. |
GV |
Basic Rendering |
3 |
Assessment |
7 |
Contrast forward and backward rendering. |
GV |
Basic Rendering |
3 |
Familiarity |
8 |
Explain the concept and applications of texture mapping, sampling, and anti-aliasing. |
GV |
Basic Rendering |
3 |
Familiarity |
9 |
Explain the ray tracing/rasterization duality for the visibility problem. |
GV |
Basic Rendering |
3 |
Usage |
10 |
Implement simple procedures that perform transformation and clipping operations on simple 2-dimensional images. |
GV |
Basic Rendering |
3 |
Usage |
11 |
Implement a simple real-time renderer using a rasterization API (eg, OpenGL) using vertex buffers and shaders. |
GV |
Basic Rendering |
3 |
Assessment |
12 |
Compare and contrast the different rendering techniques. |
GV |
Basic Rendering |
3 |
Assessment |
13 |
Compute space requirements based on resolution and color coding. |
GV |
Basic Rendering |
3 |
Assessment |
14 |
Compute time requirements based on refresh rates, rasterization techniques. |
GV |
Geometric Modeling |
3 |
Usage |
1 |
Represent curves and surfaces using both implicit and parametric forms. |
GV |
Geometric Modeling |
3 |
Usage |
2 |
Create simple polyhedral models by surface tessellation. |
GV |
Geometric Modeling |
3 |
Usage |
3 |
Generate a mesh representation from an implicit surface. |
GV |
Geometric Modeling |
3 |
Usage |
4 |
Generate a fractal model or terrain using a procedural method. |
GV |
Geometric Modeling |
3 |
Usage |
5 |
Generate a mesh from data points acquired with a laser scanner. |
GV |
Geometric Modeling |
3 |
Usage |
6 |
Construct CSG models from simple primitives, such as cubes and quadric surfaces. |
GV |
Geometric Modeling |
3 |
Assessment |
7 |
Contrast modeling approaches with respect to space and time complexity and quality of image. |
GV |
Advanced Rendering |
3 |
Assessment |
1 |
Demonstrate how an algorithm estimates a solution to the rendering equation. |
GV |
Advanced Rendering |
3 |
Assessment |
2 |
Prove the properties of a rendering algorithm, eg, complete, consistent, and unbiased. |
GV |
Advanced Rendering |
3 |
Assessment |
3 |
Analyze the bandwidth and computation demands of a simple algorithm. |
GV |
Advanced Rendering |
3 |
Usage |
4 |
Implement a non-trivial shading algorithm (eg, toon shading, cascaded shadow maps) under a rasterization API. |
GV |
Advanced Rendering |
3 |
Familiarity |
5 |
Discuss how a particular artistic technique might be implemented in a renderer. |
GV |
Advanced Rendering |
3 |
Familiarity |
6 |
Explain how to recognize the graphics techniques used to create a particular image. |
GV |
Advanced Rendering |
3 |
Usage |
7 |
Implement any of the specified graphics techniques using a primitive graphics system at the individual pixel level. |
GV |
Advanced Rendering |
3 |
Usage |
8 |
Implement a ray tracer for scenes using a simple (eg, Phong’s) BRDF plus reflection and refraction. |
GV |
Computer Animation |
3 |
Usage |
1 |
Compute the location and orientation of model parts using an forward kinematic approach. |
GV |
Computer Animation |
3 |
Usage |
2 |
Compute the orientation of articulated parts of a model from a location and orientation using an inverse kinematic approach. |
GV |
Computer Animation |
3 |
Assessment |
3 |
Describe the tradeoffs in different representations of rotations. |
GV |
Computer Animation |
3 |
Usage |
4 |
Implement the spline interpolation method for producing in-between positions and orientations. |
GV |
Computer Animation |
3 |
Usage |
5 |
Implement algorithms for physical modeling of particle dynamics using simple Newtonian mechanics, for example Witkin & Kass, snakes and worms, symplectic Euler, Stormer/Verlet, or midpoint Euler methods. |
GV |
Computer Animation |
3 |
Familiarity |
6 |
Discuss the basic ideas behind some methods for fluid dynamics for modeling ballistic trajectories, for example for splashes, dust, fire, or smoke. |
GV |
Computer Animation |
3 |
Usage |
7 |
Use common animation software to construct simple organic forms using metaball and skeleton. |
GV |
Visualization |
3 |
Familiarity |
1 |
Describe the basic algorithms for scalar and vector visualization. |
GV |
Visualization |
3 |
Assessment |
2 |
Describe the tradeoffs of visualization algorithms in terms of accuracy and performance. |
GV |
Visualization |
3 |
Assessment |
3 |
Propose a suitable visualization design for a particular combination of data characteristics and application tasks. |
GV |
Visualization |
3 |
Assessment |
4 |
Analyze the effectiveness of a given visualization for a particular task. |
GV |
Visualization |
3 |
Assessment |
5 |
Design a process to evaluate the utility of a visualization algorithm or system. |
GV |
Visualization |
3 |
Familiarity |
6 |
Recognize a variety of applications of visualization including representations of scientific, medical, and mathematical data; flow visualization; and spatial analysis. |
HCI |
Foundations |
1 |
Familiarity |
1 |
Discuss why human-centered software development is important. |
HCI |
Foundations |
1 |
Familiarity |
2 |
Summarize the basic precepts of psychological and social interaction. |
HCI |
Foundations |
1 |
Usage |
3 |
Develop and use a conceptual vocabulary for analyzing human interaction with software: affordance, conceptual model, feedback, and so forth. |
HCI |
Foundations |
1 |
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. |
HCI |
Foundations |
1 |
Assessment |
5 |
Create and conduct a simple usability test for an existing software application. |
HCI |
Designing Interaction |
2 |
Assessment |
1 |
For an identified user group, undertake and document an analysis of their needs. |
HCI |
Designing Interaction |
2 |
Usage |
2 |
Create a simple application, together with help and documentation, that supports a graphical user interface. |
HCI |
Designing Interaction |
2 |
Usage |
3 |
Conduct a quantitative evaluation and discuss/report the results. |
HCI |
Designing Interaction |
2 |
Familiarity |
4 |
Discuss at least one national or international user interface design standard. |
HCI |
Programming Interactive Systems |
3 |
Familiarity |
1 |
Explain the importance of Model-View controller to interface programming. |
HCI |
Programming Interactive Systems |
3 |
Usage |
2 |
Create an application with a modern graphical user interface. |
HCI |
Programming Interactive Systems |
3 |
Familiarity |
3 |
Identify commonalities and differences in UIs across different platforms. |
HCI |
Programming Interactive Systems |
3 |
Familiarity |
4 |
Explain and use GUI programming concepts: event handling, constraint-based layout management, etc. |
HCI |
User-centered design and testing |
3 |
Familiarity |
1 |
Explain how user-centred design complements other software process models. |
HCI |
User-centered design and testing |
3 |
Usage |
2 |
Use lo-fi (low fidelity) prototyping techniques to gather, and report, user responses. |
HCI |
User-centered design and testing |
3 |
Assessment |
3 |
Choose appropriate methods to support the development of a specific UI. |
HCI |
User-centered design and testing |
3 |
Assessment |
4 |
Use a variety of techniques to evaluate a given UI. |
HCI |
User-centered design and testing |
3 |
Assessment |
5 |
Compare the constraints and benefits of different evaluative methods. |
HCI |
New Interactive Technologies |
3 |
Familiarity |
1 |
Describe when non-mouse interfaces are appropriate. |
HCI |
New Interactive Technologies |
3 |
Familiarity |
2 |
Understand the interaction possibilities beyond mouse-and-pointer interfaces. |
HCI |
New Interactive Technologies |
3 |
Assessment |
3 |
Discuss the advantages (and disadvantages) of non-mouse interfaces. |
HCI |
Collaboration and communication |
3 |
Familiarity |
1 |
Describe the difference between synchronous and asynchronous communication. |
HCI |
Collaboration and communication |
3 |
Assessment |
2 |
Compare the HCI issues in individual interaction with group interaction. |
HCI |
Collaboration and communication |
3 |
Familiarity |
3 |
Discuss several issues of social concern raised by collaborative software. |
HCI |
Collaboration and communication |
3 |
Familiarity |
4 |
Discuss the HCI issues in software that embodies human intention. |
HCI |
Statistical methods for HCI |
3 |
Familiarity |
1 |
Explain basic statistical concepts and their areas of application. |
HCI |
Statistical methods for HCI |
3 |
Usage |
2 |
Extract and articulate the statistical arguments used in papers that quantitatively report user studies. |
HCI |
Statistical methods for HCI |
3 |
Usage |
3 |
Design a user study that will yield quantitative results. |
HCI |
Statistical methods for HCI |
3 |
Usage |
4 |
Conduct and report on a study that utilizes both qualitative and quantitative evaluation. |
HCI |
Human factors and security |
3 |
Familiarity |
1 |
Explain the concepts of phishing and spear phishing, and how to recognize them. |
HCI |
Human factors and security |
3 |
Assessment |
2 |
Describe the issues of trust in interface design with an example of a high and low trust system. |
HCI |
Human factors and security |
3 |
Assessment |
3 |
Design a user interface for a security mechanism. |
HCI |
Human factors and security |
3 |
Familiarity |
4 |
Explain the concept of identity management and its importance. |
HCI |
Human factors and security |
3 |
Usage |
5 |
Analyze a security policy and/or procedures to show where they consider, or fail to consider, human factors. |
HCI |
Design-oriented HCI |
3 |
Familiarity |
1 |
Explain what is meant by “HCI is a design-oriented discipline”. |
HCI |
Design-oriented HCI |
3 |
Familiarity |
2 |
Detail the processes of design appropriate to specific design orientations. |
HCI |
Design-oriented HCI |
3 |
Usage |
3 |
Apply a variety of design methods to a given problem. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Familiarity |
1 |
Describe the optical model realized by a computer graphics system to synthesize stereoscopic view. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Familiarity |
2 |
Describe the principles of different viewer tracking technologies. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Familiarity |
3 |
Describe the differences between geometry- and image-based virtual reality. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Familiarity |
4 |
Describe the issues of user action synchronization and data consistency in a networked environment. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Usage |
5 |
Determine the basic requirements on interface, hardware, and software configurations of a VR system for a specified application. |
HCI |
Mixed, Augmented and Virtual Reality |
3 |
Familiarity |
6 |
Describe several possible uses for games engines, including their potential and their limitations. |
IAS |
Foundational Concepts in Security |
1 |
Usage |
1 |
Analyze the tradeoffs of balancing key security properties (Confidentiality, Integrity, Availability). |
IAS |
Foundational Concepts in Security |
1 |
Familiarity |
2 |
Describe the concepts of risk, threats, vulnerabilities and attack vectors (including the fact that there is no such thing as perfect security). |
IAS |
Foundational Concepts in Security |
1 |
Familiarity |
3 |
Explain the concepts of authentication, authorization, access control. |
IAS |
Foundational Concepts in Security |
1 |
Familiarity |
4 |
Explain the concept of trust and trustworthiness. |
IAS |
Foundational Concepts in Security |
1 |
Familiarity |
5 |
Recognize that there are important ethical issues to consider in computer security, including ethical issues associated with fixing or not fixing vulnerabilities and disclosing or not disclosing vulnerabilities. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
1 |
Describe the principle of least privilege and isolation as applied to system design. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
2 |
Summarize the principle of fail-safe and deny-by-default. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
3 |
Discuss the implications of relying on open design or the secrecy of design for security. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
4 |
Explain the goals of end-to-end data security. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
5 |
Discuss the benefits of having multiple layers of defenses. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
6 |
For each stage in the lifecycle of a product, describe what security considerations should be evaluated. |
IAS |
Principles of Secure Design |
1 |
Familiarity |
7 |
Describe the cost and tradeoffs associated with designing security into a product. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
8 |
Describe the concept of mediation and the principle of complete mediation. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
9 |
Be aware of standard components for security operations, instead of re-inventing fundamentals operations. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
10 |
Explain the concept of trusted computing including trusted computing base and attack surface and the principle of minimizing trusted computing base. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
11 |
Discuss the importance of usability in security mechanism design. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
12 |
Describe security issues that arise at boundaries between multiple components. |
IAS |
Principles of Secure Design |
2 |
Familiarity |
13 |
Identify the different roles of prevention mechanisms and detection/deterrence mechanisms. |
IAS |
Defensive Programming |
1 |
Familiarity |
1 |
Explain why input validation and data sanitization is necessary in the face of adversarial control of the input channel. |
IAS |
Defensive Programming |
1 |
Familiarity |
2 |
Explain why you might choose to develop a program in a type-safe language like Java, in contrast to an unsafe programming language like C/C++. |
IAS |
Defensive Programming |
1 |
Usage |
3 |
Classify common input validation errors, and write correct input validation code. |
IAS |
Defensive Programming |
1 |
Usage |
4 |
Demonstrate using a high-level programming language how to prevent a race condition from occurring and how to handle an exception. |
IAS |
Defensive Programming |
1 |
Usage |
5 |
Demonstrate the identification and graceful handling of error conditions. |
IAS |
Defensive Programming |
2 |
Familiarity |
6 |
Explain the risks with misusing interfaces with third-party code and how to correctly use third-party code. |
IAS |
Defensive Programming |
2 |
Familiarity |
7 |
Discuss the need to update software to fix security vulnerabilities and the lifecycle management of the fix. |
IAS |
Defensive Programming |
2 |
Familiarity |
8 |
List examples of direct and indirect information flows. |
IAS |
Defensive Programming |
3 |
Familiarity |
9 |
Explain the role of random numbers in security, beyond just cryptography (eg password generation, randomized algorithms to avoid algorithmic denial of service attacks). |
IAS |
Defensive Programming |
3 |
Familiarity |
10 |
Explain the different types of mechanisms for detecting and mitigating data sanitization errors. |
IAS |
Defensive Programming |
3 |
Usage |
11 |
Demonstrate how programs are tested for input handling errors. |
IAS |
Defensive Programming |
3 |
Usage |
12 |
Use static and dynamic tools to identify programming faults. |
IAS |
Defensive Programming |
3 |
Familiarity |
13 |
Describe how memory architecture is used to protect runtime attacks. |
IAS |
Threats and Attacks |
2 |
Familiarity |
1 |
Describe likely attacker types against a particular system. |
IAS |
Threats and Attacks |
2 |
Familiarity |
2 |
Discuss the limitations of malware countermeasures (eg, signature-based detection, behavioral detection). |
IAS |
Threats and Attacks |
2 |
Familiarity |
3 |
Identify instances of social engineering attacks and Denial of Service attacks. |
IAS |
Threats and Attacks |
2 |
Familiarity |
4 |
Discuss how Denial of Service attacks can be identified and mitigated. |
IAS |
Threats and Attacks |
2 |
Familiarity |
5 |
Describe risks to privacy and anonymity in commonly used applications. |
IAS |
Threats and Attacks |
2 |
Familiarity |
6 |
Discuss the concepts of covert channels and other data leakage procedures. |
IAS |
Network Security |
2 |
Familiarity |
1 |
Describe the different categories of network threats and attacks. |
IAS |
Network Security |
2 |
Familiarity |
2 |
Describe the architecture for public and private key cryptography and how PKI supports network security. |
IAS |
Network Security |
2 |
Familiarity |
3 |
Describe virtues and limitations of security technologies at each layer of the network stack. |
IAS |
Network Security |
2 |
Familiarity |
4 |
Identify the appropriate defense mechanism(s) and its limitations given a network threat. |
IAS |
Network Security |
2 |
Familiarity |
5 |
Discuss security properties and limitations of other non-wired networks. |
IAS |
Network Security |
3 |
Familiarity |
6 |
Identify the additional threats faced by non-wired networks. |
IAS |
Network Security |
3 |
Familiarity |
7 |
Describe threats that can and cannot be protected against using secure communication channels. |
IAS |
Network Security |
3 |
Familiarity |
8 |
Summarize defenses against network censorship. |
IAS |
Network Security |
3 |
Familiarity |
9 |
Diagram a network for security. |
IAS |
Cryptography |
2 |
Familiarity |
1 |
Describe the purpose of Cryptography and list ways it is used in data communications. |
IAS |
Cryptography |
2 |
Familiarity |
2 |
Define the following terms: Cipher, Cryptanalysis, Cryptographic Algorithm, and Cryptology and describe the two basic methods (ciphers) for transforming plain text in cipher text. |
IAS |
Cryptography |
2 |
Familiarity |
3 |
Discuss the importance of prime numbers in cryptography and explain their use in cryptographic algorithms. |
IAS |
Cryptography |
2 |
Familiarity |
4 |
Explain how Public Key Infrastructure supports digital signing and encryption and discuss the limitations/vulnerabilities. |
IAS |
Cryptography |
2 |
Usage |
5 |
Use cryptographic primitives and their basic properties. |
IAS |
Cryptography |
3 |
Usage |
6 |
Illustrate how to measure entropy and how to generate cryptographic randomness. |
IAS |
Cryptography |
3 |
Usage |
7 |
Use public-key primitives and their applications. |
IAS |
Cryptography |
3 |
Familiarity |
8 |
Explain how key exchange protocols work and how they fail. |
IAS |
Cryptography |
3 |
Familiarity |
9 |
Discuss cryptographic protocols and their properties. |
IAS |
Cryptography |
3 |
Familiarity |
10 |
Describe real-world applications of cryptographic primitives and protocols. |
IAS |
Cryptography |
3 |
Familiarity |
11 |
Summarize precise security definitions, attacker capabilities and goals. |
IAS |
Cryptography |
3 |
Usage |
12 |
Apply appropriate known cryptographic techniques for a given scenario. |
IAS |
Cryptography |
3 |
Familiarity |
13 |
Appreciate the dangers of inventing one’s own cryptographic methods. |
IAS |
Cryptography |
3 |
Familiarity |
14 |
Describe quantum cryptography and the impact of quantum computing on cryptographic algorithms. |
IAS |
Web Security |
3 |
Familiarity |
1 |
Describe the browser security model including same-origin policy and threat models in web security. |
IAS |
Web Security |
3 |
Familiarity |
2 |
Discuss the concept of web sessions, secure communication channels such as TLS and importance of secure certificates, authentication including single sign-on such as OAuth and SAML. |
IAS |
Web Security |
3 |
Familiarity |
3 |
Investigate common types of vulnerabilities and attacks in web applications, and defenses against them. |
IAS |
Web Security |
3 |
Usage |
4 |
Use client-side security capabilities. |
IAS |
Platform Security |
3 |
Familiarity |
1 |
Explain the concept of code integrity and code signing and the scope it applies to. |
IAS |
Platform Security |
3 |
Familiarity |
2 |
Discuss the concept of root of trust and the process of secure boot and secure loading. |
IAS |
Platform Security |
3 |
Familiarity |
3 |
Describe the mechanism of remote attestation of system integrity. |
IAS |
Platform Security |
3 |
Familiarity |
4 |
Summarize the goals and key primitives of TPM. |
IAS |
Platform Security |
3 |
Familiarity |
5 |
Identify the threats of plugging peripherals into a device. |
IAS |
Platform Security |
3 |
Familiarity |
6 |
Identify physical attacks and countermeasures. |
IAS |
Platform Security |
3 |
Familiarity |
7 |
Identify attacks on non-PC hardware platforms. |
IAS |
Platform Security |
3 |
Familiarity |
8 |
Discuss the concept and importance of trusted path. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
1 |
Describe the concept of privacy including personally private information, potential violations of privacy due to security mechanisms, and describe how privacy protection mechanisms run in conflict with security mechanisms. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
2 |
Describe how an attacker can infer a secret by interacting with a database. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
3 |
Explain how to set a data backup policy or password refresh policy. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
4 |
Discuss how to set a breach disclosure policy. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
5 |
Describe the consequences of data retention policies. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
6 |
Identify the risks of relying on outsourced manufacturing. |
IAS |
Security Policy and Governance |
3 |
Familiarity |
7 |
Identify the risks and benefits of outsourcing to the cloud. |
IAS |
Digital Forensics |
3 |
Familiarity |
1 |
Describe what is a Digital Investigation is, the sources of digital evidence, and the limitations of forensics. |
IAS |
Digital Forensics |
3 |
Familiarity |
2 |
Explain how to design software to support forensics. |
IAS |
Digital Forensics |
3 |
Familiarity |
3 |
Describe the legal requirements for use of seized data. |
IAS |
Digital Forensics |
3 |
Familiarity |
4 |
Describe the process of evidence seizure from the time when the requirement was identified to the disposition of the data. |
IAS |
Digital Forensics |
3 |
Familiarity |
5 |
Describe how data collection is accomplished and the proper storage of the original and forensics copy. |
IAS |
Digital Forensics |
3 |
Usage |
6 |
Conduct data collection on a hard drive. |
IAS |
Digital Forensics |
3 |
Familiarity |
7 |
Describe a person’s responsibility and liability while testifying as a forensics examiner. |
IAS |
Digital Forensics |
3 |
Usage |
8 |
Recover data based on a given search term from an imaged system. |
IAS |
Digital Forensics |
3 |
Usage |
9 |
Reconstruct application history from application artifacts. |
IAS |
Digital Forensics |
3 |
Usage |
10 |
Reconstruct web browsing history from web artifacts. |
IAS |
Digital Forensics |
3 |
Usage |
11 |
Capture and interpret network traffic. |
IAS |
Digital Forensics |
3 |
Familiarity |
12 |
Discuss the challenges associated with mobile device forensics. |
IAS |
Digital Forensics |
3 |
Usage |
13 |
Inspect a system (network, computer, or application) for the presence of malware or malicious activity. |
IAS |
Digital Forensics |
3 |
Usage |
14 |
Apply forensics tools to investigate security breaches. |
IAS |
Digital Forensics |
3 |
Familiarity |
15 |
Identify anti-forensic methods. |
IAS |
Secure Software Engineering |
3 |
Familiarity |
1 |
Describe the requirements for integrating security into the SDL. |
IAS |
Secure Software Engineering |
3 |
Usage |
2 |
Apply the concepts of the Design Principles for Protection Mechanisms, the Principles for Software Security (Viega and McGraw), and the Principles for Secure Design (Morrie Gasser) on a software development project. |
IAS |
Secure Software Engineering |
3 |
Usage |
3 |
Develop specifications for a software development effort that fully specify functional requirements and identifies the expected execution paths. |
IAS |
Secure Software Engineering |
3 |
Familiarity |
4 |
Describe software development best practices for minimizing vulnerabilities in programming code. |
IAS |
Secure Software Engineering |
3 |
Usage |
5 |
Conduct a security verification and assessment (static and dynamic) of a software application. |
IM |
Information Management Concepts |
1 |
Familiarity |
1 |
Describe how humans gain access to information and data to support their needs. |
IM |
Information Management Concepts |
1 |
Assessment |
2 |
Describe the advantages and disadvantages of central organizational control over data. |
IM |
Information Management Concepts |
1 |
Familiarity |
3 |
Identify the careers/roles associated with information management (eg, database administrator, data modeler, application developer, end-user). |
IM |
Information Management Concepts |
1 |
Assessment |
4 |
Compare and contrast information with data and knowledge. |
IM |
Information Management Concepts |
1 |
Usage |
5 |
Demonstrate uses of explicitly stored metadata/schema associated with data. |
IM |
Information Management Concepts |
1 |
Familiarity |
6 |
Identify issues of data persistence for an organization. |
IM |
Information Management Concepts |
2 |
Assessment |
7 |
Critique an information application with regard to satisfying user information needs. |
IM |
Information Management Concepts |
2 |
Familiarity |
8 |
Explain uses of declarative queries. |
IM |
Information Management Concepts |
2 |
Familiarity |
9 |
Give a declarative version for a navigational query. |
IM |
Information Management Concepts |
2 |
Familiarity |
10 |
Describe several technical solutions to the problems related to information privacy, integrity, security, and preservation. |
IM |
Information Management Concepts |
2 |
Familiarity |
11 |
Explain measures of efficiency (throughput, response time) and effectiveness (recall, precision). |
IM |
Information Management Concepts |
2 |
Familiarity |
12 |
Describe approaches to scale up information systems. |
IM |
Information Management Concepts |
2 |
Usage |
13 |
Identify vulnerabilities and failure scenarios in common forms of information systems. |
IM |
Database Systems |
2 |
Familiarity |
1 |
Explain the characteristics that distinguish the database approach from the approach of programming with data files. |
IM |
Database Systems |
2 |
Familiarity |
2 |
Describe the most common designs for core database system components including the query optimizer, query executor, storage manager, access methods, and transaction processor. |
IM |
Database Systems |
2 |
Familiarity |
3 |
Cite the basic goals, functions, and models of database systems. |
IM |
Database Systems |
2 |
Familiarity |
4 |
Describe the components of a database system and give examples of their use. |
IM |
Database Systems |
2 |
Familiarity |
5 |
Identify major DBMS functions and describe their role in a database system. |
IM |
Database Systems |
2 |
Familiarity |
6 |
Explain the concept of data independence and its importance in a database system. |
IM |
Database Systems |
2 |
Usage |
7 |
Use a declarative query language to elicit information from a database. |
IM |
Database Systems |
2 |
Familiarity |
8 |
Describe facilities that datatbases provide supporting structures and/or stream (sequence) data, eg, text. |
IM |
Database Systems |
3 |
Familiarity |
9 |
Describe major approaches to storing and processing large volumes of data. |
IM |
Data Modeling |
2 |
Assessment |
1 |
Compare and contrast appropriate data models, including internal structures, for different types of data. |
IM |
Data Modeling |
2 |
Familiarity |
2 |
Describe concepts in modeling notation (eg, Entity-Relation Diagrams or UML) and how they would be used. |
IM |
Data Modeling |
2 |
Familiarity |
3 |
Define the fundamental terminology used in the relational data model. |
IM |
Data Modeling |
2 |
Familiarity |
4 |
Describe the basic principles of the relational data model. |
IM |
Data Modeling |
2 |
Usage |
5 |
Apply the modeling concepts and notation of the relational data model. |
IM |
Data Modeling |
2 |
Familiarity |
6 |
Describe the main concepts of the OO model such as object identity, type constructors, encapsulation, inheritance, polymorphism, and versioning. |
IM |
Data Modeling |
2 |
Assessment |
7 |
Describe the differences between relational and semi-structured data models. |
IM |
Data Modeling |
2 |
Usage |
8 |
Give a semi-structured equivalent (eg, in DTD or XML Schema) for a given relational schema. |
IM |
Indexing |
3 |
Usage |
1 |
Generate an index file for a collection of resources. |
IM |
Indexing |
3 |
Familiarity |
2 |
Explain the role of an inverted index in locating a document in a collection. |
IM |
Indexing |
3 |
Familiarity |
3 |
Explain how stemming and stop words affect indexing. |
IM |
Indexing |
3 |
Usage |
4 |
Identify appropriate indices for given relational schema and query set. |
IM |
Indexing |
3 |
Usage |
5 |
Estimate time to retrieve information, when indices are used compared to when they are not used. |
IM |
Indexing |
3 |
Familiarity |
6 |
Describe key challenges in web crawling, eg, detecting duplicate documents, determining the crawling frontier. |
IM |
Relational Databases |
3 |
Usage |
1 |
Prepare a relational schema from a conceptual model developed using the entity- relationship model. |
IM |
Relational Databases |
3 |
Usage |
2 |
Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including definition of the concept of a foreign key). |
IM |
Relational Databases |
3 |
Usage |
3 |
Demonstrate use of the relational algebra operations from mathematical set theory (union, intersection, difference, and Cartesian product) and the relational algebra operations developed specifically for relational databases (select (restrict), project, join, and division). |
IM |
Relational Databases |
3 |
Usage |
4 |
Write queries in the relational algebra. |
IM |
Relational Databases |
3 |
Usage |
5 |
Write queries in the tuple relational calculus. |
IM |
Relational Databases |
3 |
Assessment |
6 |
Determine the functional dependency between two or more attributes that are a subset of a relation. |
IM |
Relational Databases |
3 |
Usage |
7 |
Connect constraints expressed as primary key and foreign key, with functional dependencies. |
IM |
Relational Databases |
3 |
Usage |
8 |
Compute the closure of a set of attributes under given functional dependencies. |
IM |
Relational Databases |
3 |
Assessment |
9 |
Determine whether a set of attributes form a superkey and/or candidate key for a relation with given functional dependencies. |
IM |
Relational Databases |
3 |
Assessment |
10 |
Evaluate a proposed decomposition, to say whether it has lossless-join and dependency-preservation. |
IM |
Relational Databases |
3 |
Familiarity |
11 |
Describe the properties of BCNF, PJNF, 5NF. |
IM |
Relational Databases |
3 |
Familiarity |
12 |
Explain the impact of normalization on the efficiency of database operations especially query optimization. |
IM |
Relational Databases |
3 |
Familiarity |
13 |
Describe what is a multi-valued dependency and what type of constraints it specifies. |
IM |
Query Languages |
3 |
Usage |
1 |
Create a relational database schema in SQL that incorporates key, entity integrity, and referential integrity constraints. |
IM |
Query Languages |
3 |
Usage |
2 |
Use SQL to create tables and retrieve (SELECT) information from a database. |
IM |
Query Languages |
3 |
Assessment |
3 |
Evaluate a set of query processing strategies and select the optimal strategy. |
IM |
Query Languages |
3 |
Usage |
4 |
Create a non-procedural query by filling in templates of relations to construct an example of the desired query result. |
IM |
Query Languages |
3 |
Usage |
5 |
Embed object-oriented queries into a stand-alone language such as C++ or Java (eg, SELECT ColMethod() FROM Object). |
IM |
Query Languages |
3 |
Usage |
6 |
Write a stored procedure that deals with parameters and has some control flow, to provide a given functionality. |
IM |
Transaction Processing |
3 |
Usage |
1 |
Create a transaction by embedding SQL into an application program. |
IM |
Transaction Processing |
3 |
Familiarity |
2 |
Explain the concept of implicit commits. |
IM |
Transaction Processing |
3 |
Familiarity |
3 |
Describe the issues specific to efficient transaction execution. |
IM |
Transaction Processing |
3 |
Assessment |
4 |
Explain when and why rollback is needed and how logging assures proper rollback. |
IM |
Transaction Processing |
3 |
Assessment |
5 |
Explain the effect of different isolation levels on the concurrency control mechanisms. |
IM |
Transaction Processing |
3 |
Assessment |
6 |
Choose the proper isolation level for implementing a specified transaction protocol. |
IM |
Transaction Processing |
3 |
Assessment |
7 |
Identify appropriate transaction boundaries in application programs. |
IM |
Distributed Databases |
3 |
Familiarity |
1 |
Explain the techniques used for data fragmentation, replication, and allocation during the distributed database design process. |
IM |
Distributed Databases |
3 |
Assessment |
2 |
Evaluate simple strategies for executing a distributed query to select the strategy that minimizes the amount of data transfer. |
IM |
Distributed Databases |
3 |
Familiarity |
3 |
Explain how the two-phase commit protocol is used to deal with committing a transaction that accesses databases stored on multiple nodes. |
IM |
Distributed Databases |
3 |
Familiarity |
4 |
Describe distributed concurrency control based on the distinguished copy techniques and the voting method. |
IM |
Distributed Databases |
3 |
Familiarity |
5 |
Describe the three levels of software in the client-server model. |
IM |
Physical Database Design |
3 |
Familiarity |
1 |
Explain the concepts of records, record types, and files, as well as the different techniques for placing file records on disk. |
IM |
Physical Database Design |
3 |
Familiarity |
2 |
Give examples of the application of primary, secondary, and clustering indexes. |
IM |
Physical Database Design |
3 |
Assessment |
3 |
Distinguish between a non-dense index and a dense index. |
IM |
Physical Database Design |
3 |
Usage |
4 |
Implement dynamic multilevel indexes using B-trees. |
IM |
Physical Database Design |
3 |
Familiarity |
5 |
Explain the theory and application of internal and external hashing techniques. |
IM |
Physical Database Design |
3 |
Usage |
6 |
Use hashing to facilitate dynamic file expansion. |
IM |
Physical Database Design |
3 |
Familiarity |
7 |
Describe the relationships among hashing, compression, and efficient database searches. |
IM |
Physical Database Design |
3 |
Assessment |
8 |
Evaluate costs and benefits of various hashing schemes. |
IM |
Physical Database Design |
3 |
Familiarity |
9 |
Explain how physical database design affects database transaction efficiency. |
IM |
Data Mining |
3 |
Assessment |
1 |
Compare and contrast different uses of data mining as evidenced in both research and application. |
IM |
Data Mining |
3 |
Familiarity |
2 |
Explain the value of finding associations in market basket data. |
IM |
Data Mining |
3 |
Assessment |
3 |
Characterize the kinds of patterns that can be discovered by association rule mining. |
IM |
Data Mining |
3 |
Familiarity |
4 |
Describe how to extend a relational system to find patterns using association rules. |
IM |
Data Mining |
3 |
Assessment |
5 |
Evaluate different methodologies for effective application of data mining. |
IM |
Data Mining |
3 |
Assessment |
6 |
Identify and characterize sources of noise, redundancy, and outliers in presented data. |
IM |
Data Mining |
3 |
Familiarity |
7 |
Identify mechanisms (on-line aggregation, anytime behavior, interactive visualization) to close the loop in the data mining process. |
IM |
Data Mining |
3 |
Familiarity |
8 |
Describe why the various close-the-loop processes improve the effectiveness of data mining. |
IM |
Information Storage and Retrieval |
3 |
Familiarity |
1 |
Explain basic information storage and retrieval concepts. |
IM |
Information Storage and Retrieval |
3 |
Familiarity |
2 |
Describe what issues are specific to efficient information retrieval. |
IM |
Information Storage and Retrieval |
3 |
Assessment |
3 |
Give applications of alternative search strategies and explain why the particular search strategy is appropriate for the application. |
IM |
Information Storage and Retrieval |
3 |
Usage |
4 |
Design and implement a small to medium size information storage and retrieval system, or digital library. |
IM |
Information Storage and Retrieval |
3 |
Familiarity |
5 |
Describe some of the technical solutions to the problems related to archiving and preserving information in a digital library. |
IM |
Multimedia Systems |
3 |
Familiarity |
1 |
Describe the media and supporting devices commonly associated with multimedia information and systems. |
IM |
Multimedia Systems |
3 |
Usage |
2 |
Demonstrate the use of content-based information analysis in a multimedia information system. |
IM |
Multimedia Systems |
3 |
Assessment |
3 |
Critique multimedia presentations in terms of their appropriate use of audio, video, graphics, color, and other information presentation concepts. |
IM |
Multimedia Systems |
3 |
Usage |
4 |
Implement a multimedia application using an authoring system. |
IM |
Multimedia Systems |
3 |
Familiarity |
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. |
IM |
Multimedia Systems |
3 |
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. |
IS |
Fundamental Issues |
2 |
Familiarity |
1 |
Describe Turing test and the “Chinese Room” thought experiment. |
IS |
Fundamental Issues |
2 |
Familiarity |
2 |
Differentiate between the concepts of optimal reasoning/behavior and human-like reasoning/behavior. |
IS |
Fundamental Issues |
2 |
Assessment |
3 |
Determing the characteristics of a given problem that an intelligent systems must solve. |
IS |
Basic Search Strategies |
2 |
Usage |
1 |
Formulate an efficient problem space for a problem expressed in natural language (eg, English) in terms of initial and goal states, and operators. |
IS |
Basic Search Strategies |
2 |
Familiarity |
2 |
Describe the role of heuristics and describe the trade-offs among completeness, optimality, time complexity, and space complexity. |
IS |
Basic Search Strategies |
2 |
Familiarity |
3 |
Describe the problem of combinatorial explosion of search space and its consequences. |
IS |
Basic Search Strategies |
2 |
Usage |
4 |
Select and implement an appropriate uninformed search algorithm for a problem, and characterize its time and space complexities. |
IS |
Basic Search Strategies |
2 |
Usage |
5 |
Select and implement an appropriate informed search algorithm for a problem by designing the necessary heuristic evaluation function. |
IS |
Basic Search Strategies |
2 |
Assessment |
6 |
Evaluate whether a heuristic for a given problem is admissible/can guarantee optimal solution. |
IS |
Basic Search Strategies |
2 |
Usage |
7 |
Formulate a problem specified in natural language (eg, English) as a constraint satisfaction problem and implement it using a chronological backtracking algorithm or stochastic local search. |
IS |
Basic Search Strategies |
2 |
Familiarity |
8 |
Compare and contrast basic search issues with game playing issues. |
IS |
Basic Knowledge Representation and Reasoning |
2 |
Usage |
1 |
Translate a natural language (eg, English) sentence into predicate logic statement. |
IS |
Basic Knowledge Representation and Reasoning |
2 |
Usage |
2 |
Convert a logic statement into clause form. |
IS |
Basic Knowledge Representation and Reasoning |
2 |
Usage |
3 |
Apply resolution to a set of logic statements to answer a query. |
IS |
Basic Knowledge Representation and Reasoning |
2 |
Usage |
4 |
Make a probabilistic inference in a real-world problem using Bayes’ theorem to determine the probability of a hypothesis given evidence. |
IS |
Basic Machine Learning |
2 |
Familiarity |
1 |
List the differences among the three main styles of learning: supervised, reinforcement, and unsupervised. |
IS |
Basic Machine Learning |
2 |
Familiarity |
2 |
Identify examples of classification tasks, including the available input features and output to be predicted. |
IS |
Basic Machine Learning |
2 |
Familiarity |
3 |
Explain the difference between inductive and deductive learning. |
IS |
Basic Machine Learning |
2 |
Familiarity |
4 |
Describe over-fitting in the context of a problem. |
IS |
Basic Machine Learning |
2 |
Usage |
5 |
Apply the simple statistical learning algorithm such as Naive Bayesian Classifier to a classification task and measure the classifier’s accuracy. |
IS |
Advanced Search |
3 |
Usage |
1 |
Design and implement a genetic algorithm solution to a problem. |
IS |
Advanced Search |
3 |
Usage |
2 |
Design and implement a simulated annealing schedule to avoid local minima in a problem. |
IS |
Advanced Search |
3 |
Usage |
3 |
Design and implement A*/beam search to solve a problem. |
IS |
Advanced Search |
3 |
Usage |
4 |
Apply minimax search with alpha-beta pruning to prune search space in a two-player game. |
IS |
Advanced Search |
3 |
Assessment |
5 |
Compare and contrast genetic algorithms with classic search techniques. |
IS |
Advanced Search |
3 |
Assessment |
6 |
Compare and contrast various heuristic searches vis-a-vis applicability to a given problem. |
IS |
Advanced Represenation and Reasoning |
3 |
Assessment |
1 |
Compare and contrast the most common models used for structured knowledge representation, highlighting their strengths and weaknesses. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
2 |
Identify the components of non-monotonic reasoning and its usefulness as a representational mechanisms for belief systems. |
IS |
Advanced Represenation and Reasoning |
3 |
Assessment |
3 |
Compare and contrast the basic techniques for representing uncertainty. |
IS |
Advanced Represenation and Reasoning |
3 |
Assessment |
4 |
Compare and contrast the basic techniques for qualitative representation. |
IS |
Advanced Represenation and Reasoning |
3 |
Usage |
5 |
Apply situation and event calculus to problems of action and change. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
6 |
Explain the distinction between temporal and spatial reasoning, and how they interrelate. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
7 |
Explain the difference between rule-based, case-based and model-based reasoning techniques. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
8 |
Define the concept of a planning system and how it differs from classical search techniques. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
9 |
Describe the differences between planning as search, operator-based planning, and propositional planning, providing examples of domains where each is most applicable. |
IS |
Advanced Represenation and Reasoning |
3 |
Familiarity |
10 |
Explain the distinction between monotonic and non-monotonic inference. |
IS |
Reasoning Under Uncertainty |
3 |
Usage |
1 |
Apply Bayes’ rule to determine the probability of a hypothesis given evidence. |
IS |
Reasoning Under Uncertainty |
3 |
Assessment |
2 |
Explain how conditional independence assertions allow for greater efficiency of probabilistic systems. |
IS |
Reasoning Under Uncertainty |
3 |
Familiarity |
3 |
Identify examples of knowledge representations for reasoning under uncertainty. |
IS |
Reasoning Under Uncertainty |
3 |
Familiarity |
4 |
State the complexity of exact inference Identify methods for approximate inference. |
IS |
Reasoning Under Uncertainty |
3 |
Usage |
5 |
Design and implement at least one knowledge representation for reasoning under uncertainty. |
IS |
Reasoning Under Uncertainty |
3 |
Familiarity |
6 |
Describe the complexities of temporal probabilistic reasoning. |
IS |
Reasoning Under Uncertainty |
3 |
Usage |
7 |
Design and implement an HMM as one example of a temporal probabilistic system. |
IS |
Reasoning Under Uncertainty |
3 |
Familiarity |
8 |
Describe the relationship between preferences and utility functions. |
IS |
Reasoning Under Uncertainty |
3 |
Assessment |
9 |
Explain how utility functions and probabilistic reasoning can be combined to make rational decisions. |
IS |
Agents |
3 |
Familiarity |
1 |
List the defining characteristics of an intelligent agent. |
IS |
Agents |
3 |
Assessment |
2 |
Characterize and contrast the standard agent architectures. |
IS |
Agents |
3 |
Familiarity |
3 |
Describe the applications of agent theory to domains such as software agents, personal assistants, and believable agents. |
IS |
Agents |
3 |
Familiarity |
4 |
Describe the primary paradigms used by learning agents. |
IS |
Agents |
3 |
Usage |
5 |
Demonstrate using appropriate examples how multi-agent systems support agent interaction. |
IS |
Natural Language Processing |
3 |
Assessment |
1 |
Define and contrast deterministic and stochastic grammars, providing examples to show the adequacy of each. |
IS |
Natural Language Processing |
3 |
Usage |
2 |
Simulate, apply, or implement classic and stochastic algorithms for parsing natural language. |
IS |
Natural Language Processing |
3 |
Familiarity |
3 |
Identify the challenges of representing meaning. |
IS |
Natural Language Processing |
3 |
Familiarity |
4 |
List the advantages of using standard corpora Identify examples of current corpora for a variety of NLP tasks. |
IS |
Natural Language Processing |
3 |
Familiarity |
5 |
Identify techniques for information retrieval, language translation, and text classification. |
IS |
Advanced Machine Learning |
3 |
Familiarity |
1 |
Explain the differences among the three main styles of learning: supervised, reinforcement, and unsupervised. |
IS |
Advanced Machine Learning |
3 |
Usage |
2 |
Implement simple algorithms for supervised learning, reinforcement learning, and unsupervised learning. |
IS |
Advanced Machine Learning |
3 |
Usage |
3 |
Determine which of the three learning styles is appropriate to a particular problem domain. |
IS |
Advanced Machine Learning |
3 |
Assessment |
4 |
Compare and contrast each of the following techniques, providing examples of when each strategy is superior: decision trees, neural networks, and belief networks. |
IS |
Advanced Machine Learning |
3 |
Assessment |
5 |
Evaluate the performance of a simple learning system on a real-world dataset. |
IS |
Advanced Machine Learning |
3 |
Familiarity |
6 |
Characterize the state of the art in learning theory, including its achievements and its shortcomings. |
IS |
Advanced Machine Learning |
3 |
Usage |
7 |
Explain the problem of overfitting, along with techniques for detecting and managing the problem. |
IS |
Robotics |
3 |
Familiarity |
1 |
List capabilities and limitations of today’s state-of-the-art robot systems, including their sensors and the crucial sensor processing that informs those systems. |
IS |
Robotics |
3 |
Usage |
2 |
Integrate sensors, actuators, and software into a robot designed to undertake some task. |
IS |
Robotics |
3 |
Usage |
3 |
Program a robot to accomplish simple tasks using deliberative, reactive, and/or hybrid control architectures. |
IS |
Robotics |
3 |
Usage |
4 |
Implement fundamental motion planning algorithms within a robot configuration space. |
IS |
Robotics |
3 |
Familiarity |
5 |
Characterize the uncertainties associated with common robot sensors and actuators; articulate strategies for mitigating these uncertainties. |
IS |
Robotics |
3 |
Familiarity |
6 |
List the differences among robots’ representations of their external environment, including their strengths and shortcomings. |
IS |
Robotics |
3 |
Assessment |
7 |
Compare and contrast at least three strategies for robot navigation within known and/or unknown environments, including their strengths and shortcomings. |
IS |
Robotics |
3 |
Familiarity |
8 |
Describe at least one approach for coordinating the actions and sensing of several robots to accomplish a single task. |
IS |
Perception and Computer Vision |
3 |
Familiarity |
1 |
Summarize the importance of image and object recognition in AI and indicate several significant applications of this technology. |
IS |
Perception and Computer Vision |
3 |
Familiarity |
2 |
List at least three image-segmentation approaches, such as thresholding, edge-based and region-based algorithms, along with their defining characteristics, strengths, and weaknesses. |
IS |
Perception and Computer Vision |
3 |
Usage |
3 |
Implement 2d object recognition based on contour- and/or region-based shape representations. |
IS |
Perception and Computer Vision |
3 |
Familiarity |
4 |
Distinguish the goals of sound-recognition, speech-recognition, and speaker-recognition and identify how the raw audio signal will be handled differently in each of these cases. |
IS |
Perception and Computer Vision |
3 |
Familiarity |
5 |
Provide at least two examples of a transformation of a data source from one sensory domain to another, eg, tactile data interpreted as single-band 2d images. |
IS |
Perception and Computer Vision |
3 |
Usage |
6 |
Implement a feature-extraction algorithm on real data, eg, an edge or corner detector for images or vectors of Fourier coefficients describing a short slice of audio signal. |
IS |
Perception and Computer Vision |
3 |
Usage |
7 |
Implement an algorithm combining features into higher-level percepts, eg, a contour or polygon from visual primitives or phoneme hypotheses from an audio signal. |
IS |
Perception and Computer Vision |
3 |
Usage |
8 |
Implement a classification algorithm that segments input percepts into output categories and quantitatively evaluates the resulting classification. |
IS |
Perception and Computer Vision |
3 |
Assessment |
9 |
Evaluate the performance of the underlying feature-extraction, relative to at least one alternative possible approach (whether implemented or not) in its contribution to the classification task (8), above. |
IS |
Perception and Computer Vision |
3 |
Familiarity |
10 |
Describe at least three classification approaches, their prerequisites for applicability, their strengths, and their shortcomings. |
NC |
Introduction |
1 |
Familiarity |
1 |
Articulate the organization of the Internet. |
NC |
Introduction |
1 |
Familiarity |
2 |
List and define the appropriate network terminology. |
NC |
Introduction |
1 |
Familiarity |
3 |
Describe the layered structure of a typical networked architecture. |
NC |
Introduction |
1 |
Familiarity |
4 |
Identify the different types of complexity in a network (edges, core, etc). |
NC |
Networked Applications |
1 |
Familiarity |
1 |
List the differences and the relations between names and addresses in a network. |
NC |
Networked Applications |
1 |
Familiarity |
2 |
Define the principles behind naming schemes and resource location. |
NC |
Networked Applications |
1 |
Usage |
3 |
Implement a simple client-server socket-based application. |
NC |
Reliable Data Delivery |
2 |
Familiarity |
1 |
Describe the operation of reliable delivery protocols. |
NC |
Reliable Data Delivery |
2 |
Familiarity |
2 |
List the factors that affect the performance of reliable delivery protocols. |
NC |
Reliable Data Delivery |
2 |
Usage |
3 |
Design and implement a simple reliable protocol. |
NC |
Routing and Forwarding |
2 |
Familiarity |
1 |
Describe the organization of the network layer. |
NC |
Routing and Forwarding |
2 |
Familiarity |
2 |
Describe how packets are forwarded in an IP network. |
NC |
Routing and Forwarding |
2 |
Familiarity |
3 |
List the scalability benefits of hierarchical addressing. |
NC |
Local Area Networks |
2 |
Familiarity |
1 |
Describe how frames are forwarded in an Ethernet network. |
NC |
Local Area Networks |
2 |
Familiarity |
2 |
Describe the differences between IP and Ethernet. |
NC |
Local Area Networks |
2 |
Familiarity |
3 |
Describe the interrelations between IP and Ethernet. |
NC |
Local Area Networks |
2 |
Familiarity |
4 |
Describe the steps used in one common approach to the multiple access problem. |
NC |
Resource Allocation |
2 |
Familiarity |
1 |
Describe how resources can be allocated in a network. |
NC |
Resource Allocation |
2 |
Familiarity |
2 |
Describe the congestion problem in a large network. |
NC |
Resource Allocation |
2 |
Assessment |
3 |
Compare and contrast fixed and dynamic allocation techniques. |
NC |
Resource Allocation |
2 |
Assessment |
4 |
Compare and contrast current approaches to congestion. |
NC |
Mobility |
2 |
Familiarity |
1 |
Describe the organization of a wireless network. |
NC |
Mobility |
2 |
Familiarity |
2 |
Describe how wireless networks support mobile users. |
NC |
Social Networking |
3 |
Familiarity |
1 |
Discuss the key principles (such as membership, trust) of social networking. |
NC |
Social Networking |
3 |
Familiarity |
2 |
Describe how existing social networks operate. |
NC |
Social Networking |
3 |
Usage |
3 |
Construct a social network graph from network data. |
NC |
Social Networking |
3 |
Usage |
4 |
Analyze a social network to determine who the key people are. |
NC |
Social Networking |
3 |
Assessment |
5 |
Evaluate a given interpretation of a social network question with associated data. |
OS |
Overview of Operating Systems |
1 |
Familiarity |
1 |
Explain the objectives and functions of modern operating systems. |
OS |
Overview of Operating Systems |
1 |
Usage |
2 |
Analyze the tradeoffs inherent in operating system design. |
OS |
Overview of Operating Systems |
1 |
Familiarity |
3 |
Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve. |
OS |
Overview of Operating Systems |
1 |
Familiarity |
4 |
Discuss networked, client-server, distributed operating systems and how they differ from single user operating systems. |
OS |
Overview of Operating Systems |
1 |
Familiarity |
5 |
Identify potential threats to operating systems and the security features design to guard against them. |
OS |
Operating System Principles |
1 |
Familiarity |
1 |
Explain the concept of a logical layer. |
OS |
Operating System Principles |
1 |
Familiarity |
2 |
Explain the benefits of building abstract layers in hierarchical fashion. |
OS |
Operating System Principles |
1 |
Assessment |
3 |
Describe the value of APIs and middleware. |
OS |
Operating System Principles |
1 |
Familiarity |
4 |
Describe how computing resources are used by application software and managed by system software. |
OS |
Operating System Principles |
1 |
Usage |
5 |
Contrast kernel and user mode in an operating system. |
OS |
Operating System Principles |
1 |
Familiarity |
6 |
Discuss the advantages and disadvantages of using interrupt processing. |
OS |
Operating System Principles |
1 |
Familiarity |
7 |
Explain the use of a device list and driver I/O queue. |
OS |
Concurrency |
2 |
Familiarity |
1 |
Describe the need for concurrency within the framework of an operating system. |
OS |
Concurrency |
2 |
Usage |
2 |
Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks. |
OS |
Concurrency |
2 |
Familiarity |
3 |
Summarize the range of mechanisms that can be employed at the operating system level to realize concurrent systems and describe the benefits of each. |
OS |
Concurrency |
2 |
Familiarity |
4 |
Explain the different states that a task may pass through and the data structures needed to support the management of many tasks. |
OS |
Concurrency |
2 |
Familiarity |
5 |
Summarize techniques for achieving synchronization in an operating system (eg, describe how to implement a semaphore using OS primitives). |
OS |
Concurrency |
2 |
Familiarity |
6 |
Describe reasons for using interrupts, dispatching, and context switching to support concurrency in an operating system. |
OS |
Concurrency |
2 |
Usage |
7 |
Create state and transition diagrams for simple problem domains. |
OS |
Scheduling and Dispatch |
2 |
Usage |
1 |
Compare and contrast the common algorithms used for both preemptive and non-preemptive scheduling of tasks in operating systems, such as priority, performance comparison, and fair-share schemes. |
OS |
Scheduling and Dispatch |
2 |
Familiarity |
2 |
Describe relationships between scheduling algorithms and application domains. |
OS |
Scheduling and Dispatch |
2 |
Familiarity |
3 |
Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O. |
OS |
Scheduling and Dispatch |
2 |
Usage |
4 |
Describe the difference between processes and threads. |
OS |
Scheduling and Dispatch |
2 |
Usage |
5 |
Compare and contrast static and dynamic approaches to real-time scheduling. |
OS |
Scheduling and Dispatch |
2 |
Familiarity |
6 |
Discuss the need for preemption and deadline scheduling. |
OS |
Scheduling and Dispatch |
2 |
Usage |
7 |
Identify ways that the logic embodied in scheduling algorithms are applicable to other domains, such as disk I/O, network scheduling, project scheduling, and problems beyond computing. |
OS |
Memory Management |
2 |
Familiarity |
1 |
Explain memory hierarchy and cost-performance trade-offs. |
OS |
Memory Management |
2 |
Familiarity |
2 |
Summarize the principles of virtual memory as applied to caching and paging. |
OS |
Memory Management |
2 |
Assessment |
3 |
Evaluate the trade-offs in terms of memory size (main memory, cache memory, auxiliary memory) and processor speed. |
OS |
Memory Management |
2 |
Assessment |
4 |
Defend the different ways of allocating memory to tasks, citing the relative merits of each. |
OS |
Memory Management |
2 |
Familiarity |
5 |
Describe the reason for and use of cache memory (performance and proximity, different dimension of how caches complicate isolation and VM abstraction). |
OS |
Memory Management |
2 |
Familiarity |
6 |
Discuss the concept of thrashing, both in terms of the reasons it occurs and the techniques used to recognize and manage the problem. |
OS |
Security and Protection |
2 |
Assessment |
1 |
Articulate the need for protection and security in an OS (cross reference IAS/Security Architecture and Systems Administration/Investigating Operating Systems Security for various systems). |
OS |
Security and Protection |
2 |
Familiarity |
2 |
Summarize the features and limitations of an operating system used to provide protection and security (cross reference IAS/Security Architecture and Systems Administration). |
OS |
Security and Protection |
2 |
Familiarity |
3 |
Explain the mechanisms available in an OS to control access to resources (cross reference IAS/Security Architecture and Systems Administration/Access Control/Configuring systems to operate securely as an IT system). |
OS |
Security and Protection |
2 |
Usage |
4 |
Carry out simple system administration tasks according to a security policy, for example creating accounts, setting permissions, applying patches, and arranging for regular backups (cross reference IAS/Security Architecture and Systems Administration ). |
OS |
Virtual Machines |
3 |
Familiarity |
1 |
Explain the concept of virtual memory and how it is realized in hardware and software. |
OS |
Virtual Machines |
3 |
Familiarity |
2 |
Differentiate emulation and isolation. |
OS |
Virtual Machines |
3 |
Assessment |
3 |
Evaluate virtualization trade-offs. |
OS |
Virtual Machines |
3 |
Usage |
4 |
Discuss hypervisors and the need for them in conjunction with different types of hypervisors. |
OS |
Device Management |
3 |
Familiarity |
1 |
Explain the key difference between serial and parallel devices and identify the conditions in which each is appropriate. |
OS |
Device Management |
3 |
Usage |
2 |
Identify the relationship between the physical hardware and the virtual devices maintained by the operating system. |
OS |
Device Management |
3 |
Familiarity |
3 |
Explain buffering and describe strategies for implementing it. |
OS |
Device Management |
3 |
Usage |
4 |
Differentiate the mechanisms used in interfacing a range of devices (including hand-held devices, networks, multimedia) to a computer and explain the implications of these for the design of an operating system. |
OS |
Device Management |
3 |
Usage |
5 |
Describe the advantages and disadvantages of direct memory access and discuss the circumstances in which its use is warranted. |
OS |
Device Management |
3 |
Familiarity |
6 |
Identify the requirements for failure recovery. |
OS |
Device Management |
3 |
Usage |
7 |
Implement a simple device driver for a range of possible devices. |
OS |
File Systems |
3 |
Familiarity |
1 |
Describe the choices to be made in designing file systems. |
OS |
File Systems |
3 |
Usage |
2 |
Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each. |
OS |
File Systems |
3 |
Familiarity |
3 |
Summarize how hardware developments have led to changes in the priorities for the design and the management of file systems. |
OS |
File Systems |
3 |
Familiarity |
4 |
Summarize the use of journaling and how log-structured file systems enhance fault tolerance. |
OS |
Real Time and Embedded Systems |
3 |
Familiarity |
1 |
Describe what makes a system a real-time system. |
OS |
Real Time and Embedded Systems |
3 |
Familiarity |
2 |
Explain the presence of and describe the characteristics of latency in real-time systems. |
OS |
Real Time and Embedded Systems |
3 |
Familiarity |
3 |
Summarize special concerns that real-time systems present, including risk, and how these concerns are addressed. |
OS |
Fault Tolerance |
3 |
Familiarity |
1 |
Explain the relevance of the terms fault tolerance, reliability, and availability. |
OS |
Fault Tolerance |
3 |
Familiarity |
2 |
Outline the range of methods for implementing fault tolerance in an operating system. |
OS |
Fault Tolerance |
3 |
Familiarity |
3 |
Explain how an operating system can continue functioning after a fault occurs. |
OS |
System Performance Evaluation |
3 |
Familiarity |
1 |
Describe the performance measurements used to determine how a system performs. |
OS |
System Performance Evaluation |
3 |
Familiarity |
2 |
Explain the main evaluation models used to evaluate a system. |
PBD |
Introduction |
3 |
Familiarity |
1 |
Describe how platform-based development differs from general purpose programming. |
PBD |
Introduction |
3 |
Familiarity |
2 |
List characteristics of platform languages. |
PBD |
Introduction |
3 |
Usage |
3 |
Write and execute a simple platform-based program. |
PBD |
Introduction |
3 |
Familiarity |
4 |
List the advantages and disadvantages of programming with platform constraints. |
PBD |
Web Platforms |
3 |
Usage |
1 |
Design and Implement a simple web application. |
PBD |
Web Platforms |
3 |
Familiarity |
2 |
Describe the constraints that the web puts on developers. |
PBD |
Web Platforms |
3 |
Assessment |
3 |
Compare and contrast web programming with general purpose programming. |
PBD |
Web Platforms |
3 |
Familiarity |
4 |
Describe the differences between Software-as-a-Service and traditional software products. |
PBD |
Web Platforms |
3 |
Familiarity |
5 |
Discuss how web standards impact software development. |
PBD |
Web Platforms |
3 |
Assessment |
6 |
Review an existing web application against a current web standard. |
PBD |
Mobile Platforms |
3 |
Usage |
1 |
Design and implement a mobile application for a given mobile platform. |
PBD |
Mobile Platforms |
3 |
Familiarity |
2 |
Discuss the constraints that mobile platforms put on developers. |
PBD |
Mobile Platforms |
3 |
Familiarity |
3 |
Discuss the performance vs power tradeoff. |
PBD |
Mobile Platforms |
3 |
Assessment |
4 |
Compare and Contrast mobile programming with general purpose programming. |
PBD |
Industrial Platforms |
3 |
Usage |
1 |
Design and implement an industrial application on a given platform (eg, using Lego Mindstorms or Matlab). |
PBD |
Industrial Platforms |
3 |
Assessment |
2 |
Compare and contrast domain specific languages with general purpose programming languages. |
PBD |
Industrial Platforms |
3 |
Familiarity |
3 |
Discuss the constraints that a given industrial platforms impose on developers. |
PBD |
Game Platforms |
3 |
Usage |
1 |
Design and Implement a simple application on a game platform. |
PBD |
Game Platforms |
3 |
Familiarity |
2 |
Describe the constraints that game platforms impose on developers. |
PBD |
Game Platforms |
3 |
Assessment |
3 |
Compare and contrast game programming with general purpose programming. |
PD |
Parallelism Fundamentals |
1 |
Familiarity |
1 |
Distinguish using computational resources for a faster answer from managing efficient access to a shared resource. |
PD |
Parallelism Fundamentals |
1 |
Familiarity |
2 |
Distinguish multiple sufficient programming constructs for synchronization that may be inter-implementable but have complementary advantages. |
PD |
Parallelism Fundamentals |
1 |
Familiarity |
3 |
Distinguish data races from higher level races. |
PD |
Parallel Decomposition |
1 |
Usage |
1 |
Explain why synchronization is necessary in a specific parallel program. |
PD |
Parallel Decomposition |
2 |
Familiarity |
2 |
Identify opportunities to partition a serial program into independent parallel modules. |
PD |
Parallel Decomposition |
2 |
Usage |
3 |
Write a correct and scalable parallel algorithm. |
PD |
Parallel Decomposition |
2 |
Usage |
4 |
Parallelize an algorithm by applying task-based decomposition. |
PD |
Parallel Decomposition |
2 |
Usage |
5 |
Parallelize an algorithm by applying data-parallel decomposition. |
PD |
Parallel Decomposition |
2 |
Usage |
6 |
Write a program using actors and/or reactive processes. |
PD |
Communication and Coordination |
1 |
Usage |
1 |
Use mutual exclusion to avoid a given race condition. |
PD |
Communication and Coordination |
2 |
Familiarity |
2 |
Give an example of an ordering of accesses among concurrent activities (eg, program with a data race) that is not sequentially consistent. |
PD |
Communication and Coordination |
2 |
Usage |
3 |
Give an example of a scenario in which blocking message sends can deadlock. |
PD |
Communication and Coordination |
2 |
Familiarity |
4 |
Explain when and why multicast or event-based messaging can be preferable to alternatives. |
PD |
Communication and Coordination |
2 |
Usage |
5 |
Write a program that correctly terminates when all of a set of concurrent tasks have completed. |
PD |
Communication and Coordination |
2 |
Usage |
6 |
Use a properly synchronized queue to buffer data passed among activities. |
PD |
Communication and Coordination |
2 |
Familiarity |
7 |
Explain why checks for preconditions, and actions based on these checks, must share the same unit of atomicity to be effective. |
PD |
Communication and Coordination |
2 |
Usage |
8 |
Write a test program that can reveal a concurrent programming error; for example, missing an update when two activities both try to increment a variable. |
PD |
Communication and Coordination |
2 |
Familiarity |
9 |
Describe at least one design technique for avoiding liveness failures in programs using multiple locks or semaphores. |
PD |
Communication and Coordination |
2 |
Familiarity |
10 |
Describe the relative merits of optimistic versus conservative concurrency control under different rates of contention among updates. |
PD |
Communication and Coordination |
2 |
Familiarity |
11 |
Give an example of a scenario in which an attempted optimistic update may never complete. |
PD |
Communication and Coordination |
3 |
Usage |
12 |
Use semaphores or condition variables to block threads until a necessary precondition holds. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Familiarity |
1 |
Define “critical path”, “work”, and “span”. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Usage |
2 |
Compute the work and span, and determine the critical path with respect to a parallel execution diagram. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Familiarity |
3 |
Define “speed-up” and explain the notion of an algorithm’s scalability in this regard. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Usage |
4 |
Identify independent tasks in a program that may be parallelized. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Familiarity |
5 |
Characterize features of a workload that allow or prevent it from being naturally parallelized. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Usage |
6 |
Implement a parallel divide-and-conquer (and/or graph algorithm) and empirically measure its performance relative to its sequential analog. |
PD |
Parallel Algorithms, Analysis, and Programming |
2 |
Usage |
7 |
Decompose a problem (eg, counting the number of occurrences of some word in a document) via map and reduce operations. |
PD |
Parallel Algorithms, Analysis, and Programming |
3 |
Familiarity |
8 |
Provide an example of a problem that fits the producer-consumer paradigm. |
PD |
Parallel Algorithms, Analysis, and Programming |
3 |
Familiarity |
9 |
Give examples of problems where pipelining would be an effective means of parallelization. |
PD |
Parallel Algorithms, Analysis, and Programming |
3 |
Usage |
10 |
Implement a parallel matrix algorithm. |
PD |
Parallel Algorithms, Analysis, and Programming |
3 |
Familiarity |
11 |
Identify issues that arise in producer-consumer algorithms and mechanisms that may be used for addressing them. |
PD |
Parallel Architecture |
1 |
Familiarity |
1 |
Explain the differences between shared and distributed memory. |
PD |
Parallel Architecture |
2 |
Familiarity |
2 |
Describe the SMP architecture and note its key features. |
PD |
Parallel Architecture |
2 |
Familiarity |
3 |
Characterize the kinds of tasks that are a natural match for SIMD machines. |
PD |
Parallel Architecture |
3 |
Familiarity |
4 |
Describe the advantages and limitations of GPUs vs CPUs. |
PD |
Parallel Architecture |
3 |
Familiarity |
5 |
Explain the features of each classification in Flynn’s taxonomy. |
PD |
Parallel Architecture |
3 |
Familiarity |
6 |
Describe assembly-level support for atomic operations. |
PD |
Parallel Architecture |
3 |
Familiarity |
7 |
Describe the challenges in maintaining cache coherence. |
PD |
Parallel Architecture |
3 |
Familiarity |
8 |
Describe the key performance challenges in different memory and distributed system topologies. |
PD |
Parallel Performance |
3 |
Usage |
1 |
Detect and correct a load imbalance. |
PD |
Parallel Performance |
3 |
Usage |
2 |
Calculate the implications of Amdahl’s law for a particular parallel algorithm (cross-reference SF/Evaluation for Amdahl’s Law). |
PD |
Parallel Performance |
3 |
Familiarity |
3 |
Describe how data distribution/layout can affect an algorithm’s communication costs. |
PD |
Parallel Performance |
3 |
Usage |
4 |
Detect and correct an instance of false sharing. |
PD |
Parallel Performance |
3 |
Familiarity |
5 |
Explain the impact of scheduling on parallel performance. |
PD |
Parallel Performance |
3 |
Familiarity |
6 |
Explain performance impacts of data locality. |
PD |
Parallel Performance |
3 |
Familiarity |
7 |
Explain the impact and trade-off related to power usage on parallel performance. |
PD |
Distributed Systems |
3 |
Familiarity |
1 |
Distinguish network faults from other kinds of failures. |
PD |
Distributed Systems |
3 |
Familiarity |
2 |
Explain why synchronization constructs such as simple locks are not useful in the presence of distributed faults. |
PD |
Distributed Systems |
3 |
Usage |
3 |
Write a program that performs any required marshalling and conversion into message units, such as packets, to communicate interesting data between two hosts. |
PD |
Distributed Systems |
3 |
Usage |
4 |
Measure the observed throughput and response latency across hosts in a given network. |
PD |
Distributed Systems |
3 |
Familiarity |
5 |
Explain why no distributed system can be simultaneously consistent, available, and partition tolerant. |
PD |
Distributed Systems |
3 |
Usage |
6 |
Implement a simple server – for example, a spell checking service. |
PD |
Distributed Systems |
3 |
Familiarity |
7 |
Explain the tradeoffs among overhead, scalability, and fault tolerance when choosing a stateful v stateless design for a given service. |
PD |
Distributed Systems |
3 |
Familiarity |
8 |
Describe the scalability challenges associated with a service growing to accommodate many clients, as well as those associated with a service only transiently having many clients. |
PD |
Distributed Systems |
3 |
Usage |
9 |
Give examples of problems for which consensus algorithms such as leader election are required. |
PD |
Cloud Computing |
3 |
Familiarity |
1 |
Discuss the importance of elasticity and resource management in cloud computing. |
PD |
Cloud Computing |
3 |
Familiarity |
2 |
Explain strategies to synchronize a common view of shared data across a collection of devices. |
PD |
Cloud Computing |
3 |
Familiarity |
3 |
Explain the advantages and disadvantages of using virtualized infrastructure. |
PD |
Cloud Computing |
3 |
Usage |
4 |
Deploy an application that uses cloud infrastructure for computing and/or data resources. |
PD |
Cloud Computing |
3 |
Usage |
5 |
Appropriately partition an application between a client and resources. |
PD |
Formal Models and Semantics |
3 |
Usage |
1 |
Model a concurrent process using a formal model, such as pi-calculus. |
PD |
Formal Models and Semantics |
3 |
Familiarity |
2 |
Explain the characteristics of a particular formal parallel model. |
PD |
Formal Models and Semantics |
3 |
Usage |
3 |
Formally model a shared memory system to show if it is consistent. |
PD |
Formal Models and Semantics |
3 |
Usage |
4 |
Use a model to show progress guarantees in a parallel algorithm. |
PD |
Formal Models and Semantics |
3 |
Usage |
5 |
Use formal techniques to show that a parallel algorithm is correct with respect to a safety or liveness property. |
PD |
Formal Models and Semantics |
3 |
Usage |
6 |
Decide if a specific execution is linearizable or not. |
PL |
Object-Oriented Programming |
1 |
Usage |
1 |
Design and implement a class. |
PL |
Object-Oriented Programming |
1 |
Usage |
2 |
Use subclassing to design simple class hierarchies that allow code to be reused for distinct subclasses. |
PL |
Object-Oriented Programming |
1 |
Usage |
3 |
Correctly reason about control flow in a program using dynamic dispatch. |
PL |
Object-Oriented Programming |
2 |
Assessment |
4 |
Compare and contrast (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 Understand both as defining a matrix of operations and variants. |
PL |
Object-Oriented Programming |
2 |
Familiarity |
5 |
Explain the relationship between object-oriented inheritance (code-sharing and overriding) and subtyping (the idea of a subtype being usable in a context that expects the supertype). |
PL |
Object-Oriented Programming |
2 |
Usage |
6 |
Use object-oriented encapsulation mechanisms such as interfaces and private members. |
PL |
Object-Oriented Programming |
2 |
Usage |
7 |
Define and use iterators and other operations on aggregates, including operations that take functions as arguments, in multiple programming languages, selecting the most natural idioms for each language. |
PL |
Functional Programming |
1 |
Usage |
1 |
Write basic algorithms that avoid assigning to mutable state or considering reference equality. |
PL |
Functional Programming |
1 |
Usage |
2 |
Write useful functions that take and return other functions. |
PL |
Functional Programming |
1 |
Assessment |
3 |
Compare and contrast (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 Understand both as defining a matrix of operations and variants. |
PL |
Functional Programming |
2 |
Usage |
4 |
Correctly reason about variables and lexical scope in a program using function closures. |
PL |
Functional Programming |
2 |
Usage |
5 |
Use functional encapsulation mechanisms such as closures and modular interfaces. |
PL |
Functional Programming |
2 |
Usage |
6 |
Define and use iterators and other operations on aggregates, including operations that take functions as arguments, in multiple programming languages, selecting the most natural idioms for each language. |
PL |
Event-Driven and Reactive Programming |
2 |
Usage |
1 |
Write event handlers for use in reactive systems, such as GUIs. |
PL |
Event-Driven and Reactive Programming |
2 |
Familiarity |
2 |
Explain why an event-driven programming style is natural in domains where programs react to external events. |
PL |
Event-Driven and Reactive Programming |
2 |
Familiarity |
3 |
Describe an interactive system in terms of a model, a view, and a controller. |
PL |
Basic Type Systems |
1 |
Familiarity |
1 |
For both a primitive and a compound type, informally describe the values that have that type. |
PL |
Basic Type Systems |
1 |
Familiarity |
2 |
For a language with a static type system, describe the operations that are forbidden statically, such as passing the wrong type of value to a function or method. |
PL |
Basic Type Systems |
1 |
Familiarity |
3 |
Describe examples of program errors detected by a type system. |
PL |
Basic Type Systems |
1 |
Usage |
4 |
For multiple programming languages, identify program properties checked statically and program properties checked dynamically. |
PL |
Basic Type Systems |
1 |
Familiarity |
5 |
Give an example program that does not type-check in a particular language and yet would have no error if run. |
PL |
Basic Type Systems |
1 |
Usage |
6 |
Use types and type-error messages to write and debug programs. |
PL |
Basic Type Systems |
2 |
Familiarity |
7 |
Explain how typing rules define the set of operations that are legal for a type. |
PL |
Basic Type Systems |
2 |
Usage |
8 |
Write down the type rules governing the use of a particular compound type. |
PL |
Basic Type Systems |
2 |
Familiarity |
9 |
Explain why undecidability requires type systems to conservatively approximate program behavior. |
PL |
Basic Type Systems |
2 |
Usage |
10 |
Define and use program pieces (such as functions, classes, methods) that use generic types, including for collections. |
PL |
Basic Type Systems |
2 |
Familiarity |
11 |
Discuss the differences among generics, subtyping, and overloading. |
PL |
Basic Type Systems |
2 |
Familiarity |
12 |
Explain multiple benefits and limitations of static typing in writing, maintaining, and debugging software. |
PL |
Program Representation |
2 |
Familiarity |
1 |
Explain how programs that process other programs treat the other programs as their input data. |
PL |
Program Representation |
2 |
Usage |
2 |
Describe an abstract syntax tree for a small language. |
PL |
Program Representation |
2 |
Familiarity |
3 |
Describe the benefits of having program representations other than strings of source code. |
PL |
Program Representation |
2 |
Usage |
4 |
Write a program to process some representation of code for some purpose, such as an interpreter, an expression optimizer, or a documentation generator. |
PL |
Language Translation and Execution |
2 |
Familiarity |
1 |
Distinguish a language definition (what constructs mean) from a particular language implementation (compiler vs interpreter, run-time representation of data objects, etc). |
PL |
Language Translation and Execution |
2 |
Familiarity |
2 |
Distinguish syntax and parsing from semantics and evaluation. |
PL |
Language Translation and Execution |
2 |
Familiarity |
3 |
Sketch a low-level run-time representation of core language constructs, such as objects or closures. |
PL |
Language Translation and Execution |
2 |
Familiarity |
4 |
Explain how programming language implementations typically organize memory into global data, text, heap, and stack sections and how features such as recursion and memory management map to this memory model. |
PL |
Language Translation and Execution |
2 |
Usage |
5 |
Identify and fix memory leaks and dangling-pointer dereferences. |
PL |
Language Translation and Execution |
2 |
Familiarity |
6 |
Discuss the benefits and limitations of garbage collection, including the notion of reachability. |
PL |
Syntax Analysis |
3 |
Usage |
1 |
Use formal grammars to specify the syntax of languages. |
PL |
Syntax Analysis |
3 |
Usage |
2 |
Use declarative tools to generate parsers and scanners. |
PL |
Syntax Analysis |
3 |
Familiarity |
3 |
Identify key issues in syntax definitions: ambiguity, associativity, precedence. |
PL |
Compiler Semantic Analysis |
3 |
Usage |
1 |
Implement context-sensitive, source-level static analyses such as type-checkers or resolving identifiers to identify their binding occurrences. |
PL |
Compiler Semantic Analysis |
3 |
Usage |
2 |
Describe semantic analyses using an attribute grammar. |
PL |
Code Generation |
3 |
Familiarity |
1 |
Identify all essential steps for automatically converting source code into assembly or other low-level languages. |
PL |
Code Generation |
3 |
Usage |
2 |
Generate the low-level code for calling functions/methods in modern languages. |
PL |
Code Generation |
3 |
Familiarity |
3 |
Discuss why separate compilation requires uniform calling conventions. |
PL |
Code Generation |
3 |
Familiarity |
4 |
Discuss why separate compilation limits optimization because of unknown effects of calls. |
PL |
Code Generation |
3 |
Familiarity |
5 |
Discuss opportunities for optimization introduced by naive translation and approaches for achieving optimization, such as instruction selection, instruction scheduling, register allocation, and peephole optimization. |
PL |
Runtime Systems |
3 |
Familiarity |
1 |
Compare the benefits of different memory-management schemes, using concepts such as fragmentation, locality, and memory overhead. |
PL |
Runtime Systems |
3 |
Familiarity |
2 |
Discuss benefits and limitations of automatic memory management. |
PL |
Runtime Systems |
3 |
Familiarity |
3 |
Explain the use of metadata in run-time representations of objects and activation records, such as class pointers, array lengths, return addresses, and frame pointers. |
PL |
Runtime Systems |
3 |
Familiarity |
4 |
Discuss advantages, disadvantages, and difficulties of just-in-time and dynamic recompilation. |
PL |
Runtime Systems |
3 |
Familiarity |
5 |
Identify the services provided by modern language run-time systems. |
PL |
Static Analysis |
3 |
Usage |
1 |
Define useful static analyses in terms of a conceptual framework such as dataflow analysis. |
PL |
Static Analysis |
3 |
Familiarity |
2 |
Explain why non-trivial sound static analyses must be approximate. |
PL |
Static Analysis |
3 |
Usage |
3 |
Communicate why an analysis is correct (sound and terminating). |
PL |
Static Analysis |
3 |
Familiarity |
4 |
Distinguish “may” and “must” analyses. |
PL |
Static Analysis |
3 |
Familiarity |
5 |
Explain why potential aliasing limits sound program analysis and how alias analysis can help. |
PL |
Static Analysis |
3 |
Usage |
6 |
Use the results of a static analysis for program optimization and/or partial program correctness. |
PL |
Advanced Programming Constructs |
3 |
Usage |
1 |
Use various advanced programming constructs and idioms correctly. |
PL |
Advanced Programming Constructs |
3 |
Familiarity |
2 |
Discuss how various advanced programming constructs aim to improve program structure, software quality, and programmer productivity. |
PL |
Advanced Programming Constructs |
3 |
Familiarity |
3 |
Discuss how various advanced programming constructs interact with the definition and implementation of other language features. |
PL |
Concurrency and Parallelism |
3 |
Usage |
1 |
Write correct concurrent programs using multiple programming models, such as shared memory, actors, futures, and data-parallelism primitives. |
PL |
Concurrency and Parallelism |
3 |
Usage |
2 |
Use a message-passing model to analyze a communication protocol. |
PL |
Concurrency and Parallelism |
3 |
Familiarity |
3 |
Explain why programming languages do not guarantee sequential consistency in the presence of data races and what programmers must do as a result. |
PL |
Type Systems |
3 |
Usage |
1 |
Define a type system precisely and compositionally. |
PL |
Type Systems |
3 |
Familiarity |
2 |
For various foundational type constructors, identify the values they describe and the invariants they enforce. |
PL |
Type Systems |
3 |
Familiarity |
3 |
Precisely specify the invariants preserved by a sound type system. |
PL |
Type Systems |
3 |
Usage |
4 |
Prove type safety for a simple language in terms of preservation and progress theorems. |
PL |
Type Systems |
3 |
Usage |
5 |
Implement a unification-based type-inference algorithm for a simple language. |
PL |
Type Systems |
3 |
Familiarity |
6 |
Explain how static overloading and associated resolution algorithms influence the dynamic behavior of programs. |
PL |
Formal Semantics |
3 |
Usage |
1 |
Give a formal semantics for a small language. |
PL |
Formal Semantics |
3 |
Usage |
2 |
Write a lambda-calculus program and show its evaluation to a normal form. |
PL |
Formal Semantics |
3 |
Familiarity |
3 |
Discuss the different approaches of operational, denotational, and axiomatic semantics. |
PL |
Formal Semantics |
3 |
Usage |
4 |
Use induction to prove properties of all programs in a language. |
PL |
Formal Semantics |
3 |
Usage |
5 |
Use induction to prove properaties of all programs in a language that are well-typed according to a formally defined type system. |
PL |
Formal Semantics |
3 |
Usage |
6 |
Use parametricity to establish the behavior of code given only its type. |
PL |
Formal Semantics |
3 |
Usage |
7 |
Use formal semantics to build a formal model of a software system other than a programming language. |
PL |
Language Pragmatics |
3 |
Familiarity |
1 |
Discuss the role of concepts such as orthogonality and well-chosen defaults in language design. |
PL |
Language Pragmatics |
3 |
Usage |
2 |
Use crisp and objective criteria for evaluating language-design decisions. |
PL |
Language Pragmatics |
3 |
Usage |
3 |
Give an example program whose result can differ under different rules for evaluation order, precedence, or associativity. |
PL |
Language Pragmatics |
3 |
Familiarity |
4 |
Show uses of delayed evaluation, such as user-defined control abstractions. |
PL |
Language Pragmatics |
3 |
Familiarity |
5 |
Discuss the need for allowing calls to external calls and system libraries and the consequences for language implementation. |
PL |
Logic Programming |
3 |
Usage |
1 |
Use a logic language to implement a conventional algorithm. |
PL |
Logic Programming |
3 |
Usage |
2 |
Use a logic language to implement an algorithm employing implicit search using clauses, relations, and cuts. |
SDF |
Algorithms and Design |
1 |
Familiarity |
1 |
Discuss the importance of algorithms in the problem-solving process. |
SDF |
Algorithms and Design |
1 |
Familiarity |
2 |
Discuss how a problem may be solved by multiple algorithms, each with different properties. |
SDF |
Algorithms and Design |
1 |
Usage |
3 |
Create algorithms for solving simple problems. |
SDF |
Algorithms and Design |
1 |
Usage |
4 |
Use a programming language to implement, test, and debug algorithms for solving simple problems. |
SDF |
Algorithms and Design |
1 |
Usage |
5 |
Implement, test, and debug simple recursive functions and procedures. |
SDF |
Algorithms and Design |
1 |
Assessment |
6 |
Determine whether a recursive or iterative solution is most appropriate for a problem. |
SDF |
Algorithms and Design |
1 |
Usage |
7 |
Implement a divide-and-conquer algorithm for solving a problem. |
SDF |
Algorithms and Design |
1 |
Usage |
8 |
Apply the techniques of decomposition to break a program into smaller pieces. |
SDF |
Algorithms and Design |
1 |
Usage |
9 |
Identify the data components and behaviors of multiple abstract data types. |
SDF |
Algorithms and Design |
1 |
Usage |
10 |
Implement a coherent abstract data type, with loose coupling between components and behaviors. |
SDF |
Algorithms and Design |
1 |
Assessment |
11 |
Identify the relative strengths and weaknesses among multiple designs or implementations for a problem. |
SDF |
Fundamental Programming Concepts |
1 |
Assessment |
1 |
Analyze and explain the behavior of simple programs involving the fundamental programming constructs variables, expressions, assignments, I/O, control constructs, functions, parameter passing, and recursion. |
SDF |
Fundamental Programming Concepts |
1 |
Familiarity |
2 |
Identify and describe uses of primitive data types. |
SDF |
Fundamental Programming Concepts |
1 |
Usage |
3 |
Write programs that use primitive data types. |
SDF |
Fundamental Programming Concepts |
1 |
Usage |
4 |
Modify and expand short programs that use standard conditional and iterative control structures and functions. |
SDF |
Fundamental Programming Concepts |
1 |
Usage |
5 |
Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, the definition of functions, and parameter passing. |
SDF |
Fundamental Programming Concepts |
1 |
Usage |
6 |
Write a program that uses file I/O to provide persistence across multiple executions. |
SDF |
Fundamental Programming Concepts |
1 |
Assessment |
7 |
Choose appropriate conditional and iteration constructs for a given programming task. |
SDF |
Fundamental Programming Concepts |
1 |
Familiarity |
8 |
Describe the concept of recursion and give examples of its use. |
SDF |
Fundamental Programming Concepts |
1 |
Assessment |
9 |
Identify the base case and the general case of a recursively-defined problem. |
SDF |
Fundamental Data Structures |
1 |
Familiarity |
1 |
Discuss the appropriate use of built-in data structures. |
SDF |
Fundamental Data Structures |
1 |
Familiarity |
2 |
Describe common applications for each of the following data structures: stack, queue, priority queue, set, and map. |
SDF |
Fundamental Data Structures |
1 |
Usage |
3 |
Write programs that use each of the following data structures: arrays, records/structs, strings, linked lists, stacks, queues, sets, and maps. |
SDF |
Fundamental Data Structures |
1 |
Assessment |
4 |
Compare alternative implementations of data structures with respect to performance. |
SDF |
Fundamental Data Structures |
1 |
Familiarity |
5 |
Describe how references allow for objects to be accessed in multiple ways. |
SDF |
Fundamental Data Structures |
1 |
Assessment |
6 |
Compare and contrast the costs and benefits of dynamic and static data structure implementations. |
SDF |
Fundamental Data Structures |
1 |
Assessment |
7 |
Choose the appropriate data structure for modeling a given problem. |
SDF |
Development Methods |
1 |
Assessment |
1 |
Trace the execution of a variety of code segments and write summaries of their computations. |
SDF |
Development Methods |
1 |
Familiarity |
2 |
Explain why the creation of correct program components is important in the production of high-quality software. |
SDF |
Development Methods |
1 |
Usage |
3 |
Identify common coding errors that lead to insecure programs (eg, buffer overflows, memory leaks, malicious code) and apply strategies for avoiding such errors. |
SDF |
Development Methods |
1 |
Usage |
4 |
Conduct a personal code review (focused on common coding errors) on a program component using a provided checklist. |
SDF |
Development Methods |
1 |
Usage |
5 |
Contribute to a small-team code review focused on component correctness. |
SDF |
Development Methods |
1 |
Familiarity |
6 |
Describe how a contract can be used to specify the behavior of a program component. |
SDF |
Development Methods |
1 |
Usage |
7 |
Refactor a program by identifying opportunities to apply procedural abstraction. |
SDF |
Development Methods |
1 |
Usage |
8 |
Apply a variety of strategies to the testing and debugging of simple programs. |
SDF |
Development Methods |
1 |
Usage |
9 |
Construct, execute and debug programs using a modern IDE and associated tools such as unit testing tools and visual debuggers. |
SDF |
Development Methods |
1 |
Usage |
10 |
Construct and debug programs using the standard libraries available with a chosen programming language. |
SDF |
Development Methods |
1 |
Assessment |
11 |
Analyze the extent to which another programmer’s code meets documentation and programming style standards. |
SDF |
Development Methods |
1 |
Usage |
12 |
Apply consistent documentation and program style standards that contribute to the readability and maintainability of software. |
SE |
Software Processes |
1 |
Familiarity |
1 |
Describe how software can interact with and participate in various systems including information management, embedded, process control, and communications systems. |
SE |
Software Processes |
1 |
Familiarity |
2 |
Describe the relative advantages and disadvantages among several major process models (eg, waterfall, iterative, and agile). |
SE |
Software Processes |
1 |
Familiarity |
3 |
Describe the different practices that are key components of various process models. |
SE |
Software Processes |
1 |
Familiarity |
4 |
Differentiate among the phases of software development. |
SE |
Software Processes |
1 |
Familiarity |
5 |
Describe how programming in the large differs from individual efforts with respect to understanding a large code base, code reading, understanding builds, and understanding context of changes. |
SE |
Software Processes |
2 |
Familiarity |
6 |
Explain the concept of a software lifecycle and provide an example, illustrating its phases including the deliverables that are produced. |
SE |
Software Processes |
2 |
Usage |
7 |
Compare several common process models with respect to their value for development of particular classes of software systems taking into account issues such as requirement stability, size, and non-functional characteristics. |
SE |
Software Processes |
3 |
Familiarity |
8 |
Define software quality and describe the role of quality assurance activities in the software process. |
SE |
Software Processes |
3 |
Familiarity |
9 |
Describe the intent and fundamental similarities among process improvement approaches. |
SE |
Software Processes |
3 |
Assessment |
10 |
Compare several process improvement models such as CMM, CMMI, CQI, Plan-Do-Check-Act, or ISO9000. |
SE |
Software Processes |
3 |
Usage |
11 |
Assess a development effort and recommend potential changes by participating in process improvement (using a model such as PSP) or engaging in a project retrospective. |
SE |
Software Processes |
3 |
Familiarity |
12 |
Explain the role of process maturity models in process improvement. |
SE |
Software Processes |
3 |
Familiarity |
13 |
Describe several process metrics for assessing and controlling a project. |
SE |
Software Processes |
3 |
Usage |
14 |
Use project metrics to describe the current state of a project. |
SE |
Software Project Management |
2 |
Familiarity |
1 |
Discuss common behaviors that contribute to the effective functioning of a team. |
SE |
Software Project Management |
2 |
Usage |
2 |
Create and follow an agenda for a team meeting. |
SE |
Software Project Management |
2 |
Usage |
3 |
Identify and justify necessary roles in a software development team. |
SE |
Software Project Management |
2 |
Usage |
4 |
Understand the sources, hazards, and potential benefits of team conflict. |
SE |
Software Project Management |
2 |
Usage |
5 |
Apply a conflict resolution strategy in a team setting. |
SE |
Software Project Management |
2 |
Usage |
6 |
Use an ad hoc method to estimate software development effort (eg, time) and compare to actual effort required. |
SE |
Software Project Management |
2 |
Familiarity |
7 |
List several examples of software risks. |
SE |
Software Project Management |
2 |
Familiarity |
8 |
Describe the impact of risk in a software development lifecycle. |
SE |
Software Project Management |
2 |
Familiarity |
9 |
Describe different categories of risk in software systems. |
SE |
Software Project Management |
3 |
Usage |
10 |
Demonstrate through involvement in a team project the central elements of team building and team management. |
SE |
Software Project Management |
3 |
Familiarity |
11 |
Describe how the choice of process model affects team organizational structures and decision-making processes. |
SE |
Software Project Management |
3 |
Usage |
12 |
Create a team by identifying appropriate roles and assigning roles to team members. |
SE |
Software Project Management |
3 |
Usage |
13 |
Assess and provide feedback to teams and individuals on their performance in a team setting. |
SE |
Software Project Management |
3 |
Familiarity |
14 |
Using a particular software process, describe the aspects of a project that need to be planned and monitored, (eg, estimates of size and effort, a schedule, resource allocation, configuration control, change management, and project risk identification and management). |
SE |
Software Project Management |
3 |
Usage |
15 |
Track the progress of some stage in a project using appropriate project metrics. |
SE |
Software Project Management |
3 |
Usage |
16 |
Compare simple software size and cost estimation techniques. |
SE |
Software Project Management |
3 |
Usage |
17 |
Use a project management tool to assist in the assignment and tracking of tasks in a software development project. |
SE |
Software Project Management |
3 |
Assessment |
18 |
Describe the impact of risk tolerance on the software development process. |
SE |
Software Project Management |
3 |
Familiarity |
19 |
Identify risks and describe approaches to managing risk (avoidance, acceptance, transference, mitigation), and characterize the strengths and shortcomings of each. |
SE |
Software Project Management |
3 |
Usage |
20 |
Explain how risk affects decisions in the software development process. |
SE |
Software Project Management |
3 |
Usage |
21 |
Identify security risks for a software system. |
SE |
Software Project Management |
3 |
Usage |
22 |
Demonstrate a systematic approach to the task of identifying hazards and risks in a particular situation. |
SE |
Software Project Management |
3 |
Usage |
23 |
Apply the basic principles of risk management in a variety of simple scenarios including a security situation. |
SE |
Software Project Management |
3 |
Usage |
24 |
Conduct a cost/benefit analysis for a risk mitigation approach. |
SE |
Software Project Management |
3 |
Usage |
25 |
Identify and analyze some of the risks for an entire system that arise from aspects other than the software. |
SE |
Tools and Environments |
2 |
Familiarity |
1 |
Describe the difference between centralized and distributed software configuration management. |
SE |
Tools and Environments |
2 |
Familiarity |
2 |
Describe how version control can be used to help manage software release management. |
SE |
Tools and Environments |
2 |
Usage |
3 |
Identify configuration items and use a source code control tool in a small team-based project. |
SE |
Tools and Environments |
2 |
Familiarity |
4 |
Describe how available static and dynamic test tools can be integrated into the software development environment. |
SE |
Tools and Environments |
2 |
Familiarity |
5 |
Describe the issues that are important in selecting a set of tools for the development of a particular software system, including tools for requirements tracking, design modeling, implementation, build automation, and testing. |
SE |
Tools and Environments |
2 |
Usage |
6 |
Demonstrate the capability to use software tools in support of the development of a software product of medium size. |
SE |
Requirements Engineering |
1 |
Familiarity |
1 |
List the key components of a use case or similar description of some behavior that is required for a system. |
SE |
Requirements Engineering |
1 |
Familiarity |
2 |
Describe how the requirements engineering process supports the elicitation and validation of behavioral requirements. |
SE |
Requirements Engineering |
1 |
Familiarity |
3 |
Interpret a given requirements model for a simple software system. |
SE |
Requirements Engineering |
2 |
Familiarity |
4 |
Describe the fundamental challenges of and common techniques used for requirements elicitation. |
SE |
Requirements Engineering |
2 |
Familiarity |
5 |
List the key components of a data model (eg, class diagrams or ER diagrams). |
SE |
Requirements Engineering |
2 |
Usage |
6 |
Identify both functional and non-functional requirements in a given requirements specification for a software system. |
SE |
Requirements Engineering |
2 |
Usage |
7 |
Conduct a review of a set of software requirements to determine the quality of the requirements with respect to the characteristics of good requirements. |
SE |
Requirements Engineering |
3 |
Usage |
8 |
Apply key elements and common methods for elicitation and analysis to produce a set of software requirements for a medium-sized software system. |
SE |
Requirements Engineering |
3 |
Familiarity |
9 |
Compare the plan-driven and agile approaches to requirements specification and validation and describe the benefits and risks associated with each. |
SE |
Requirements Engineering |
3 |
Usage |
10 |
Use a common, non-formal method to model and specify the requirements for a medium-size software system. |
SE |
Requirements Engineering |
3 |
Usage |
11 |
Translate into natural language a software requirements specification (eg, a software component contract) written in a formal specification language. |
SE |
Requirements Engineering |
3 |
Usage |
12 |
Create a prototype of a software system to mitigate risk in requirements. |
SE |
Requirements Engineering |
3 |
Familiarity |
13 |
Differentiate between forward and backward tracing and explain their roles in the requirements validation process. |
SE |
Software Design |
1 |
Familiarity |
1 |
Articulate design principles including separation of concerns, information hiding, coupling and cohesion, and encapsulation. |
SE |
Software Design |
1 |
Usage |
2 |
Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design. |
SE |
Software Design |
1 |
Usage |
3 |
Construct models of the design of a simple software system that are appropriate for the paradigm used to design it. |
SE |
Software Design |
1 |
Familiarity |
4 |
Within the context of a single design paradigm, describe one or more design patterns that could be applicable to the design of a simple software system. |
SE |
Software Design |
2 |
Usage |
5 |
For a simple system suitable for a given scenario, discuss and select an appropriate design paradigm. |
SE |
Software Design |
2 |
Usage |
6 |
Create appropriate models for the structure and behavior of software products from their requirements specifications. |
SE |
Software Design |
2 |
Assessment |
7 |
Explain the relationships between the requirements for a software product and its design, using appropriate models. |
SE |
Software Design |
2 |
Familiarity |
8 |
For the design of a simple software system within the context of a single design paradigm, describe the software architecture of that system. |
SE |
Software Design |
2 |
Familiarity |
9 |
Given a high-level design, identify the software architecture by differentiating among common software architectures such as 3-tier, pipe-and-filter, and client-server. |
SE |
Software Design |
2 |
Assessment |
10 |
Investigate the impact of software architectures selection on the design of a simple system. |
SE |
Software Design |
2 |
Usage |
11 |
Apply simple examples of patterns in a software design. |
SE |
Software Design |
2 |
Familiarity |
12 |
Describe a form of refactoring and discuss when it may be applicable. |
SE |
Software Design |
2 |
Usage |
13 |
Select suitable components for use in the design of a software product. |
SE |
Software Design |
2 |
Familiarity |
14 |
Explain how suitable components might need to be adapted for use in the design of a software product. |
SE |
Software Design |
2 |
Usage |
15 |
Design a contract for a typical small software component for use in a given system. |
SE |
Software Design |
3 |
Usage |
16 |
Discuss and select appropriate software architecture for a simple system suitable for a given scenario. |
SE |
Software Design |
3 |
Usage |
17 |
Apply models for internal and external qualities in designing software components to achieve an acceptable tradeoff between conflicting quality aspects. |
SE |
Software Design |
3 |
Assessment |
18 |
Analyze a software design from the perspective of a significant internal quality attribute. |
SE |
Software Design |
3 |
Assessment |
19 |
Analyze a software design from the perspective of a significant external quality attribute. |
SE |
Software Design |
3 |
Familiarity |
20 |
Explain the role of objects in middleware systems and the relationship with components. |
SE |
Software Design |
3 |
Usage |
21 |
Apply component-oriented approaches to the design of a range of software, such as using components for concurrency and transactions, for reliable communication services, for database interaction including services for remote query and database management, or for secure communication and access. |
SE |
Software Design |
3 |
Usage |
22 |
Refactor an existing software implementation to improve some aspect of its design. |
SE |
Software Design |
3 |
Familiarity |
23 |
State and apply the principles of least privilege and fail-safe defaults. |
SE |
Software Construction |
2 |
Familiarity |
1 |
Describe techniques, coding idioms and mechanisms for implementing designs to achieve desired properties such as reliability, efficiency, and robustness. |
SE |
Software Construction |
2 |
Usage |
2 |
Build robust code using exception handling mechanisms. |
SE |
Software Construction |
2 |
Familiarity |
3 |
Describe secure coding and defensive coding practices. |
SE |
Software Construction |
2 |
Usage |
4 |
Select and use a defined coding standard in a small software project. |
SE |
Software Construction |
2 |
Familiarity |
5 |
Compare and contrast integration strategies including top-down, bottom-up, and sandwich integration. |
SE |
Software Construction |
2 |
Familiarity |
6 |
Describe the process of analyzing and implementing changes to code base developed for a specific project. |
SE |
Software Construction |
2 |
Familiarity |
7 |
Describe the process of analyzing and implementing changes to a large existing code base. |
SE |
Software Construction |
3 |
Usage |
8 |
Rewrite a simple program to remove common vulnerabilities, such as buffer overflows, integer overflows and race conditions. |
SE |
Software Construction |
3 |
Usage |
9 |
Write a software component that performs some non-trivial task and is resilient to input and run-time errors. |
SE |
Software Verification Validation |
2 |
Familiarity |
1 |
Distinguish between program validation and verification. |
SE |
Software Verification Validation |
2 |
Familiarity |
2 |
Describe the role that tools can play in the validation of software. |
SE |
Software Verification Validation |
2 |
Usage |
3 |
Undertake, as part of a team activity, an inspection of a medium-size code segment. |
SE |
Software Verification Validation |
2 |
Familiarity |
4 |
Describe and distinguish among the different types and levels of testing (unit, integration, systems, and acceptance). |
SE |
Software Verification Validation |
2 |
Familiarity |
5 |
Describe techniques for identifying significant test cases for integration, regression and system testing. |
SE |
Software Verification Validation |
2 |
Usage |
6 |
Create and document a set of tests for a medium-size code segment. |
SE |
Software Verification Validation |
2 |
Familiarity |
7 |
Describe how to select good regression tests and automate them. |
SE |
Software Verification Validation |
2 |
Usage |
8 |
Use a defect tracking tool to manage software defects in a small software project. |
SE |
Software Verification Validation |
2 |
Familiarity |
9 |
Discuss the limitations of testing in a particular domain. |
SE |
Software Verification Validation |
3 |
Usage |
10 |
Evaluate a test suite for a medium-size code segment. |
SE |
Software Verification Validation |
3 |
Familiarity |
11 |
Compare static and dynamic approaches to verification. |
SE |
Software Verification Validation |
3 |
Familiarity |
12 |
Identify the fundamental principles of test-driven development methods and explain the role of automated testing in these methods. |
SE |
Software Verification Validation |
3 |
Usage |
13 |
Discuss the issues involving the testing of object-oriented software. |
SE |
Software Verification Validation |
3 |
Familiarity |
14 |
Describe techniques for the verification and validation of non-code artifacts. |
SE |
Software Verification Validation |
3 |
Familiarity |
15 |
Describe approaches for fault estimation. |
SE |
Software Verification Validation |
3 |
Usage |
16 |
Estimate the number of faults in a small software application based on fault density and fault seeding. |
SE |
Software Verification Validation |
3 |
Usage |
17 |
Conduct an inspection or review of software source code for a small or medium sized software project. |
SE |
Software Evolution |
2 |
Familiarity |
1 |
Identify the principal issues associated with software evolution and explain their impact on the software lifecycle. |
SE |
Software Evolution |
2 |
Usage |
2 |
Estimate the impact of a change request to an existing product of medium size. |
SE |
Software Evolution |
2 |
Usage |
3 |
Use refactoring in the process of modifying a software component. |
SE |
Software Evolution |
2 |
Familiarity |
4 |
Discuss the challenges of evolving systems in a changing environment. |
SE |
Software Evolution |
2 |
Familiarity |
5 |
Outline the process of regression testing and its role in release management. |
SE |
Software Evolution |
2 |
Familiarity |
6 |
Discuss the advantages and disadvantages of different types of software reuse. |
SE |
Software Reliability |
2 |
Familiarity |
1 |
Explain the problems that exist in achieving very high levels of reliability. |
SE |
Software Reliability |
2 |
Familiarity |
2 |
Describe how software reliability contributes to system reliability. |
SE |
Software Reliability |
2 |
Familiarity |
3 |
List approaches to minimizing faults that can be applied at each stage of the software lifecycle. |
SE |
Software Reliability |
3 |
Familiarity |
4 |
Compare the characteristics of three different reliability modeling approaches. |
SE |
Software Reliability |
3 |
Usage |
5 |
Demonstrate the ability to apply multiple methods to develop reliability estimates for a software system. |
SE |
Software Reliability |
3 |
Usage |
6 |
Identify methods that will lead to the realization of a software architecture that achieves a specified level of reliability. |
SE |
Software Reliability |
3 |
Usage |
7 |
Identify ways to apply redundancy to achieve fault tolerance for a medium-sized application. |
SE |
Formal Methods |
3 |
Familiarity |
1 |
Describe the role formal specification and analysis techniques can play in the development of complex software and compare their use as validation and verification techniques with testing. |
SE |
Formal Methods |
3 |
Usage |
2 |
Apply formal specification and analysis techniques to software designs and programs with low complexity. |
SE |
Formal Methods |
3 |
Familiarity |
3 |
Explain the potential benefits and drawbacks of using formal specification languages. |
SE |
Formal Methods |
3 |
Usage |
4 |
Create and evaluate program assertions for a variety of behaviors ranging from simple through complex. |
SE |
Formal Methods |
3 |
Usage |
5 |
Using a common formal specification language, formulate the specification of a simple software system and derive examples of test cases from the specification. |
SF |
Computational Paradigms |
1 |
Familiarity |
1 |
List commonly encountered patterns of how computations are organized. |
SF |
Computational Paradigms |
1 |
Familiarity |
2 |
Describe the basic building blocks of computers and their role in the historical development of computer architecture. |
SF |
Computational Paradigms |
1 |
Familiarity |
3 |
Articulate the differences between single thread vs multiple thread, single server vs multiple server models, motivated by real world examples (eg, cooking recipes, lines for multiple teller machines and couples shopping for food). |
SF |
Computational Paradigms |
1 |
Familiarity |
4 |
Articulate the concept of strong vs weak scaling, ie, how performance is affected by scale of problem vs scale of resources to solve the problem This can be motivated by the simple, real-world examples. |
SF |
Computational Paradigms |
1 |
Usage |
5 |
Design a simple logic circuit using the fundamental building blocks of logic design. |
SF |
Computational Paradigms |
1 |
Usage |
6 |
Use tools for capture, synthesis, and simulation to evaluate a logic design. |
SF |
Computational Paradigms |
1 |
Usage |
7 |
Write a simple sequential problem and a simple parallel version of the same program. |
SF |
Computational Paradigms |
1 |
Assessment |
8 |
Evaluate performance of simple sequential and parallel versions of a program with different problem sizes, and be able to describe the speed-ups achieved. |
SF |
Cross-Layer Communications |
1 |
Familiarity |
1 |
Describe how computing systems are constructed of layers upon layers, based on separation of concerns, with well-defined interfaces, hiding details of low layers from the higher layers. |
SF |
Cross-Layer Communications |
1 |
Familiarity |
2 |
Describe that hardware, VM, OS, application are additional layers of interpretation/processing. |
SF |
Cross-Layer Communications |
1 |
Familiarity |
3 |
Describe the mechanisms of how errors are detected, signaled back, and handled through the layers. |
SF |
Cross-Layer Communications |
1 |
Usage |
4 |
Construct a simple program using methods of layering, error detection and recovery, and reflection of error status across layers. |
SF |
Cross-Layer Communications |
1 |
Usage |
5 |
Find bugs in a layered program by using tools for program tracing, single stepping, and debugging. |
SF |
State and State Machines |
1 |
Familiarity |
1 |
Describe computations as a system characyterized by a known set of configurations with transitions from one unique configuration (state) to another (state). |
SF |
State and State Machines |
1 |
Familiarity |
2 |
Describe the distinction between systems whose output is only a function of their input (Combinational) and those with memory/history (Sequential). |
SF |
State and State Machines |
1 |
Familiarity |
3 |
Describe a computer as a state machine that interprets machine instructions. |
SF |
State and State Machines |
1 |
Familiarity |
4 |
Explain how a program or network protocol can also be expressed as a state machine, and that alternative representations for the same computation can exist. |
SF |
State and State Machines |
1 |
Usage |
5 |
Develop state machine descriptions for simple problem statement solutions (eg, traffic light sequencing, pattern recognizers). |
SF |
State and State Machines |
1 |
Assessment |
6 |
Derive time-series behavior of a state machine from its state machine representation. |
SF |
Parallelism |
1 |
Familiarity |
1 |
For a given program, distinguish between its sequential and parallel execution, and the performance implications thereof. |
SF |
Parallelism |
1 |
Familiarity |
2 |
Demonstrate on an execution time line that parallelism events and operations can take place simultaneously (ie, at the same time) Explain how work can be performed in less elapsed time if this can be exploited. |
SF |
Parallelism |
1 |
Familiarity |
3 |
Explain other uses of parallelism, such as for reliability/redundancy of execution. |
SF |
Parallelism |
1 |
Familiarity |
4 |
Define the differences between the concepts of Instruction Parallelism, Data Parallelism, Thread Parallelism/Multitasking, Task/Request Parallelism. |
SF |
Parallelism |
1 |
Usage |
5 |
Write more than one parallel program (eg, one simple parallel program in more than one parallel programming paradigm; a simple parallel program that manages shared resources through synchronization primitives; a simple parallel program that performs simultaneous operation on partitioned data through task parallel (eg, parallel search terms; a simple parallel program that performs step-by-step pipeline processing through message passing). |
SF |
Parallelism |
1 |
Assessment |
6 |
Use performance tools to measure speed-up achieved by parallel programs in terms of both problem size and number of resources. |
SF |
Evaluation |
1 |
Familiarity |
1 |
Explain how the components of system architecture contribute to improving its performance. |
SF |
Evaluation |
1 |
Familiarity |
2 |
Describe Amdahl’s law and discuss its limitations. |
SF |
Evaluation |
1 |
Usage |
3 |
Design and conduct a performance-oriented experiment. |
SF |
Evaluation |
1 |
Assessment |
4 |
Use software tools to profile and measure program performance. |
SF |
Resource Allocation and Scheduling |
2 |
Familiarity |
1 |
Define how finite computer resources (eg, processor share, memory, storage and network bandwidth) are managed by their careful allocation to existing entities. |
SF |
Resource Allocation and Scheduling |
2 |
Familiarity |
2 |
Describe the scheduling algorithms by which resources are allocated to competing entities, and the figures of merit by which these algorithms are evaluated, such as fairness. |
SF |
Resource Allocation and Scheduling |
2 |
Usage |
3 |
Implement simple schedule algorithms. |
SF |
Resource Allocation and Scheduling |
2 |
Assessment |
4 |
Use figures of merit of alternative scheduler implementations. |
SF |
Proximity |
2 |
Familiarity |
1 |
Explain the importance of locality in determining performance. |
SF |
Proximity |
2 |
Familiarity |
2 |
Describe why things that are close in space take less time to access. |
SF |
Proximity |
2 |
Assessment |
3 |
Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in terms of capacity, miss/hit rate, and access time. |
SF |
Virtualization and Isolation |
2 |
Familiarity |
1 |
Explain why it is important to isolate and protect the execution of individual programs and environments that share common underlying resources. |
SF |
Virtualization and Isolation |
2 |
Familiarity |
2 |
Describe how the concept of indirection can create the illusion of a dedicated machine and its resources even when physically shared among multiple programs and environments. |
SF |
Virtualization and Isolation |
2 |
Assessment |
3 |
Measure the performance of two application instances running on separate virtual machines, and determine the effect of performance isolation. |
SF |
Reliability through Redundancy |
2 |
Familiarity |
1 |
Explain the distinction between program errors, system errors, and hardware faults (eg, bad memory) and exceptions (eg, attempt to divide by zero). |
SF |
Reliability through Redundancy |
2 |
Familiarity |
2 |
Articulate the distinction between detecting, handling, and recovering from faults, and the methods for their implementation. |
SF |
Reliability through Redundancy |
2 |
Familiarity |
3 |
Describe the role of error correcting codes in providing error checking and correction techniques in memories, storage, and networks. |
SF |
Reliability through Redundancy |
2 |
Usage |
4 |
Apply simple algorithms for exploiting redundant information for the purposes of data correction. |
SF |
Reliability through Redundancy |
2 |
Assessment |
5 |
Compare different error detection and correction methods for their data overhead, implementation complexity, and relative execution time for encoding, detecting, and correcting errors. |
SF |
Quantitative Evaluation |
3 |
Familiarity |
1 |
Explain the circumstances in which a given figure of system performance metric is useful. |
SF |
Quantitative Evaluation |
3 |
Familiarity |
2 |
Explain the inadequacies of benchmarks as a measure of system performance. |
SF |
Quantitative Evaluation |
3 |
Usage |
3 |
Use limit studies or simple calculations to produce order-of-magnitude estimates for a given performance metric in a given context. |
SF |
Quantitative Evaluation |
3 |
Assessment |
4 |
Conduct a performance experiment on a layered system to determine the effect of a system parameter on figure of system performance. |
SP |
Social Context |
1 |
Familiarity |
1 |
Describe positive and negative ways in which computer technology (networks, mobile computing, cloud computing) alters modes of social interaction at the personal level. |
SP |
Social Context |
1 |
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. |
SP |
Social Context |
1 |
Familiarity |
3 |
Interpret the social context of a given design and its implementation. |
SP |
Social Context |
1 |
Assessment |
4 |
Evaluate the efficacy of a given design and implementation using empirical data. |
SP |
Social Context |
1 |
Usage |
5 |
Summarize the implications of social media on individualism versus collectivism and culture. |
SP |
Social Context |
2 |
Familiarity |
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. |
SP |
Social Context |
2 |
Assessment |
7 |
Analyze the pros and cons of reliance on computing in the implementation of democracy (eg delivery of social services, electronic voting). |
SP |
Social Context |
2 |
Familiarity |
8 |
Describe the impact of the under-representation of diverse populations in the computing profession (eg, industry culture, product diversity). |
SP |
Social Context |
2 |
Familiarity |
9 |
Explain the implications of context awareness in ubiquitous computing systems. |
SP |
Analytical Tools |
1 |
Assessment |
1 |
Evaluate stakeholder positions in a given situation. |
SP |
Analytical Tools |
1 |
Assessment |
2 |
Analyze basic logical fallacies in an argument. |
SP |
Analytical Tools |
1 |
Assessment |
3 |
Analyze an argument to identify premises and conclusion. |
SP |
Analytical Tools |
1 |
Usage |
4 |
Illustrate the use of example and analogy in ethical argument. |
SP |
Analytical Tools |
1 |
Assessment |
5 |
Evaluate ethical/social tradeoffs in technical decisions. |
SP |
Professional Ethics |
1 |
Familiarity |
1 |
Identify ethical issues that arise in software development and determine how to address them technically and ethically. |
SP |
Professional Ethics |
1 |
Familiarity |
2 |
Explain the ethical responsibility of ensuring software correctness, reliability and safety. |
SP |
Professional Ethics |
1 |
Familiarity |
3 |
Describe the mechanisms that typically exist for a professional to keep up-to-date. |
SP |
Professional Ethics |
1 |
Familiarity |
4 |
Describe the strengths and weaknesses of relevant professional codes as expressions of professionalism and guides to decision-making. |
SP |
Professional Ethics |
1 |
Assessment |
5 |
Analyze a global computing issue, observing the role of professionals and government officials in managing this problem. |
SP |
Professional Ethics |
1 |
Assessment |
6 |
Evaluate the professional codes of ethics from the ACM, the IEEE Computer Society, and other organizations. |
SP |
Professional Ethics |
2 |
Familiarity |
7 |
Describe ways in which professionals may contribute to public policy. |
SP |
Professional Ethics |
2 |
Familiarity |
8 |
Describe the consequences of inappropriate professional behavior. |
SP |
Professional Ethics |
2 |
Familiarity |
9 |
Identify progressive stages in a whistle-blowing incident. |
SP |
Professional Ethics |
2 |
Familiarity |
10 |
Identify examples of how regional culture interplays with ethical dilemmas. |
SP |
Professional Ethics |
2 |
Usage |
11 |
Investigate forms of harassment and discrimination and avenues of assistance. |
SP |
Professional Ethics |
2 |
Usage |
12 |
Examine various forms of professional credentialing. |
SP |
Professional Ethics |
2 |
Familiarity |
13 |
Explain the relationship between ergonomics in computing environments and people’s health. |
SP |
Professional Ethics |
2 |
Assessment |
14 |
Develop a computer usage/acceptable use policy with enforcement measures. |
SP |
Professional Ethics |
2 |
Familiarity |
15 |
Describe issues associated with industries’ push to focus on time to market versus enforcing quality professional standards. |
SP |
Intellectual Property |
1 |
Familiarity |
1 |
Discuss the philosophical bases of intellectual property. |
SP |
Intellectual Property |
1 |
Familiarity |
2 |
Discuss the rationale for the legal protection of intellectual property. |
SP |
Intellectual Property |
1 |
Familiarity |
3 |
Describe legislation aimed at digital copyright infringements. |
SP |
Intellectual Property |
1 |
Assessment |
4 |
Critique legislation aimed at digital copyright infringements. |
SP |
Intellectual Property |
1 |
Familiarity |
5 |
Identify contemporary examples of intangible digital intellectual property. |
SP |
Intellectual Property |
1 |
Assessment |
6 |
Justify uses of copyrighted materials. |
SP |
Intellectual Property |
1 |
Assessment |
7 |
Evaluate the ethical issues inherent in various plagiarism detection mechanisms. |
SP |
Intellectual Property |
1 |
Familiarity |
8 |
Interpret the intent and implementation of software licensing. |
SP |
Intellectual Property |
1 |
Familiarity |
9 |
Discuss the issues involved in securing software patents. |
SP |
Intellectual Property |
1 |
Assessment |
10 |
Characterize and contrast the concepts of copyright, patenting and trademarks. |
SP |
Intellectual Property |
3 |
Familiarity |
11 |
Identify the goals of the open source movement. |
SP |
Intellectual Property |
3 |
Familiarity |
12 |
Identify the global nature of software piracy. |
SP |
Privacy and Civil Liberties |
1 |
Familiarity |
1 |
Discuss the philosophical basis for the legal protection of personal privacy. |
SP |
Privacy and Civil Liberties |
1 |
Assessment |
2 |
Evaluate solutions to privacy threats in transactional databases and data warehouses. |
SP |
Privacy and Civil Liberties |
1 |
Familiarity |
3 |
Describe the role of data collection in the implementation of pervasive surveillance systems (e.g., RFID, face recognition, toll collection, mobile computing). |
SP |
Privacy and Civil Liberties |
1 |
Familiarity |
4 |
Describe the ramifications of differential privacy. |
SP |
Privacy and Civil Liberties |
1 |
Usage |
5 |
Investigate the impact of technological solutions to privacy problems. |
SP |
Privacy and Civil Liberties |
3 |
Assessment |
6 |
Critique the intent, potential value and implementation of various forms of privacy legislation. |
SP |
Privacy and Civil Liberties |
3 |
Familiarity |
7 |
Identify strategies to enable appropriate freedom of expression. |
SP |
Professional Communication |
1 |
Usage |
1 |
Write clear, concise, and accurate technical documents following well-defined standards for format and for including appropriate tables, figures, and references. |
SP |
Professional Communication |
1 |
Assessment |
2 |
Evaluate written technical documentation to detect problems of various kinds. |
SP |
Professional Communication |
1 |
Assessment |
3 |
Develop and deliver a good quality formal presentation. |
SP |
Professional Communication |
1 |
Usage |
4 |
Plan interactions (eg 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 that they have heard. |
SP |
Professional Communication |
1 |
Familiarity |
5 |
Describe the strengths and weaknesses of various forms of communication (eg virtual, face-to-face, shared documents). |
SP |
Professional Communication |
1 |
Usage |
6 |
Examine appropriate measures used to communicate with stakeholders involved in a project. |
SP |
Professional Communication |
1 |
Assessment |
7 |
Compare and contrast various collaboration tools. |
SP |
Professional Communication |
3 |
Familiarity |
8 |
Discuss ways to influence performance and results in cross-cultural teams. |
SP |
Professional Communication |
3 |
Usage |
9 |
Examine the tradeoffs and common sources of risk in software projects regarding technology, structure/process, quality, people, market and financial. |
SP |
Professional Communication |
3 |
Assessment |
10 |
Evaluate personal strengths and weaknesses to work remotely as part of a multinational team. |
SP |
Sustainability |
1 |
Familiarity |
1 |
Identify ways to be a sustainable practitioner. |
SP |
Sustainability |
1 |
Usage |
2 |
Illustrate global social and environmental impacts of computer use and disposal (e-waste). |
SP |
Sustainability |
2 |
Familiarity |
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. |
SP |
Sustainability |
2 |
Usage |
4 |
Investigate the social and environmental impacts of new system designs through projects. |
SP |
Sustainability |
3 |
Familiarity |
5 |
Identify guidelines for sustainable IT design or deployment. |
SP |
Sustainability |
3 |
Familiarity |
6 |
List the sustainable effects of telecommuting or web shopping. |
SP |
Sustainability |
3 |
Usage |
7 |
Investigate pervasive computing in areas such as smart energy systems, social networking, transportation, agriculture, supply-chain systems, environmental monitoring and citizen activism. |
SP |
Sustainability |
3 |
Assessment |
8 |
Develop applications of computing and assess through research areas pertaining to environmental issues (eg energy, pollution, resource usage, recycling and reuse, food management, farming). |
SP |
History |
3 |
Familiarity |
1 |
Identify significant continuing trends in the history of the computing field. |
SP |
History |
3 |
Familiarity |
2 |
Identify the contributions of several pioneers in the computing field. |
SP |
History |
3 |
Familiarity |
3 |
Discuss the historical context for several programming language paradigms. |
SP |
History |
3 |
Assessment |
4 |
Compare daily life before and after the advent of personal computers and the Internet. |
SP |
Economies of Computing |
3 |
Familiarity |
1 |
Summarize the rationale for antimonopoly efforts. |
SP |
Economies of Computing |
3 |
Familiarity |
2 |
Identify several ways in which the information technology industry is affected by shortages in the labor supply. |
SP |
Economies of Computing |
3 |
Familiarity |
3 |
Identify the evolution of pricing strategies for computing goods and services. |
SP |
Economies of Computing |
3 |
Familiarity |
4 |
Discuss the benefits, the drawbacks and the implications of off-shoring and outsourcing. |
SP |
Economies of Computing |
3 |
Usage |
5 |
Investigate and defend ways to address limitations on access to computing. |
SP |
Economies of Computing |
3 |
Familiarity |
6 |
Describe the economic benefits of network effects. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Familiarity |
1 |
List classic examples of computer crimes and social engineering incidents with societal impact. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Familiarity |
2 |
Identify laws that apply to computer crimes. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Familiarity |
3 |
Describe the motivation and ramifications of cyber terrorism and criminal hacking. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Usage |
4 |
Examine the ethical and legal issues surrounding the misuse of access and various breaches in security. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Familiarity |
5 |
Discuss the professional’s role in security and the trade-offs involved. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Usage |
6 |
Investigate measures that can be taken by both individuals and organizations including governments to prevent or mitigate the undesirable effects of computer crimes and identity theft. |
SP |
Security Policies, Laws and Computer Crimes |
3 |
Usage |
7 |
Write a company-wide security policy, which includes procedures for managing passwords and employee monitoring. |