Computer Science Curricula 2013

Total Page:16

File Type:pdf, Size:1020Kb

Computer Science Curricula 2013 Computer Science Curricula 2013 Ironman Draft (Version 1.0) February 2013 The Joint Task Force on Computing Curricula Association for Computing Machinery IEEE-Computer Society CS2013 Steering Committee ACM Delegation IEEE-CS Delegation Mehran Sahami, Chair (Stanford University) Steve Roach, Chair (Univ. of Texas, El Paso) Andrea Danyluk (Williams College) Ernesto Cuadros-Vargas (Univ. Catolica San Pablo) Sally Fincher (University of Kent) Ronald Dodge (US Military Academy) Kathleen Fisher (Tufts University) Robert France (Colorado State University) Dan Grossman (University of Washington) Amruth Kumar (Ramapo Coll. of New Jersey) Beth Hawthorne (Union County College) Brian Robinson (ABB Corporation) Randy Katz (UC Berkeley) Remzi Seker (Embry-Riddle Aeronautical Univ.) Rich LeBlanc (Seattle University) Alfred Thompson (Microsoft, retired) Dave Reed (Creighton University) - 2 - Table of Contents Chapter 1: Introduction ................................................................................................................... 6 Overview of the CS2013 Process ............................................................................................... 7 Survey Input ................................................................................................................................ 8 High-level Themes ...................................................................................................................... 9 Knowledge Areas ...................................................................................................................... 10 Professional Practice ................................................................................................................. 11 Exemplars of Curricula and Courses ........................................................................................ 12 Timeline .................................................................................................................................... 12 Opportunities for Involvement .................................................................................................. 13 References ................................................................................................................................. 13 Acknowledgments..................................................................................................................... 14 Chapter 2: Principles ..................................................................................................................... 17 Chapter 3: Characteristics of Graduates ....................................................................................... 20 Chapter 4: Introduction to the Body of Knowledge...................................................................... 24 Knowledge Areas are Not Necessarily Courses (and Important Examples Thereof) ............... 25 Core Tier-1, Core Tier-2, Elective: What These Terms Mean, What is Required ................... 26 Further Considerations in Designing a Curriculum .................................................................. 29 Organization of the Body of Knowledge .................................................................................. 29 Curricular Hours ....................................................................................................................... 29 - 3 - Courses ...................................................................................................................................... 30 Guidance on Learning Outcomes .............................................................................................. 30 Overview of New Knowledge Areas ........................................................................................ 31 Chapter 5: Introductory Courses ................................................................................................... 36 Design Dimensions ................................................................................................................... 36 Mapping to the Body of Knowledge ......................................................................................... 41 Chapter 6: Institutional Challenges ............................................................................................... 43 Localizing CS2013.................................................................................................................... 43 Actively Promoting Computer Science .................................................................................... 43 Broadening Participation .......................................................................................................... 44 Computer Science Across Campus ........................................................................................... 45 Computer Science Minors......................................................................................................... 45 Computing Resources ............................................................................................................... 46 Maintaining a Flexible and Healthy Faculty ............................................................................. 46 Teaching Faculty ....................................................................................................................... 47 Undergraduate Teaching Assistants .......................................................................................... 48 Online Education ...................................................................................................................... 48 References ................................................................................................................................. 49 Appendix A: The Body of Knowledge ......................................................................................... 50 Algorithms and Complexity (AL) ............................................................................................. 50 Architecture and Organization (AR) ......................................................................................... 57 Computational Science (CN) .................................................................................................... 63 Discrete Structures (DS) ........................................................................................................... 70 Graphics and Visualization (GV).............................................................................................. 76 - 4 - Human-Computer Interaction (HCI)......................................................................................... 83 Information Assurance and Security (IAS)............................................................................... 91 Information Management (IM) ............................................................................................... 106 Intelligent Systems (IS)........................................................................................................... 115 Networking and Communication (NC) ................................................................................... 125 Operating Systems (OS) ......................................................................................................... 130 Platform-Based Development (PBD) ..................................................................................... 137 Parallel and Distributed Computing (PD) ............................................................................... 140 Programming Languages (PL) ................................................................................................ 151 Software Development Fundamentals (SDF) ......................................................................... 162 Software Engineering (SE) ..................................................................................................... 167 Systems Fundamentals (SF) .................................................................................................... 181 Social Issues and Professional Practice (SP) .......................................................................... 188 Appendix B: Migrating to CS2013 ............................................................................................. 200 Core Comparison .................................................................................................................... 200 General Observations .............................................................................................................. 204 Conclusions ............................................................................................................................. 205 Appendix C: Course Exemplars.................................................................................................. 220 - 5 - 1 Chapter 1: Introduction 2 ACM and IEEE-Computer Society have a long history of sponsoring efforts to establish 3 international curricular guidelines for undergraduate programs in computing on roughly a ten- 4 year cycle, starting with the publication of Curriculum 68 [1] over 40 years ago. This volume is 5 the latest in this series of curricular guidelines. As the field of computing has grown and 6 diversified, so too have the curricular recommendations, and there are now curricular volumes 7 for Computer Engineering, Information Systems, Information Technology, and Software 8 Engineering in addition to Computer Science [3]. These volumes are updated regularly with the 9 aim of
Recommended publications
  • Little Languages for Little Robots
    Little Languages for Little Robots Matthew C. Jadud Brooke N. Chenoweth Jacob Schleter University of Kent Canterbury Indiana University Gibson High School Canterbury, UK Bloomington Fort Branch, IN [email protected] Bloomington, IN [email protected] ABSTRACT where students learn by building personally meaningful With serendipity as our muse, we have created tools that artifacts in the world. allow students to author languages of their own design for robots of their own construction. In developing a Scheme 2. JACKLL: A NEW LANGUAGE compiler for the LEGO Mindstorm we realized that there In building up to the evolution of Jackll and the philoso- is great educational potential in the design and creation phies its creation embodies, we feel it is appropriate to of new languages for small robotics kits. As a side effect first introduce the LEGO Mindstorm, the target for our of bringing Scheme and the Mindstorm together in a cre- Scheme compiler, and situate Jackll with respect to other ative context, we have begun an exploration of teaching languages intended for beginner programmers. language design that is fundamentally different from the treatment of the subject in traditional literature. 2.1 What is the LEGO Mindstorm? The LEGO Mindstorm Robotics Invention System is a 1. INTRODUCTION commercial product from the LEGO Group that provides Jacob Schleter, a rising senior at Gibson High School, Fort an inexpensive, reconfigurable platform for exploring robotics. Branch, Indiana, took part in the Indiana University Col- It comes standard with two motors, two touch sensors, one lege of Arts and Sciences Summer Research Experience for light sensor, and hundreds of pieces for assembling all sorts six weeks during the summer of 2002.
    [Show full text]
  • Graph Traversals
    Graph Traversals CS200 - Graphs 1 Tree traversal reminder Pre order A A B D G H C E F I In order B C G D H B A E C F I Post order D E F G H D B E I F C A Level order G H I A B C D E F G H I Connected Components n The connected component of a node s is the largest set of nodes reachable from s. A generic algorithm for creating connected component(s): R = {s} while ∃edge(u, v) : u ∈ R∧v ∉ R add v to R n Upon termination, R is the connected component containing s. q Breadth First Search (BFS): explore in order of distance from s. q Depth First Search (DFS): explores edges from the most recently discovered node; backtracks when reaching a dead- end. 3 Graph Traversals – Depth First Search n Depth First Search starting at u DFS(u): mark u as visited and add u to R for each edge (u,v) : if v is not marked visited : DFS(v) CS200 - Graphs 4 Depth First Search A B C D E F G H I J K L M N O P CS200 - Graphs 5 Question n What determines the order in which DFS visits nodes? n The order in which a node picks its outgoing edges CS200 - Graphs 6 DepthGraph Traversalfirst search algorithm Depth First Search (DFS) dfs(in v:Vertex) mark v as visited for (each unvisited vertex u adjacent to v) dfs(u) n Need to track visited nodes n Order of visiting nodes is not completely specified q if nodes have priority, then the order may become deterministic for (each unvisited vertex u adjacent to v in priority order) n DFS applies to both directed and undirected graphs n Which graph implementation is suitable? CS200 - Graphs 7 Iterative DFS: explicit Stack dfs(in v:Vertex) s – stack for keeping track of active vertices s.push(v) mark v as visited while (!s.isEmpty()) { if (no unvisited vertices adjacent to the vertex on top of the stack) { s.pop() //backtrack else { select unvisited vertex u adjacent to vertex on top of the stack s.push(u) mark u as visited } } CS200 - Graphs 8 Breadth First Search (BFS) n Is like level order in trees A B C D n Which is a BFS traversal starting E F G H from A? A.
    [Show full text]
  • How to Design Co-Programs
    JFP, 15 pages, 2021. c Cambridge University Press 2021 1 doi:10.1017/xxxxx EDUCATIONMATTERS How to Design Co-Programs JEREMY GIBBONS Department of Computer Science, University of Oxford e-mail: [email protected] Abstract The observation that program structure follows data structure is a key lesson in introductory pro- gramming: good hints for possible program designs can be found by considering the structure of the data concerned. In particular, this lesson is a core message of the influential textbook “How to Design Programs” by Felleisen, Findler, Flatt, and Krishnamurthi. However, that book discusses using only the structure of input data for guiding program design, typically leading towards structurally recur- sive programs. We argue that novice programmers should also be taught to consider the structure of output data, leading them also towards structurally corecursive programs. 1 Introduction Where do programs come from? This mystery can be an obstacle to novice programmers, who can become overwhelmed by the design choices presented by a blank sheet of paper, or an empty editor window— where does one start? A good place to start, we tell them, is by analyzing the structure of the data that the program is to consume. For example, if the program h is to process a list of values, one may start by analyzing the structure of that list. Either the list is empty ([]), or it is non-empty (a : x) with a head (a) and a tail (x). This provides a candidate program structure: h [ ] = ::: h (a : x) = ::: a ::: x ::: where for the empty list some result must simply be chosen, and for a non-empty list the result depends on the head a and tail x.
    [Show full text]
  • Graph Traversal with DFS/BFS
    Graph Traversal Graph Traversal with DFS/BFS One of the most fundamental graph problems is to traverse every Tyler Moore edge and vertex in a graph. For correctness, we must do the traversal in a systematic way so that CS 2123, The University of Tulsa we dont miss anything. For efficiency, we must make sure we visit each edge at most twice. Since a maze is just a graph, such an algorithm must be powerful enough to enable us to get out of an arbitrary maze. Some slides created by or adapted from Dr. Kevin Wayne. For more information see http://www.cs.princeton.edu/~wayne/kleinberg-tardos 2 / 20 Marking Vertices To Do List The key idea is that we must mark each vertex when we first visit it, We must also maintain a structure containing all the vertices we have and keep track of what have not yet completely explored. discovered but not yet completely explored. Each vertex will always be in one of the following three states: Initially, only a single start vertex is considered to be discovered. 1 undiscovered the vertex in its initial, virgin state. To completely explore a vertex, we look at each edge going out of it. 2 discovered the vertex after we have encountered it, but before we have checked out all its incident edges. For each edge which goes to an undiscovered vertex, we mark it 3 processed the vertex after we have visited all its incident edges. discovered and add it to the list of work to do. A vertex cannot be processed before we discover it, so over the course Note that regardless of what order we fetch the next vertex to of the traversal the state of each vertex progresses from undiscovered explore, each edge is considered exactly twice, when each of its to discovered to processed.
    [Show full text]
  • Graph Traversal and Linear Programs October 6, 2016
    CS 125 Section #5 Graph Traversal and Linear Programs October 6, 2016 1 Depth first search 1.1 The Algorithm Besides breadth first search, which we saw in class in relation to Dijkstra's algorithm, there is one other fundamental algorithm for searching a graph: depth first search. To better understand the need for these procedures, let us imagine the computer's view of a graph that has been input into it, in the adjacency list representation. The computer's view is fundamentally local to a specific vertex: it can examine each of the edges adjacent to a vertex in turn, by traversing its adjacency list; it can also mark vertices as visited. One way to think of these operations is to imagine exploring a dark maze with a flashlight and a piece of chalk. You are allowed to illuminate any corridor of the maze emanating from your current position, and you are also allowed to use the chalk to mark your current location in the maze as having been visited. The question is how to find your way around the maze. We now show how the depth first search allows the computer to find its way around the input graph using just these primitives. Depth first search uses a stack as the basic data structure. We start by defining a recursive procedure search (the stack is implicit in the recursive calls of search): search is invoked on a vertex v, and explores all previously unexplored vertices reachable from v. Procedure search(v) vertex v explored(v) := 1 previsit(v) for (v; w) 2 E if explored(w) = 0 then search(w) rof postvisit(v) end search Procedure DFS (G(V; E)) graph G(V; E) for each v 2 V do explored(v) := 0 rof for each v 2 V do if explored(v) = 0 then search(v) rof end DFS By modifying the procedures previsit and postvisit, we can use DFS to solve a number of important problems, as we shall see.
    [Show full text]
  • Proceedings of the 8Th European Lisp Symposium Goldsmiths, University of London, April 20-21, 2015 Julian Padget (Ed.) Sponsors
    Proceedings of the 8th European Lisp Symposium Goldsmiths, University of London, April 20-21, 2015 Julian Padget (ed.) Sponsors We gratefully acknowledge the support given to the 8th European Lisp Symposium by the following sponsors: WWWLISPWORKSCOM i Organization Programme Committee Julian Padget – University of Bath, UK (chair) Giuseppe Attardi — University of Pisa, Italy Sacha Chua — Toronto, Canada Stephen Eglen — University of Cambridge, UK Marc Feeley — University of Montreal, Canada Matthew Flatt — University of Utah, USA Rainer Joswig — Hamburg, Germany Nick Levine — RavenPack, Spain Henry Lieberman — MIT, USA Christian Queinnec — University Pierre et Marie Curie, Paris 6, France Robert Strandh — University of Bordeaux, France Edmund Weitz — University of Applied Sciences, Hamburg, Germany Local Organization Christophe Rhodes – Goldsmiths, University of London, UK (chair) Richard Lewis – Goldsmiths, University of London, UK Shivi Hotwani – Goldsmiths, University of London, UK Didier Verna – EPITA Research and Development Laboratory, France ii Contents Acknowledgments i Messages from the chairs v Invited contributions Quicklisp: On Beyond Beta 2 Zach Beane µKanren: Running the Little Things Backwards 3 Bodil Stokke Escaping the Heap 4 Ahmon Dancy Unwanted Memory Retention 5 Martin Cracauer Peer-reviewed papers Efficient Applicative Programming Environments for Computer Vision Applications 7 Benjamin Seppke and Leonie Dreschler-Fischer Keyboard? How quaint. Visual Dataflow Implemented in Lisp 15 Donald Fisk P2R: Implementation of
    [Show full text]
  • Graphs, Connectivity, and Traversals
    Graphs, Connectivity, and Traversals Definitions Like trees, graphs represent a fundamental data structure used in computer science. We often hear about cyber space as being a new frontier for mankind, and if we look at the structure of cyberspace, we see that it is structured as a graph; in other words, it consists of places (nodes), and connections between those places. Some applications of graphs include • representing electronic circuits • modeling object interactions (e.g. used in the Unified Modeling Language) • showing ordering relationships between computer programs • modeling networks and network traffic • the fact that trees are a special case of graphs, in that they are acyclic and connected graphs, and that trees are used in many fundamental data structures 1 An undirected graph G = (V; E) is a pair of sets V , E, where • V is a set of vertices, also called nodes. • E is a set of unordered pairs of vertices called edges, and are of the form (u; v), such that u; v 2 V . • if e = (u; v) is an edge, then we say that u is adjacent to v, and that e is incident with u and v. • We assume jV j = n is finite, where n is called the order of G. •j Ej = m is called the size of G. • A path P of length k in a graph is a sequence of vertices v0; v1; : : : ; vk, such that (vi; vi+1) 2 E for every 0 ≤ i ≤ k − 1. { a path is called simple iff the vertices v0; v1; : : : ; vk are all distinct.
    [Show full text]
  • Essentials of Compilation an Incremental Approach
    Essentials of Compilation An Incremental Approach Jeremy G. Siek, Ryan R. Newton Indiana University with contributions from: Carl Factora Andre Kuhlenschmidt Michael M. Vitousek Michael Vollmer Ryan Scott Cameron Swords April 2, 2019 ii This book is dedicated to the programming language wonks at Indiana University. iv Contents 1 Preliminaries 5 1.1 Abstract Syntax Trees and S-expressions . .5 1.2 Grammars . .7 1.3 Pattern Matching . .9 1.4 Recursion . 10 1.5 Interpreters . 12 1.6 Example Compiler: a Partial Evaluator . 14 2 Integers and Variables 17 2.1 The R1 Language . 17 2.2 The x86 Assembly Language . 20 2.3 Planning the trip to x86 via the C0 language . 24 2.3.1 The C0 Intermediate Language . 27 2.3.2 The dialects of x86 . 28 2.4 Uniquify Variables . 28 2.5 Remove Complex Operators and Operands . 30 2.6 Explicate Control . 31 2.7 Uncover Locals . 32 2.8 Select Instructions . 32 2.9 Assign Homes . 33 2.10 Patch Instructions . 34 2.11 Print x86 . 35 3 Register Allocation 37 3.1 Registers and Calling Conventions . 38 3.2 Liveness Analysis . 39 3.3 Building the Interference Graph . 40 3.4 Graph Coloring via Sudoku . 42 3.5 Print x86 and Conventions for Registers . 48 v vi CONTENTS 3.6 Challenge: Move Biasing∗ .................... 48 4 Booleans and Control Flow 53 4.1 The R2 Language . 54 4.2 Type Checking R2 Programs . 55 4.3 Shrink the R2 Language . 58 4.4 XOR, Comparisons, and Control Flow in x86 . 58 4.5 The C1 Intermediate Language .
    [Show full text]
  • Efficient Applicative Programming Environments for Computer Vision
    Efficient Applicative Programming Environments for Computer Vision Applications Integration and Use of the VIGRA Library in Racket Benjamin Seppke Leonie Dreschler-Fischer University of Hamburg University of Hamburg Dept. Informatics Dept. Informatics Vogt-Kölln-Str. 30 Vogt-Kölln-Str. 30 22527 Hamburg, Germany 22527 Hamburg, Germany [email protected] [email protected] ABSTRACT 1. INTRODUCTION Modern software development approaches, like agile soft- Although applicative programming languages have a long ware engineering, require adequate tools and languages to tradition, they still do not belong to the scrap heap. In- support the development in a clearly structured way. At stead, they have proven to support state-of-the-art devel- best, they shall provide a steep learning curve as well as opment approaches by means of an interactive development interactive development environments. In the field of com- cycle, genericity and simplicity. The influence of applicative puter vision, there is a major interest for both, general re- programming paradigms is even observable in modern lan- search and education e.g. of undergraduate students. Here, guages, like Python, Dart and Go. However, there are some one often has to choose between understandable but compa- research areas, which are computationally of high costs and rably slow applicative programming languages, like Racket are thus currently less supported by applicative program- and fast but unintuitive imperative languages, like C/C++. ming languages. In this paper we present a system, which combines the best of each approaches with respect to common tasks in com- In this paper, we select the research field of computer vision puter vision, the applicative language Racket and the VI- and show how to connect applicative languages to a generic GRA C++ library.
    [Show full text]
  • Lecture 16: Dijkstra’S Algorithm (Graphs)
    CSE 373: Data Structures and Algorithms Lecture 16: Dijkstra’s Algorithm (Graphs) Instructor: Lilian de Greef Quarter: Summer 2017 Today • Announcements • Graph Traversals Continued • Remarks on DFS & BFS • Shortest paths for weighted graphs: Dijkstra’s Algorithm! Announcements: Homework 4 is out! • Due next Friday (August 4th) at 5:00pm • May choose to pair-program if you like! • Same cautions as last time apply: choose partners and when to start working wisely! • Can almost entirely complete using material by end of this lecture • Will discuss some software-design concepts next week to help you prevent some (potentially non-obvious) bugs Another midterm correction… ( & ) Bring your midterm to *any* office hours to get your point back. I will have the final exam quadruple-checked to avoid these situations! (I am so sorry) Graphs: Traversals Continued And introducing Dijkstra’s Algorithm for shortest paths! Graph Traversals: Recap & Running Time • Traversals: General Idea • Starting from one vertex, repeatedly explore adjacent vertices • Mark each vertex we visit, so we don’t process each more than once (cycles!) • Important Graph Traversal Algorithms: Depth First Search (DFS) Breadth First Search (BFS) Explore… as far as possible all neighbors first before backtracking before next level of neighbors Choose next vertex using… recursion or a stack a queue • Assuming “choose next vertex” is O(1), entire traversal is • Use graph represented with adjacency Comparison (useful for Design Decisions!) • Which one finds shortest paths? • i.e. which is better for “what is the shortest path from x to y” when there’s more than one possible path? • Which one can use less space in finding a path? • A third approach: • Iterative deepening (IDFS): • Try DFS but disallow recursion more than K levels deep • If that fails, increment K and start the entire search over • Like BFS, finds shortest paths.
    [Show full text]
  • Kent Academic Repository Full Text Document (Pdf)
    Kent Academic Repository Full text document (pdf) Citation for published version Chitil, Olaf (2009) Functional Programming. In: Wah, Benjamin W., ed. Encyclopedia of Computer Science and Engineering. John Wiley & Sons, Hoboken, NJ, pp. 1334-1344. ISBN 978-0-471-38393-2. DOI Link to record in KAR https://kar.kent.ac.uk/24064/ Document Version UNSPECIFIED Copyright & reuse Content in the Kent Academic Repository is made available for research purposes. Unless otherwise stated all content is protected by copyright and in the absence of an open licence (eg Creative Commons), permissions for further reuse of content should be sought from the publisher, author or other copyright holder. Versions of research The version in the Kent Academic Repository may differ from the final published version. Users are advised to check http://kar.kent.ac.uk for the status of the paper. Users should always cite the published version of record. Enquiries For any further enquiries regarding the licence status of this document, please contact: [email protected] If you believe this document infringes copyright then please contact the KAR admin team with the take-down information provided at http://kar.kent.ac.uk/contact.html Functional Programming Olaf Chitil University of Kent, United Kingdom Abstract Functional programming is a programming paradigm like object-oriented pro- gramming and logic programming. Functional programming comprises both a spe- cific programming style and a class of programming languages that encourage and support this programming style. Functional programming enables the programmer to describe an algorithm on a high-level, in terms of the problem domain, without having to deal with machine-related details.
    [Show full text]
  • The Racket Manifesto∗
    The Racket Manifesto∗ Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi Eli Barzilay, Jay McCarthy, Sam Tobin-Hochstadt Abstract The creation of a programming language calls for guiding principles that point the developers to goals. This article spells out the three basic principles behind the 20-year development of Racket. First, programming is about stating and solving problems, and this activity normally takes place in a context with its own language of discourse; good programmers ought to for- mulate this language as a programming language. Hence, Racket is a programming language for creating new programming languages. Second, by following this language-oriented approach to programming, systems become multi-lingual collections of interconnected components. Each language and component must be able to protect its specific invariants. In support, Racket offers protection mechanisms to implement a full language spectrum, from C-level bit manipulation to soundly typed extensions. Third, because Racket considers programming as problem solving in the correct language, Racket also turns extra-linguistic mechanisms into linguistic constructs, especially mechanisms for managing resources and projects. The paper explains these principles and how Racket lives up to them, presents the evaluation framework behind the design process, and concludes with a sketch of Racket’s imperfections and opportunities for future improvements. 1998 ACM Subject Classification D.3.3 Language Constructs and Features Keywords and phrases design
    [Show full text]