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 » Fri Jun 14, 2024 2:12 pm

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. 

Sys1

* Understand and explain the history and evolution of computer architecture and organization.
* Describe and explain the binary data representation and format translation in computer systems.
* Describe and explain the classic von Neumann machine architecture, instruction set, and instruction cycle and pipelining in CPU.
* Describe and compare the performance of the memory hierarchy in current computer systems.
* Describe and compare the access methods and performance of input/output (I/O) devices.
* Write small programs in C to understand data representation and the interaction of CPU, memory and I/O devices.
* Describe and understand the principles and tradeoffs of the design, performance, reliability and security of computer systems.
* Understand the objectives and functions of modern operating systems.

Sys2

* Understand and explain the history and evolution of computer operating systems and structures.
* Describe and explain the principles and interaction of computer systems, operating systems and user applications with safety and protection.
* Describe and explain the scheduling, communication, synchronization and concurrency of processes and threads.
* Describe and compare the functionality and performance of cache, main memory and virtual memory.
* Describe and compare the management of different I/O devices, particularly storage devices.
* Describe and compare the design and implementation tradeoffs of file systems, directories and files.
* Write programs in C to understand and evaluate operating systems interfaces, CPU scheduling, memory allocation and filesystem implementation.
* Understand the objectives and functions of modern computer networks as an extension of operating systems.

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 5288 times
IMG_3691.jpg
IMG_3691.jpg (756.32 KiB) Viewed 5288 times
IMG_3692.jpg
IMG_3692.jpg (658.35 KiB) Viewed 5288 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 6437 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 6437 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


Top