Computing Curricula

Post a reply

Smilies
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

Markdown is OFF

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Computing Curricula

Re: Computing Curricula

by pan » Sun May 12, 2024 10:36 pm

https://csed.acm.org/wp-content/uploads ... Report.pdf

Professional dispositions – the whole person view
Professional dispositions are essential for not just succeeding in the workplace but also thriving as a
professional over the long run. The dispositions identified by multiple CS2023 knowledge areas as
essential for computer science graduates include:
Adaptable, as the discipline is continually evolving;
Collaborative, as most real-world applications are team efforts;
Inventive in order to devise new solutions and apply existing solutions to new contexts;
Meticulous to ensure the correctness and completeness of solutions;
Persistent, since computational problem-solving is an iterative process;
Proactive to anticipate issues pertaining to usability, security, ethics, etc.;
Responsible in all aspects of a solution including design, implementation, and maintenance;
Self-directed, as commitment to life-long learning is required due to rapid evolution of the
discipline.
These characteristics change in importance over the career of a graduate: some characteristics are
more important during early career while others are essential for success over the long run [4].
Moreover, given the dynamic nature of computer science, the desirable characteristics of computer
science graduates will also continue to evolve.

Re: Computing Curricula

by pan » Mon Mar 18, 2024 9:52 pm

https://csed.acm.org/wp-content/uploads ... -Gamma.pdf
Networking and Communication (NC)

Preamble

Networking and communication play a central role in interconnected computer systems that are
transforming the daily lives of billions of people. The public Internet provides connectivity for
networked applications that serve ever-increasing numbers of individuals and organizations
around the world. Complementing the public sector, major proprietary networks leverage their
global footprints to support cost-effective distributed computing, storage, and content delivery.
Advances in satellite networks expand connectivity to rural areas. Device-to-device
communication underlies the emerging Internet of things.

This knowledge area deals with key concepts in networking and communication, as well as their
representative instantiations in the Internet and other computer networks. Beside the basic
principles of switching and layering, the area at its core provides knowledge on naming,
addressing, reliability, error control, flow control, congestion control, domain hierarchy, routing,
forwarding, modulation, encoding, framing, and access control. The area also covers knowledge
units in network security and mobility, such as security threats, countermeasures, device-todevice communication, and multihop wireless networking. In addition to the fundamental
principles, the area includes their specific realization in the Internet as well as hands-on skills in
implementation of networking and communication concepts. Finally, the area comprises emerging
topics such as network virtualization and quantum networking.

As the main learning outcome, learners develop a thorough understanding of the role and
operation of networking and communication in networked computer systems. They learn how
network structure and communication protocols affect behavior of distributed applications. The
area educates on not only key principles but also their specific instantiations in the Internet and
equips the student with hands-on implementation skills. While computer-system, networking, and
communication technologies are advancing at a fast pace, the gained fundamental knowledge
enables the student to readily apply the concepts in new technological settings.
https://csed.acm.org/wp-content/uploads ... -Gamma.pdf
Operating Systems (OS)

Preamble

Operating system is the collection of services needed to safely interface the hardware with
applications. Core topics focus on the mechanisms and policies needed to virtualize
computation, memory, and I/O. Overarching themes that are reused at many levels in
computer systems are well illustrated in operating systems (e.g. polling vs interrupts, caching,
flexibility costs overhead, similar scheduling approaches to processes, page replacement, etc.).
OS should focus on how those concepts apply in other areas of CS - trust boundaries,
concurrency, persistence, safe extensibility.

Operating systems remains an important Computer Science Knowledge Area in spite of how OS
functions may be redistributed into computer architecture or specialized platforms. A CS
student needs to have a clear mental model of how a pipelined instruction executes to how data
scope impacts memory location. Students can apply basic OS knowledge to domain-specific
architectures (machine learning with GPUs or other parallelized systems, mobile devices,
embedded systems, etc.). Since all software must leverage operating systems services,
students can reason about the efficiency, required overhead and the tradeoffs inherent to any
application or code implementation. The study of basic OS algorithms and approaches provides
a context against which students can evaluate more advanced methods. Without an
understanding of sandboxing, how programs are loaded into processes, and execution,
students are at a disadvantage when understanding or evaluating vulnerabilities to vectors of
attack.

Re: Computing Curricula

by pan » Wed Nov 15, 2023 8:34 am

https://docs.google.com/document/d/1_qq ... Q48iT/edit
12 Course Model

Please make sure CS core is covered no matter the choice of electives:
  1. CS I (SDF, SEP)
  2. CS II (SDF, AL, DM, SEP, Generic KA)
  3. Math and Statistical Foundations (MSF)
  4. Algorithms (AL, AI, SEC, SEP)
  5. Introduction to Systems (SF, OS, AR, NC)
  6. Programming Languages (FPL, AL, PDC, SEP)
  7. Software Engineering (SE, HCI, GIT, PDC, SPD, DM, SEP)
  8. Two from Systems electives:
    1. Operating Systems (OS, PDC)
    2. Computer Architecture (AR)
    3. Parallel and Distributed Computing (PDC)
    4. Networking (NC, SEC, SEP)
    5. Databases (DM, SEP)
  9. Two electives from Applications:
    1. Artificial Intelligence (AI, SPD, SEP)
    2. Graphics (GIT, HCI, SEP)
    3. Application Security (SEC, SEP)
    4. Human-Centered Design (HCI, GIT, SEP)
  10. Capstone (SE, SEP)
The capstone course is expected to provide the opportunity to cover any CS core topics not covered elsewhere in the curriculum.

Re: Computing Curricula

by pan » Wed Aug 16, 2023 11:31 am

pan wrote:knowledge: how computer works

skill: how to use computer to solve real-world problems

value: how computer enriches human beings and society
IMG_3690.jpg
IMG_3690.jpg (611.81 KiB) Viewed 3071 times
IMG_3691.jpg
IMG_3691.jpg (756.32 KiB) Viewed 3071 times
IMG_3692.jpg
IMG_3692.jpg (658.35 KiB) Viewed 3071 times

Re: Computing Curricula

by pan » Wed Aug 16, 2023 8:55 am

Date: August 16th
Time: 10:00am
Location: ECS 660

By: Alison Clear, Associate Professor, Eastern Institute of Technology, Auckland, Aotearoa/New Zealand
Co-Chair ACM & IEEE-CS for Global Computing Curricula 2020: Paradigms Computing Education
Chair ACM SIGCSE, ACM Distinguished Educator

Talk abstract:

The field of computing has grown exponentially in recent years, with new technologies emerging at a rapid pace. The rapid emergence of Artificial Intelligence agents will change how we work. Therefore, the traditional methods of teaching computing may struggle to keep up with this rapid pace of innovation. To ensure that universities keep pace with this development it is essential to look at what, why and how we are teaching the computing professionals of the future. Our new students of the immediate future will demand and need a different approach to teaching and learning. We need to shift the focus of computing education from knowledge based education to competency based education.

The work force is changing too with new technologies being developed it seems like on a daily basis. Now is the time to engage the employers of our future graduates and discuss the needs of the industry which our graduates will enter. What technical skills do they require and just as important what skills and dispositions will they need for future employment? It is important to address these questions in conjunction with industry before we redesign our under-graduate computing degree programs.

This talk will present an approach to teaching and learning by incorporating competency-based pedagogy, combining knowledge skills and dispositions in context to meet the needs of current and future computing students and their future employers. A combined landscape of computing knowledge and skills which covers all the areas of “computing” will be presented. It will also discuss engaging with industry to advise and direct their perspectives of new employees technical skills that will guide under graduate degree program curriculum.

“If everyone is moving forward together, then success takes care of itself.” Henry Ford

Alison Clear: Bio

Alison Clear is an Adjunct Associate Professor of the Eastern Institute of Technology. She has an extensive
academic and professional career that has involved academic leadership in research, scholarship, teaching and
curriculum development nationally and internationally and an extensive publication record in national and
international conferences and journals in computing and information technology. Her research interests include
Computing curriculum development, Women and Computing, ICT in developing countries, e-learning
implementation and the development of computing education. Alison is an invited international keynote speaker,
is currently the Chair of ACM Special Interest Group in Computer Science Education has been a member of the
international ACM Educational Council, member, currently Board member of the ACM Special Interest Group on
Computers and Society, Fellow of the Institute of Information Technology Professionals (IITP) and Fellow of the
Computing and Information Technology Research and Education in New Zealand (CITRENZ) and a
Distinguished Educator of ACM. In 2020 she received the ACM SIGCSE award for Lifetime Service to Computer
Science education. She recently led an international research project, Computing Curriculum 2020 (CC2020,) of
50 people from 22 countries to redefine the computing curricula for 2020 forward.

Re: Computing Curricula

by pan » Thu Jun 01, 2023 9:23 pm

https://csed.acm.org/wp-content/uploads ... n-Beta.pdf
Changes since CS 2013: Compared to the 2013 curricula, the knowledge area broadens its core tier-1 focus from the introduction and networked applications to include reliability support, routing, forwarding, and single-hop communication. Due to the enhanced core, learners acquire a deeper understanding of the impact that networking and communication have on behavior of distributed applications. Reflecting the increased importance of network security, the area adds a respective knowledge unit as a new elective. To track the advancing frontiers in networking and communication knowledge, the area replaces the elective unit on social networking with a new elective unit on emerging topics, such as middleboxes, virtualization, and quantum networking. Other changes consist of redistributing all topics from the old unit on resource allocation among other units, in order to resolve the unnecessary overlap between the knowledge units in the 2013 curricula.
and more https://csed.acm.org/knowledge-areas/
Knowledge Areas
Knowledge Areas planned for CS2023:

Algorithmic Foundations (AL)
Architecture and Organization (AR)
Artificial Intelligence (AI)
Data Management (DM)
Foundations of Programming Languages (FPL)
Graphics and Interactive Techniques (GIT)
Human-Computer Interaction (HCI)
Mathematical and Statistical Foundations (MSF)
Networking and Communication (NC)
Operating Systems (OS)
Parallel and Distributed Computing (PDC)
Security (SEC)
Society, Ethics and Professionalism (SEP)
Software Development Fundamentals (SDF)
Software Engineering (SE)
Specialized Platform Development (SPD)
Systems Fundamentals (SF)

Re: Computing Curricula

by pan » Tue Apr 11, 2023 2:21 pm

knowledge: how computer works

skill: how to use computer to solve real-world problems

value: how computer enriches human beings and society

Re: Computing Curricula

by pan » Tue Apr 11, 2023 1:10 pm

program learning outcomes (plo): what students shall know (why), do (how) and value (what) upon the successful completion of their educational program (for life)

specific and measurable, e.g., ubc cs https://www.cs.ubc.ca/program-learning-outcomes
* Decompose a real-world problem into sub-problems that can be iteratively refined and solved individually, or in teams.
* Develop a software system to solve a real-world problem.
* Design, evaluate, validate, and justify a solution that adheres to given or derived requirements by: adapting from useful algorithms, data structures, and code from existing solutions; considering trade-offs in quality attributes (e.g., , time, space, security); and applying best practices.
* Construct a formal argument and formulate logically-sound proofs, both to show correctness and prove the space and time complexity of an approach.
* Independently acquire knowledge of unfamiliar technologies, languages, frameworks, and architectures.
* Implement a program using modern team-based development practices.
* Identify the different layers of abstraction in a system and the interactions within the layers with respect to how data and execution are represented in that system.
also uvic learning outcome (ulo) https://www.uvic.ca/calendar/undergrad/ ... g_outcomes if 404, try https://www.uvic.ca/calendar/undergrad/ ... =20&skip=0

Re: Computing Curricula

by pan » Sat Mar 04, 2023 10:57 am

https://www.acm.org/binaries/content/as ... _final.pdf
Computer Science Curricula 2013

Curriculum Guidelines for Undergraduate Degree Programs in Computer Science

December 20, 2013

The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society
in three major fields of computer science as a discipline: theory/algorithms, systems/networking, and application/software engineering
Knowledge Areas
The CS2013 Body of Knowledge is organized into a set of 18 Knowledge Areas (KAs), corresponding to topical areas of study in computing. The Knowledge Areas are:
● AL - Algorithms and Complexity
● AR - Architecture and Organization
● CN - Computational Science
● DS - Discrete Structures
● GV - Graphics and Visualization
● HCI - Human-Computer Interaction
● IAS - Information Assurance and Security
● IM - Information Management
● IS - Intelligent Systems
● NC - Networking and Communications
● OS - Operating Systems
● PBD - Platform-based Development
● PD - Parallel and Distributed Computing
● PL - Programming Languages
● SDF - Software Development Fundamentals
● SE - Software Engineering
● SF - Systems Fundamentals
● SP - Social Issues and Professional Practice
now probably enriched by the fourth---interdisciplinary where computer science interacts with others too

Re: Computing Curricula

by pan » Wed Dec 14, 2022 9:51 am

csc major

Screen Shot 2022-12-14 at 8.48.46 AM.png
Screen Shot 2022-12-14 at 8.48.46 AM.png (101.3 KiB) Viewed 4220 times

and honors

Screen Shot 2022-12-14 at 8.49.04 AM.png
Screen Shot 2022-12-14 at 8.49.04 AM.png (114.37 KiB) Viewed 4220 times

Re: Computing Curricula

by pan » Wed Apr 20, 2022 1:11 pm

CSC226 Algorithms and Data Structures II

Existing Calendar Entry

Advanced techniques for design, analysis, and implementation of algorithms and data structures with an introduction to algorithm engineering. Algorithmic design paradigms: greedy, divide-and-conquer, dynamic programming, backtracking, branch and bound. Advanced Analysis techniques, such as amortization. Advanced data structures: hashing, disjoint sets. Advanced graph algorithms: network flow, connectivity, minimum spanning trees, shortest paths. Mathematical tools: graphs and digraphs, graph properties, planar graphs, networks; discrete probability, counting techniques, recurrences.

Prerequisites

CSC225

Current Topics

  • intro, big-O, RAM model review
  • review quicksort, selection
  • discrete probability and randomized algorithms
  • hashing
  • union-find problem [1.5]
  • MST Kruskal [4.3]
  • MST Prim's alg [4.3]
  • MST Bellman-Ford
  • shortest paths [4.4]
  • dynamic programming, LCS
  • strings, KMP algorithm, tries [5]
  • network flow [6]

Proposed Learning Outcomes (Spring 2022)

General Outcomes

  • Describe fundamental algorithm design paradigms (Divide and Conquer, Greedy, Dynamic Programming) and advanced data structures (Weighted Graphs, Union-Find).
  • Apply mathematical techniques and tools (such as recurrence relations, counting, graph theory) to analyze the running times of algorithms and reason about their correctness.
  • Compare and choose the most appropriate design paradigm and data structure(s) to solve a given problem by studying its structure and resemblance to previously studied problems.
  • Implement correctly the best solution to a given problem obtained after the design and analysis stage.

Weighted Graphs

  • Recall graph terminology arc, in-degree, out-degree, path, directed path, cycle, directed cycle, connected, strongly connected, etc.
  • Define and identify a spanning tree and spanning forest
  • Develop intuition that weighted graphs can be used to model many types of relations (ie. maps, social and physical networks, biological structures, etc.)
  • Implement weighted graph representations (i.e. adjacency list, adjacency matrix) with related operations
  • Analyze abstract data type Weighted Graph algorithms in terms of space/time complexity

Minimum Spanning Trees

  • Explain how a Heap of n elements can be constructed in O(n) time (NOTE to discuss with rest of group: if we push this to 225, push transitive closure to 226)
  • Define the abstract data type Union-Find (i.e. make, union, find)
  • Trace the following algorithms on a given weighted graph: Kruskal, Dijkstra/Prim, Boruvka
  • Prove the correctness of two of Kruskal, Dijkstra/Prim, Boruvka
  • Identify examples of Greedy algorithms that solve other problems; explain why they are greedy

Shortest Paths

  • Define and identify a shortest path in a weighted graph
  • Trace the following shortest path algorithms on a given weighted graph: Dijkstra's, Bellman-Ford
  • Prove the correctness of Dijkstra's algorithm
  • Identify examples of Dynamic Programming algorithms that solve other problems; explain why they are Dynamic Programming (Longest Common Subsequence, Knapsack, Coins-in-a-Line)
  • Define and apply transitive closure relations to directed graphs
  • Define algorithm to determine transitive closure on a directed graph
  • Trace the all-pairs shortest path algorithm, Floyd-Warshall

Network Flow

  • Define Network Flow and accompanying definitions and terminology (i.e. source, sink, capacities, flow, etc.)
  • Construct a Residual Graph given a Network Flow
  • Define and discover an augmenting path in a Network Flow
  • Define maxflow and mincut
  • Prove relationship between maxflow and mincut
  • Trace the following maxflow algorithms: Ford-Fulkerson, Edmonds-Karp
  • Analyze Edmonds-Karp algorithm in terms of time complexity

Advanced Sorting and Selection

  • Recall the Quicksort algorithm
  • Apply introductory probability techniques to average-case running time analysis
  • Explain why the Quicksort average case running time differs from the worst case running time
  • Apply the Quicksort algorithm to selection, i.e. Quickselect
  • Explain the linear selection algorithm and analyze its running time
  • Understand the concept of randomization in algorithms
  • Apply randomization to the Quicksort and Quickselect algorithms and analyze their running times

Hashing

  • Recall the concept of a Hash table and Hash function
  • Recall the implementation of hash insert and search (i.e. collision, open-addressing, closed (eg. chaining))
  • Implement delete from a Hash table
  • Define load factor and analyze the runtime of Hash table operations
  • Explain and apply amortized algorithm analysis techniques

String Search

  • Describe a Deterministic Finite Automata (DFA)
  • Trace and analyze the following substring search algorithms: Knuth-Morris-Pratt (KMP with DFA), Rabin-Karp, Boyer-Moore (simplified version)

Optional Topics

  • Define graph colouring and identify graphs that are two- and three-coloured
  • Proof that a graph is two colourable, i.e. it does not contain an odd cycle
  • Identify Euler and Hamilton graphs
  • Define a planar graph
  • Prove Kuratowski's theorem
  • Define and apply Euler's formula
  • Describe algorithms for planar graph isomorphism
  • Discover examples of hard problems (intractability)
  • Use backtracking, branch and bound and alpha - beta pruning

Re: Computing Curricula

by pan » Wed Apr 20, 2022 1:04 pm

CSC225 Algorithms and Data Structures I

Existing Calendar Entry

Basic techniques for design, analysis, implementation of algorithms and data structures. Foundations: Random access machine model, time and space complexity, worst-case analysis, upper and lower bounds. Proof techniques for algorithm correctness. Basic data structures: stacks, queues, linked lists. Sorting: elementary sorting algorithms, mergesort, quicksort, priority queues. Searching: Binary search trees, balanced search trees, hash tables. Graphs: undirected and directed graphs, graph traversals and applications, topological sort. Algorithm design techniques: greedy, backtracking, divide and conquer.

Prerequisites

CSC115 or CSC116
MATH122

Current Topics

Algorithm Design and Analysis

  • Algorithm design techniques
  • Fundamental algorithm analysis
  • Time and space complexity
  • Asymptotic analysis
  • Recursive analysis and recurrence relations
  • Proof techniques
  • Basic data structures: arrays, lists, stacks and queues

Searching and Sorting

  • General purpose sorting algorithms, such as Heap sort, Insertion sort, Merge sort, Quick sort, and Selection sort
  • Special purpose sorting algorithms, such as lexicographical sorting and Radix sort
  • Priority Queues (including Heaps)
  • Binary Search Trees
  • Balanced Search Trees
  • Graphs

Mathematical foundations

  • Problem abstraction with graphs
  • Data structures for graph representation
  • Fundamental graph traversal algorithms and applications
  • Connectivity and strong connectivity
  • Topological sorting

Proposed Learning Outcomes (spring 2022)

  • Explain the tradeoffs in data structure and algorithm design with respect to space/time complexity

Discrete math

  • Apply combined identities, geometric sums, permutations, and combinations
  • Explain the concept of the Pigeon Hole Principle

Pseudocode

  • Express a simple algorithm in pseudo code
  • Explain random access machine model – Determine the number of operations required to execute an algorithm through an analysis of pseudocode

Recursion

  • Define recurrence relation for a given recursive algorithm
  • Solve simple recurrence relations using substitution methods

Proofs

  • Apply various proof techniques for algorithm correctness (i.e. proof by counterexample, direct proof, proof by contrapositive, proof by contradiction)
  • Identification of the loop invariant by examining the pseudocode for an algorithm
  • Apply proof by induction when analyzing algorithms and reasoning about their correctness (ie. loop invariant)

Asymptotic Analysis

  • Define the concepts of problem size and running time
  • Define the concept of asymptotic time complexity using (Big Oh, Big Omega, Big Thetha, Little Oh, Little Omega)
  • Order functions by growth rate
  • Explain why efficiency matters
  • Compare/contrast time complexity measurements (best-case, average-case, or worst-case)
  • Justify the time complexity of various algorithms (best-case, worst-case)

ADT review

  • Recall and differentiate between stacks, queues, dequeues, lists
  • Recall the impact of data structure choice on algorithm runtime
  • Define the abstract data type Dictionary (i.e. Member, Insert, Delete operations)

Sorting

  • Describe characteristics of sorting (in-place, stable sort)
  • Recall definitions of partial and total orders
  • Recall properties of relations (reflexive, symmetric, antisymmetric, transitive)
  • Explain the comparison model of sorting and what correctness of comparison based sorting means
  • Analyze the best-case and worst-case running time of Insertion Sort, Bubble Sort, Selection Sort
  • Implement divide and conquer sorting algorithms (Merge Sort, Quicksort)
  • Analyze best-case, worst-case running time of divide and conquer sorting algorithms (Merge Sort, Quicksort)
  • Define the abstract data type Priority Queue (i.e. Member, Insert, DeleteMin/DeleteMax operations)
  • Analyze the worst-case running time of Heapsort
  • Explain why, in practice, Quicksort performs better than Heapsort
  • Apply Pigeon Hole Principle to prove nlogn lower bound of comparison-based sorting algorithms
  • Implement non-comparison sorting algorithms (Bucket Sort, Radix Sort)
  • Analyze best-case, worst-case running time of non-comparison sorting algorithms (Bucket Sort, Radix Sort)

Trees

  • Develop intuition that trees can be used to model many types of relations (ie. abstract syntax trees, hierarchies or organizations)
  • Define tree nomenclature (e.g. root, node, interior points, leaf nodes, parent, children, height, rotted trees, forests)
  • Prove tree properties (e.g. number of edges, number of edges in a forest with k components, or height of a balanced tree)
  • Evaluate tree representations/algorithms in terms of space/time complexity (i.e. linked, arrays)
  • Analyze and implement recursive and iterative tree traversal algorithms (i.e. pre-order/depth-first, in-order, post-order, level-order/breadth-first, Euler tour)
  • Recall the abstract data type Dictionary/Map (i.e. search, insert operations)
  • Recall the abstract data type Binary Search Tree (i.e. search, insert operations)
  • Describe delete/remove operation for Dictionary/Map and Binary Search Tree
  • Analyze the worst-case running time of Dictionary/Map and Binary Search Tree operations

Balanced Search Trees

  • Define and identify a balanced search tree (at least 2 of the following covered: AVL, B-Trees, 2-3 Trees, Red-Black Trees)
  • Analyze the worst-case running time of balanced search tree operations (search, insert, remove)
  • Prove properties of balanced search trees (height, min/max leaves)
  • Compare/contrast the runtime efficiency of operations in balanced and unbalanced trees

Graphs

  • Develop intuition that graphs can be used to model many types of relations (ie. maps, social and physical networks, biological structures, etc.)
  • Define graph nomenclature (e.g. undirected/directed graph, vertex, edge, etc.)
  • Provide precise mathematical definitions of fundamental constructs from discrete mathematics, including: undirected/directed graph, vertex, edge, arc, degree, adjacent, incident, path, cycle, self-loop, directed acyclic graph (DAG), complete graph, subgraph, number of edges in a complete graph, sparse and dense graph, shortest path, transitive closure, connected, strongly-connected, and spanning tree.
  • Implement graph representations (i.e. adjacency list, adjacency matrix) with related operations
  • Analyze abstract data type Graph algorithms in terms of space/time complexity
  • Implement iterative/recursive Graph traversal algorithms (i.e. preorder/depth-first (DFS), breadth-first (BFS))
  • Analyze worst-case running time of Graph traversal algorithms (i.e. preorder/depth-first (DFS), breadth-first (BFS))
  • Define spanning tree/spanning forest in relation to traversal algorithms
  • Define and apply transitive closure relations to directed graphs
  • Define algorithm to determine transitive closure on a directed graph
  • Determine whether a graph is cycle-free using DFS – Implement and apply a topological sort on a directed graph

Re: Computing Curricula

by pan » Tue Apr 05, 2022 11:46 am

https://www.uvic.ca/ecs/assets/docs/pro ... W-SENG.pdf

First Year
Term 1A – Fall
CSC 111 Fundamentals of Programming with Engineering Applications (c)
ENGR 110 Design and Communication I
ENGR 130 Introduction to Professional Practice
MATH 100 or MATH 109 MATH 110 Calculus I
PHYS 110 Introductory Physics I

Term 1B – Spring
CSC 115 Fundamentals of Programming: II
ENGR 120 Design and Communication II
ENGR 141 Engineering Mechanics
MATH 101 Calculus II
PHYS 111 Introductory Physics II

Work Term – Summer
✓ Second Year
Term 2A – Fall
ECE 255 (F) or CSC 230 1 Introduction to Computer Architecture
CHEM 101 Fundamentals of Chemistry
ECE 260 Continuous-Time Signals and Systems
MATH 122 Logic and Foundations
SENG 265 Software Development Methods
STAT 260 Introduction to Probability and Statistics I

CSC 225 Algorithms and Data Structures: I
ECE 310 Digital Signal Processing I
ECON 180 Introduction to Principles of Microeconomics
SENG 275 Software Testing
SENG 310 Human Computer Interaction
Comp. Studies Work Term – Fall

Third Year
Term 3A – Spring
ECE 458 (Sp) or CSC 361 1 Communication Networks
CSC 226 Algorithms and Data Structures: II
ECE 360 Control Theory and Systems I
SENG 321 Requirements Engineering
SENG 371 Software Evolution
Natural Science

ECE 355 or CSC 355 1 Microprocessor-Based Systems Digital Logic and Computer Organization
CSC 320 Foundations of Computer Science
CSC 360 Operating Systems
CSC 370 Database Systems
SENG 350 Software Architecture and Design
SENG 360 Security Engineering
Work Term – Spring

✓ Fourth Year
Term 4A – Summer
SENG 426 Software Quality Engineering
SENG 440 Embedded Systems
SENG 499
2 Technical Electives Comp. Studies
ECE 455 or CSC 460 1 Real Time Computer Systems Design Project or Design and Analysis of Real-time Systems
SENG 401 Social and Professional Issues
3 Technical Electives Natural Science

Re: Computing Curricula

by pan » Thu Mar 03, 2022 9:14 am

https://www.uvic.ca/ecs/computerscience ... 202009.pdf

CSC/SENG
Co-requisites
Electives
How will my
coursework be
distributed?

This worksheet has been created as a program planning tool for students entering the Department of Computer Science on
Sept. 1, 2020 or later. Students admitted to the department before this date should refer to the program requirements outlined in
the Academic Calendar that was in effect during the term they entered the program or – if they have declared their major – their CAPP
report, for the most accurate summary of remaining program requirements.
Refer to the University of Victoria Academic Calendar for a complete list of
course selections. Although every attempt has been made to ensure that
the information on this worksheet is accurate, in the case of any
discrepancy, the Academic Calendar shall be considered the authority.

CSC 110 1.5 Fundamentals of Programming I (python) 3-2-0
CSC 115 1.5 Fundamentals of Programming II (java) 3-2-0
MATH 100 or 109 1 1.5 Calculus I 3-0-1 Introduction to Calculus
MATH 101 1.5 Calculus II 3-0-1
MATH 122 1.5 Logic and Foundations (discrete math) 3-0-0
ATWP 135 or ENGL 146 or 147 2 1.5 Academic Reading and Writing 3-0-0 The Literature of Our Era Great Moments in English Literature
Electives
ED-D 101 recommended Learning Strategies for University Success
6.0

CSC 225 1.5 Algorithms and Data Structures I 3-1-0
CSC 226 1.5 Algorithms and Data Structures II 3-1-0
CSC 230 1.5 Introduction to Computer Architecture 3-1.5-0
SENG 265 1.5 Software Development Methods (linux, c, git, gdb, make, etc) 3-1.5-0
MATH 202 or 204 1.5 Intermediate Calculus for CSC and EOS 3-0-1 Calculus IV 3-0-1
MATH 211 1.5 Matrix Algebra I 3-0-0
STAT 260 1.5 Introduction to Probability and Statistics I 3-0-0
ENGR 240 1.5 Technical Communication 3-0-0
Electives 3.0

CSC 320 1.5 Foundations of Computer Science 3-0-1
CSC 360 1.5 Operating Systems 3-0-1
CSC 361 1.5 Computer Communications and Networks 3-1-1
CSC 370 1.5 Database Systems 3-0-0
CSC 300-level 4.5
CSC or SENG 300-level 1.5
Electives 3.0

Two of: CSC 446, 1.5 Operations Research: Simulation 3-0-0
CSC 463, 1.5 Wireless and Mobile Networks 3-0-0
CSC 466 1.5 Overlay and Peer-to-Peer Networking 3-0-0
CSC 467 1.5 Switching, Network Traffic and Quality of Service 3-0-0
CSC or SENG 400-level 1.5
Electives (300- or 400-level) 4.5
Electives 6.0

For information on how to use the UVic course registration system, please visit http://www.uvic.ca/course-registration.

How to Use This Worksheet

Although this worksheet has been designed according to a fulltime, four-year timeline, students are not required to
organize their degree in this manner and may elect to
complete it in more than four years, either as a part time
student; by participating in the Co-op program; or by
taking courses in the summer session. Refer to the
Undergraduate Academic Regulations in the Academic
Calendar for more detailed information.

Once a course has been completed, check it off in the “Done”
column. For requirements which offer a selection of courses,
enter the course selected under the “Course Selection”
column.

Courses Already Complete

A list of the courses you have already taken at UVic, received
transfer credit for (if applicable), and are currently registered
in can be found on your Administrative Transcript on My Page.

Pre- and Co-requisites

Course prerequisites are listed in Course Descriptions within
the Academic Calendar and must be satisfied before beginning
any given course.

“Co-requisite” can refer either to a Course Co-requisite or a
Program Co-requisite. Course Co-requisites must be completed
before or at the same time as a given course; a Program Corequisite (indicated on this worksheet in red) is a required
course offered by a unit other than Computer Science.

Make sure to review the individual course and program
requirements carefully before registering in order to sequence
your program correctly.

Choosing Electives

Electives (indicated in green) can be chosen from any
department on campus and may be at any level (unless
otherwise indicated), aslong asthe prerequisites are met. Use
these courses to explore different areas of study, or include a
minor or second major to your degree program.

Declaring Your Program

Students within the Computer Science program who have
successfully completed CSC 115 and Math 122 should submit a
Declaration of Degree Program form to the CSC Academic
Advisor. Once approved, the student will be able to access
their Curriculum, Advising and Program Planning (CAPP)
report, which should be used to track their progress
towards degree completion.

Minimum Grade Requirement

Students must achieve at least a ‘C’ in all required Computer
Science, Software Engineering, Mathematics, Statistics and
English courses. If a grade less than ‘C’ is earned, the course
will not count towards degree completion and must be retaken.

Footnotes

  1. MATH 109 is recommended for students with no prior
    exposure to calculus. The pre-requisites and learning
    outcomes for MATH 109 are the same as those for MATH
    100.

  2. ATWP 135 or ENGL 146 or 147 will also satisfy the
    University’s Academic Writing Requirement (AWR). If a
    student is not eligible to register for any of these courses,
    they should take ATWP 101 in the first term and ATWP 135
    or ENGL 146 or 147 in the second. ATWP 101 will count as
    an elective.

You are responsible for the completeness and accuracy
of your registration and for determining the
requirements of your program.

Always read course descriptions before you register to ensure
you have the necessary prerequisites and pay attention to
notes on mutually- exclusive and cross-listed courses (pairs of
courses in which credit will be awarded for only one).

Units Completed Standing
0 – 11.9 First Year Standing
12 – 26.9 Second Year Standing
27 – 41.9 Third Year Standing
42 or more Fourth Year Standing

and list of all csc undergraduate courses

CSC100 - Elementary Computing
CSC101 - Untangling the Web by Analyzing and Architecting Digital Solutions
CSC103 - Introductory Programming and Software Development
CSC105 - Computers and Information Processing
CSC106 - The Practice of Computer Science
CSC110 - Fundamentals of Programming I
CSC111 - Fundamentals of Programming with Engineering Applications
CSC115 - Fundamentals of Programming II
CSC116 - Fundamentals of Programming with Engineering Applications II
CSC130 - World Wide Web and Mobile Applications
CSC167 - Game Strategy, Interaction and Design
CSC205 - 2D Computer Graphics and Image Processing
CSC225 - Algorithms and Data Structures I
CSC226 - Algorithms and Data Structures II
CSC230 - Introduction to Computer Architecture
CSC299 - Undergraduate Directed Project
CSC305 - Introduction to Computer Graphics
CSC320 - Foundations of Computer Science
CSC322 - Logic and Programming
CSC330 - Programming Languages
CSC349A - Numerical Analysis
CSC350 - Computer Architecture
CSC355 - Digital Logic and Computer Organization
CSC360 - Operating Systems
CSC361 - Computer Communications and Networks
CSC370 - Database Systems
CSC371 - Data Management and Visualization
CSC375 - Introduction to Systems Analysis
CSC411 - Information Visualization
CSC421 - Introduction to Artificial Intelligence
CSC422 - Graph Algorithms
CSC423 - Randomized Algorithms
CSC425 - Analysis of Algorithms
CSC426 - Computational Geometry
CSC428A - Combinatorial Algorithms
CSC429 - Cryptography
CSC435 - Compiler Construction
CSC445 - Operations Research: Linear Programming
CSC446 - Operations Research: Simulation
CSC449 - Numerical Linear Algebra
CSC460 - Design and Analysis of Real-time Systems
CSC461 - Multimedia Systems
CSC462 - Distributed Computing
CSC463 - Wireless and Mobile Networks
CSC464 - Concurrency
CSC466 - Overlay and Peer-to-Peer Networking
CSC467 - Switching, Network Traffic and Quality of Service
CSC471 - Fundamentals of Computer Rendering
CSC472 - Fundamentals of Computer Modelling
CSC473 - Fundamentals of Computer Animation
CSC475 - Music Retrieval Techniques
CSC482A - Topics in Algorithms
CSC482B - Topics in Algorithms
CSC482C - Topics in Algorithms
CSC482D - Topics in Algorithms
CSC483A - Topics in Programming Methodology
CSC483B - Topics in Programming Methodology
CSC483C - Topics in Programming Methodology
CSC483D - Topics in Programming Methodology
CSC484A - Topics in Scientific Computing
CSC484B - Topics in Scientific Computing
CSC484C - Topics in Scientific Computing
CSC484D - Topics in Scientific Computing
CSC485A - Topics in Systems
CSC485B - Topics in Systems
CSC485C - Topics in Systems
CSC485D - Topics in Systems
CSC485E - Topics in Systems
CSC485F - Topics in Systems
CSC485G - Topics in Systems
CSC485H - Topics in Systems
CSC486A - Topics in Graphics
CSC486B - Topics in Graphics
CSC486C - Topics in Graphics
CSC486D - Topics in Graphics
CSC490 - Directed Studies
CSC497 - Interdisciplinary Project
CSC499 - Honours Seminar and Project

Re: Computing Curricula

by pan » Thu Feb 17, 2022 3:23 pm

C.2.5: Software Engineering Draft Competencies

Software Requirements

  1. Identify and document software requirements by applying a known requirements elicitation technique in work sessions with stakeholders, using facilitative skills, as a contributing member of a requirements team.
  2. Analyze software requirements for consistency, completeness, and feasibility, and recommend improved requirements documentation, as a contributing member of a requirements team.
  3. Specify software requirements using standard specification formats and languages that have been selected for the project and be able to describe the requirements in an understandable way to non-experts such as end-users, other stakeholders, or administrative managers, as a contributing member of a requirements team.
  4. Verify and validate the requirements using standard techniques, including inspection, modeling, prototyping, and test case development, as a contributing member of a requirements team.
  5. Follow process and product management procedures that have been identified for the project, as a contributing member of the requirements engineering team.

Software Design

  1. Present to business decision-makers architecturally significant requirements from a software requirements specification document.
  2. Evaluate and compare tradeoffs from alternative design possibilities for satisfying functional and non-functional requirements and write a brief proposal summarizing key conclusions for a client.
  3. Produce a high-level design of specific subsystems that is presentable to a non-computing audience by considering architectural and design patterns.
  4. Produce detailed designs for a client for specific subsystem high-level designs by using design principles and cross-cutting aspects to satisfy functional and non-functional requirements.
  5. Evaluate software testing consideration of quality attributes in the design of subsystems and modules for a developer/manufacturer.
  6. Create software design documents that communicate effectively to software design clients such as analysts, implementers, test planners, or maintainers.

Software Construction

  1. Design and implement an API using an object-oriented language and extended libraries, including parameterization and generics on a small project.
  2. Evaluate a software system against modern software practices such as defensive programming, error and exception handling, accepted fault tolerances, in a runtime mode that considers state-based table-driven constructions on a large project, as a member of a project team.
  3. Develop a distributed cloud-based system that incorporates grammar-based inputs and concurrency primitives for a medium size project and then conduct a performance analysis to fine-tune the system, as a member of a project team.

Software Testing

  1. Perform an integrative test and analysis of software components by using black-box and use case techniques in collaboration with the clients.
  2. Conduct a regressive test of software components for a client that considers operational profiles and quality attributes specific to an application following empirical data and the intended usages.
  3. Conduct a test utilizing appropriate testing tools focused on desirable quality attributes specified by the quality control team and the client.
  4. Plan and conduct process to design test cases for an organization using both clear- and black-box techniques to measure quality metrics in terms of coverage and performance.

Software Sustainment

  1. Describe the criteria for transition into a sustainment status and assist in identifying applicable systems and software operational standards.
  2. Relate to the needs of operational support personnel for documentation and training and help develop software transition documentation and operational support training materials.
  3. Help in determining the impacts of software changes on the operational environment.
  4. Describe the elements of software support activities, such as configuration management, operational software assurance, help desk activities, operational data analysis, and software retirement.
  5. Perform software support activities; and interact effectively with other software support personnel.
  6. Assist in implementing software maintenance processes and plans and make changes to software to implement maintenance needs and requests.

Software Process and Life Cycle

  1. Engage with a team to translate a software development process into individual areas of responsibility.
  2. Commit to and perform tasks related to assigned or agreed-upon areas of responsibility.
  3. Propose and justify software lifecycle process improvements based on team capacity, project progress data, and quality analysis as part of a software development team's retrospective activities.

Software Systems Engineering

  1. Provide a description of system engineering concepts and activities to identify problems or opportunities, explore alternatives, create models, and test them.
  2. Develop the big picture of a system in its context and environment to simplify and improve system architectures for supporting system designers.
  3. Develop interfaces, which interact with other subsystems. Use information hiding to isolate the contents and collaborations within subsystems, so that clients of the subsystem need not be aware of the internal design of subsystems.
  4. Work effectively with engineers and developers from other disciplines to ensure effective interaction.

Software Quality

  1. Distinguish quality attributes that are discernable at run-time (performance, security, availability, functionality, usability), from those not discernable at run-time (modifiability, portability, reusability, integrability, and testability) and those related to the intrinsic qualities of architecture and detailed design (conceptual integrity, correctness, and completeness).
  2. Design, coordinate, and execute, within a project team, software quality assurance plans for small software subsystems and modules, considering how quality attributes are discernable. Correspondingly, measure, document, and communicate appropriately the results.
  3. Perform peer code reviews for evaluating quality attributes that are not discernable at run-time.
  4. Explain the statistical nature of quality evaluation when performed on software execution; develop, deploy, and implement approaches to collect statistical usage and testing outcome data; compute and analyze statistics on outcome data.
  5. Interact with external entities including clients, users, and auditing agencies in conveying quality goals for processes and products.

Software Security

  1. Apply the project’s selected security lifecycle model (e.g., Microsoft SDL), as a contributing member of a project team.
  2. Identify security requirements by applying the selected security requirements method, as a contributing member of a software project team.
  3. Incorporate security requirements into architecture, high-level, and detailed design, as a contributing member of a software project team.
  4. Develop software using secure coding standards.
  5. Execute test cases that are specific to security.
  6. Adhere to the project’s software development process, as a contributing member of a software project team.
  7. Develop software that supports the project’s quality goals and adheres to quality requirements.

Software Safety

  1. Describe the principal activities with the development of software systems, which involve safety concerns (activities related to requirements, design, construction, and quality).
  2. Create and verify preliminary hazard lists; perform hazard and risk analyses, identify safety requirements.
  3. Implement and verify design solutions, using safe design and coding practices, to assure that the hazards are mitigated, and the safety requirements are met.
  4. Be aware of the consequences of the development of unsafe software, that is, the negative effect on those who use or receive services from the software.

Software Configuration Management
[None]

Software Measurement

  1. Develop and implement plans for the measurement of software processes and work products using appropriate methods, tools, and abilities.

Human-Computer Interaction
[None]

Project Management

  1. Explain the principal elements of management for a small project team.
  2. Assist in the managerial aspects of a small project team, including software estimation, project planning, tracking, staffing, resource allocation, and risk management.
  3. Develop and implement plans for the measurement of software processes and work products using appropriate methods and tools.
  4. Work effectively with other team members in project management activities.

Behavioral Attributes

  1. Engage with team members to collaborate in solving a problem, effectively applying oral and/or written communication skills. Work done towards team effort is accomplished on time; it complies with the role played in the team: it uses established quality procedures; and it advances the team effort.
  2. Assist in the analysis and presentation of a complex problem, considering the needs of stakeholders from diverse cultures, needs, and/or geographic locations. Help in developing a solution for the problem and presenting it to stakeholders, explaining the economic, social, and/or environmental impact of the proposed solution. Identify areas of uncertainty or ambiguity and explain how these have been managed.
  3. Analyze software employment contracts from various social and legal perspectives, ensuring that the final product conforms to professional and ethical expectations, and follows standard licensing practices.
  4. Locate and make sense of learning resources, and use these to expand knowledge, skills, and dispositions. Reflect upon one’s learning and how it provides a foundation for future growth.

Number of Draft Competencies = 56

Software Engineering Subgroup Members who are Task Force Members
Nancy Mead (Leader)
Hala Alrumaih
Marisa Exter
Rich LeBlanc
John Impagliazzo
Barbara Viola

Software Engineering Subgroup Members who are not Task Force Members (Contributors)
Kai H. Chang, Auburn University
Dick Fairley, Software and Systems Engineering Associates
Kevin Gary, Arizona State University
Thomas Hilburn, Embry-Riddle Aeronautical University
Gabriel Tamura, Universidad Icesi, Colombia
Chris Taylor, Milwaukee School of Engineering
Jim Vallino, Rochester Institute of Technology
Norha M. Villegas, Universidad Icesi, Colombia


Top