Code: Select all
Number Source Learning outcome
1 CS1 Design, implement, test, and debug a solution based on an abstract description of a problem.
2 CS1 Develop programs that use fundamental programming constructs (variables, types, expressions, assignment, basic I/O, conditional and iterative control structures, functions and parameter passing, structured decomposition)
3 CS1 Apply rigorous testing to validate the correctness of an implementation.
4 CS1 Describe the behaviour of a program through an examination of its source code.
5 CS1 Develop programs that use the different structured or compound data types provided in the language.
6 CS1 Describe the properties of good software design.
7 CS1 Describe the responsibility of a single programmer when working on a larger-scale project as part of a team.
8 CS1 Explain code of conduct and intellectual property relevant to programmers and software development.
9 Ethics Articulate how computing technologes affect and must be designed considering social context, including social interactions, diversity of population including under-represented populations and the disabled, cultures, identities, and communities, as well as the role and impact of technology in democracy
10 Ethics Analyze an argument to identify premises and conclusion and analyze (and avoid) basic logical fallacies in an argument.
11 Ethics Evaluate how and why ethics is so important in computing and how it relates to cultural norms, values, and law.
12 Ethics Identify, evaluate and address ethical issues that arise in software design, development practices, and software deployment, including software correctness, reliability and safety
13 Ethics Describe, compare and select appropriate software license for a given project.
14 Ethics Justify legal and ethical uses of copyrighted materials, including considering fair use and the many forms of plagiarism.
15 Ethics Produce and evaluate concise and accurate technical documents following well-defined standards and formats.
16 Ethics Develop and deliver an audience-aware, accessible, and organized formal presentation.
17 Ethics Effectively, appropriately and collegially work and communicate as a member of a team, including applying conflict resolution techniques, effective communication, and inclusive and respectful interactions that value diversity of ideas.
18 Ethics Understand the relevance and impact of computing history on recent events, present context, and possible future outcomes. Ideally from more than one cultural perspective.
19 Ethics Define and distinguish equity, equality, diversity, inclusion, and accessibility.
20 Ethics Describe the impact of power and privilege in the computing profession as it relates to culture, industry, products, and society, and factors that contribute to inequitable access, engagement, and achievement in computer science among marginalized groups.
21 HCI Identify the different users of a design and their different needs and wants, both in terms of functionality and in terms of experience (functional and non-functional requirements)
22 HCI Motivate, identify and argue for the value of considering human factors and knowledge about humans in the design of good interfaces, considering the potential impacts of a design on society and relevant communities to address concerns such as sustainability, inclusivity, safety, security, privacy, harm, and disparate impact, and challenging developer's asumptions.
23 CS2 Develop programs that create simple classes and instantiate objects of those classes.
24 CS2 Describe the importance of abstraction and encapsulation in the design of programs.
25 CS2 Use a modern IDE to trace, step-through, and debug a program.
26 CS2 Recognize, analyze, and apply recursion to solve a problem.
27 CS2 Write reference-based and array-based implementations of basic algorithms and data structures
28 CS2 Describe the tradeoffs associated with a particular choice of data structure by reasoning about its efficiency in relation to a problem domain.
29 CS2 Describe the basic building blocks of computers and their role in the historical development of computer architecture.
30 Theory1 Given requirements for a real-world application, determine and evaluate data structures and algorithms in terms of suitability and impact on the environment and society.
31 Theory1 Define and give an example of an iterative algorithm, a recursive algorithm, as well as algorithm paradigms such as Brute-Force and Divide-and-Conquer.
32 Theory1 Define and use Big O notation (including Omega and Theta) to analyse time and space complexity of algorithms.
33 Theory1 Define and informally determine the foundational complexity class of simple algorithms.
34 Theory1 Perform empirical studies to determine the runtime complexity of algorithms.
35 Theory1 Describe in depth a prototypical example and its paradigm for graph and sorting algorithms.
36 Theory1 Graph algorithms (such as Shortest Path, Minimal spanning tree, transitive closure, and topological sort).
37 Theory1 Sorting algorithms (including those with O(n^2), O(n log n), and pseudo O(n) complexity).
38 Theory1 Informally describe common matching algorithms such as string matching, longest common subsequence matching, and regular expression matching.
39 Theory1 Define and describe the properties and associated operations of data structures such as sets, heaps, queues, graphs, and hash tables.
40 Theory2 Prove that the halting problem is undecidable and give an example of proving a problem is undecidable by reducing the halting problem to it.
41 Theory2 Given a real-world problem, design an appropriate automaton to address it.
42 Theory2 Define, compare and contrast, and give examples for each class of automata: Finite state, Pushdown, Linear Bounded, Turing Machine including universal Turing machine
43 Theory2 Explain at least one approach for addressing a computational problem whose algorithmic solution is exponential.
44 Theory2 Determine if a greedy approach leads to an optimal solution.
45 Theory2 Explain how invariants assist in proving the correctness of an algorithm as a formal model
46 Theory2 Describe an efficient string matching algorithm, longest common subsequence matching. and regular expression matching.
47 Theory2 Understand and explain in detail the following operations on data structures: collision avoidance and resolution in hash tables, and tree balance in binary search tree operations.
48 Theory2 Define the classes P and NP.
49 Theory2 Define, compare, and give examples of NP-complete and NP-hard problems.
50 Theory2 Prove that a problem is NP-complete by reducing it to a NP-complete problem.
51 Theory2 Convert between equivalently powerful notations for a language, e.g., DFAs, NFAs, and regular expressions; PDAs and CFGs.
52 Theory2 Use a pumping lemma to prove limitations of finite state and pushdown automata.
53 SW1 Learn how to work in a team, including communication, conflict resolution and collaboration
54 SW1 Use the mechanics and tools of SW teamwork such as version control and pull requests
55 SW1 Use version control
56 SW1 Write unit tests that establish robustness
57 SW1 Distinguish between program validation and verification.
58 SW1 Use exception handling to make code robust.
59 SW1 Implement, document, and test a small component
60 SW2 Work in a team to build a multi module software project
61 SW2 Apply requirements modeling and elicitation to prepare a software specification.
62 SW2 Differentiate between different software architecture styles.
63 SW2 Select and use an appropriate design paradigm to design a simple software system and explain how system design principles have been applied in this design.
64 SW2 Apply design principles and dependency models to analyze and re-design a flawed system
65 SW2 Trace requirements to design to implementation to tests of those requirements.
66 SW2 Conduct tradeoff analysis of software designs with respect to quality attributes.
67 SW2 Rewrite a simple program to remove common vulnerabilities, such as buffer overflows, integer overflows and race conditions.
68 SW2 Automate testing in a small software project.
69 SW2 Undertake, as part of a team activity, a code review of a medium-size code segment.