Computing Curricula

UVic computer science
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Computing Curricula

Post by pan »

https://www.acm.org/binaries/content/as ... cc2020.pdf

A Computing Curricula Series Report 2020 December 31

Computing Curricula 2020
CC2020

Paradigms for Global Computing Education encompassing undergraduate programs in

Computer Engineering
Computer Science
Cybersecurity
Information Systems
Information Technology
Software Engineering
with data science

pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

C.2.2: Computer Science Draft Competencies

AL-Algorithms and Complexity
A. Present to a group of peers the data characteristics of conditions or assumptions that can lead to different behaviors of specific algorithms and from the analysis, illustrate empirical studies to validate hypotheses about runtime measures.
B. Illustrate informally the time and space complexity of algorithms and use big-O notation formally to show asymptotic upper bounds and expected case bounds on time and space complexity, respectively.
C. Use recurrence relations to determine the time complexity of recursively defined algorithms by solve elementary recurrence relations and present the results to a group of scholars.
D. Determine an appropriate algorithmic approach to an industry problem and use appropriate techniques (e.g., greedy approach, divide-and-conquer algorithm, recursive backtracking, dynamic programming, or heuristic approach) that considers the tradeoffs between the brute force to solve a problem.
E. Implement basic numerical algorithm methods (e.g., search algorithms, common quadratic and O(N log N) sorting algorithms, fundamental graph algorithms, string-matching algorithm) to solve an industry problem and select the appreciate algorithm for a particular context.
F. Design a deterministic finite state machine for a local engineering firm that accepts a specified language and generates a regular expression to represent the language.

AR-Architecture and Organization
A. Use CAD tools for capture, synthesis, and simulation to evaluate simple building blocks of a simple computer design for a local engineering company.
B. Evaluate the timing diagram behavior of a simple processor-implemented at the logic circuit level and develop a report expressing the findings.
C. Write a simple program at the assembly/machine level for string processing and manipulation and for converting numerical data into hexadecimal form.
D. Implement a fundamental high-level construct in both machine and assembly languages and present the results to a group of peers.
E. Calculate the average memory access time under a variety of cache and memory configurations and develop a short report of the findings.

CN-Computational Science
A. Create a simple, formal mathematical model of a real-world situation and use that model in a simulation for a local technology company.

DS-Discrete Structures
A. Present to a peer group some practical examples of an appropriate set, function, or relation model, and interpret the associated operations and terminology in context.
B. Use symbolic propositional and predicate logic to model a real-life industry application by applying formal methods (e.g., calculating the validity of formulae and computing normal forms to the symbolic logic).
C. Apply rules of inference to construct proofs and present results to a group of professionals, appropriate proofs, or logical reasoning to solve a strategic problem.
D. Map real-world applications to appropriate counting formalisms and apply basic counting theories (e.g., counting arguments, the pigeonhole principle, modular arithmetic as well as compute permutations and combinations of a set) to solve an industry problem.
E. Analyze an industry problem to determine underlying recurrence relations and present the solution to professionals by using a variety of basic recurrence relations.
F. Model a real-world problem using appropriate graphing strategies (e.g., trees, traversal methods for graphs and trees, spanning trees of a graph) and determine whether two graph approaches are isomorphic.
G. Calculate different probabilities of dependent or independent events and expectations of random variables to solve a problem and present to a group of peers the ways to compute the variance for a given probability distribution.

GV-Graphics and Visualization
A. Design and develop a user interface using a standard API and that incorporates visual and audio techniques used for a local organization

HCI-Human-Computer Interaction
A. Design an interactive application, applying a user-centered design cycle with related tools and techniques (modes, navigation, visual design), to optimize usability and user experience within a corporate environment.
B. Analyze and evaluate a user interface that considers the context of use, stakeholder needs, state-of-the-art response interaction times, design modalities taking into consideration universal access, inclusiveness, assistive technologies, and culture-sensitive design.
C. Design and develop an interactive application for a local charity, applying a user-centered design cycle with related vocabulary, tools, and techniques that optimize usability and user experience.
D. Create and conduct a simple usability test to analyze and evaluate a user interface that considers the context of use taking into consideration universal access and culturally sensitive design.
E. Create a simple application, together with help and documentation, that supports a graphical user interface for an enterprise and conduct a quantitative evaluation and report the results.

IAS-Information Assurance and Security
A. Write the correct input validation code for a cybersecurity company after classifying common input validation errors.
B. Demonstrate to a group of security professionals some ways to prevent a race condition from occurring and ways to handle exceptions.

IM-Information Management
A. Contrast information with data and knowledge and describe to a group of professionals the advantages and disadvantages of centralized data control.
B. Demonstrate to a group of peers a declarative query language to elicit information from a database.
C. Contrast appropriate data models, including internal structures, for different types of data, and present an application to a group of professionals for the use of modeling concepts and notation of the relational data model.

IS-Intelligent Systems
A. Determine the characteristics of a given problem that an intelligent system must solve and present the results to a project team.
B. Formulate an industry problem specified in a natural language (e.g., English) as a constraint satisfaction problem and implement it using an appropriate technique (e.g., chronological backtracking algorithm or stochastic local search).
C. Implement an appropriate uninformed or informed search algorithm for an industry problem by characterizing time and space complexities of informed algorithm or designing the necessary heuristic evaluation function for an uninformed search algorithm to guarantee an optimal solution, respectively.
D. Translate a natural language (e.g., English) sentence for a corporate query system into a predicate logic statement by converting a logic statement into clause form and applying resolution to a set of logic statements to answer a query.
E. Make a probabilistic inference in a real-world industry problem using Bayes’ theorem to determine the probability of a hypothesis given evidence.

NC-Networking and Communication
A. Design and develop for a corporate customer a simple client-server socket-based application.
B. Design and implement a simple reliable protocol for an industry network by considering factors that affect the network’s performance.
C. Contrast fixed and dynamic allocation techniques as well as current approaches to congestion and present the results to company executives.

OS-Operating Systems
A. Apply knowledge of computing theory and mathematics to solve problems and present comprehensively the results and methods of the solution for either a professional or non-professional audience.
B. Implement software solutions within system constraints of a target system considering its abilities and constraints, and document and explain the implementation to both technical and non-technical audiences
C. Predict the behavior of systems under random events using knowledge of probability and expectation and inform users of its potential behavior.
D. Assess the security of a system using the knowledge of confidentiality, availability, and integrity with an understanding of risks, threats, vulnerabilities, and attack vectors, and relate its societal and ethical impact to the system's constituents.

PBD-Platform-based Development
A. Design for a client a responsive web application utilizing a web framework and presentation technologies in support of a diverse online community.
B. Develop a mobile app for a company that is usable, efficient, and secure on more than one device.
C. Simulate for a company an industry platform.
D. Develop and implement programming tasks via platform-specific APIs and present the results to a group of peers.
E. Present the analysis of a mobile industrial system and illustrate correct security vulnerabilities.

PD-Parallel and Distributed Computing
A. Design a scalable parallel algorithm for a computer firm by applying task-based decomposition or data-parallel decomposition.
B. Write a program for a client that correctly terminates when all concurrent tasks terminate by considering actors and/or reactive processes, deadlocks, and properly synchronized queues.
C. Write a test program for a company that reveals a concurrent programming error (e.g., missing an update when two activities both try to increment a variable).
D. Present computational results of the work and span in a program by identifying independent tasks that may be parallelized and determining the critical path for a parallel execution diagram.
E. Implement a parallel divide-and-conquer (and/or graph algorithm) for a client by mapping and reducing operations for the real industry problem and empirically measure its performance relative to its sequential analog.

PL-Programming Languages
A. Present the design and implementation of a class considering object-oriented encapsulation mechanisms (e.g., class hierarchies, interfaces, and private members).
B. Produce a brief report on the implementation of a basic algorithm considering control flow in a program using dynamic dispatch that avoids assigning to a mutable state (or considering reference equality) for two different languages.
C. Present the implementation of a useful function that takes and returns other functions considering variables and lexical scope in a program as well as functional encapsulation mechanisms.
D. Use iterators and other operations on aggregates (including operations that take functions as arguments) in two programming languages and present to a group of professionals some ways of selecting the most natural idioms for each language.
E. Contrast and present to peers (1) the procedural/functional approach (defining a function for each operation with the function body providing a case for each data variant) and (2) the object-oriented approach (defining a class for each data variant with the class definition providing a method for each operation).
F. Write event handlers for a web developer for use in reactive systems such as GUIs.
G. Demonstrate program pieces (such as functions, classes, methods) that use generic or compound types, including for collections to write programs.
H. Write a program for a client to process a representation of code that illustrates the incorporation of an interpreter, an expression optimizer, and a documentation generator.
I. Use type-error messages, memory leaks, and dangling-pointer to debug a program for an engineering firm.

SDF-Software Development Fundamentals
A. Create an appropriate algorithm to illustrate iterative, recursive functions, as well as divide-and-conquer techniques and use a programming language to implement, test, and debug the algorithm for solving a simple industry problem.
B. Decompose a program for a client that identifies the data components and behaviors of multiple abstract data types and implementing a coherent abstract data type, with loose coupling between components and behaviors.
C. Design, implement, test, and debug an industry program that uses fundamental programming constructs including basic computation, simple and file I/O, standard conditional and iterative structures, the definition of functions, and parameter passing.
D. Present the costs and benefits of dynamic and static data structure implementations, choosing the appropriate data structure for modeling a given engineering problem.
E. Apply consistent documentation and program style standards for a software engineering company that contribute to the readability and maintainability of software, conducting a personal and small-team code review on program component using a provided checklist.
F. Demonstrate common coding errors, constructing and debugging programs using the standard libraries available with a chosen programming language.
G. Refactor an industry program by identifying opportunities to apply procedural abstraction.

SE-Software Engineering
A. Conduct a review of a set of software requirements for a local project, distinguishing between functional and non-functional requirements, and evaluate the extent to which the set exhibits the characteristics of good requirements.
B. Present to a client the design of a simple software system using a modeling notation (such as UML), including an explanation of how the design incorporated system design principles.

SF-Systems Fundamentals
A. Design a simple sequential problem and a parallel version of the same problem using fundamental building blocks of logic design and use appropriate tools to evaluate the design for a commercial organization and evaluate both problem versions.
B. Develop a program for a local organization that incorporated error detection and recovery that incorporates appropriate tools for program tracing and debugging.
C. Design a simple parallel program for a corporation that manages shared resources through synchronization primitives and use tools to evaluate program performance.
D. Design and conduct a performance-oriented, pattern recognition experiment incorporating state machine descriptors and simple schedule algorithms for exploiting redundant information and data correction that is usable for a local engineering company and use appropriate tools to measure program performance.
E. Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in terms of capacity, miss/hit rate, and access time for a local engineering company.
F. Measure the performance of two application instances running on separate virtual machines at a local engineering company and determine the effect of performance isolation.

SP-Social Issues and Professional Practice
A. Perform a system analysis for a local organization and present the results to them in a non-technical way.
B. Integrate interdisciplinary knowledge to develop a program for a local organization.
C. Document industry trends, innovations, and new technologies and produce a report to influence a targeted workspace.
D. Present to a group of professionals an innovative computer system by using audience-specific language and examples to illustrate the group's needs.
E. Produce a document that is helpful to others that addresses the effect of societal change due to technology.
F. Adopt processes to track customer requests, needs, and satisfaction.
G. Compare different error detection and correction methods for their data overhead, implementation complexity, and relative execution time for encoding, detecting, and correcting errors and ensure that any error does not affect humans adversely.

Number of Draft Competencies = 84

Task Force Members on the CS Subgroup
Bruce McMillin (Leader)
John Impagliazzo
Richard LeBlanc
Ariel Sabiguero Yawelak
Ming Zhang

pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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

pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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

pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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

pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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 4187 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 4187 times
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

knowledge: how computer works

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

value: how computer enriches human beings and society
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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)
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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.
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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 3038 times
IMG_3691.jpg
IMG_3691.jpg (756.32 KiB) Viewed 3038 times
IMG_3692.jpg
IMG_3692.jpg (658.35 KiB) Viewed 3038 times
pan
Posts: 54855
Joined: Mon Sep 11, 2006 10:23 am

Re: Computing Curricula

Post by pan »

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.
Post Reply

Return to “UVic CS”