Computer science curricula 2013

518 83 0
Computer science curricula 2013

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 A Cooperative Project of 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 Computer Science Curricula 2013 Copyright © 2013 by ACM and IEEE All rights reserved Copyright and Reprint Permissions: Permission is granted to use these curriculum guidelines for the development of educational materials and programs Other use requires specific permission Permission requests should be addressed to: ACM Permissions Dept at permissions@acm.org or to the IEEE Copyrights Manager at copyrights@ieee.org ISBN: 978-1-4503-2309-3 DOI: 10.1145/2534860 Web link: http://dx.doi.org/10.1145/2534860 ACM Order Number: 999133 Additional copies may be ordered from: IEEE Computer Society Customer Service Center 10662 Los Vaqueros P.O Box 3014 Los Alamitos, CA 90720-1314 IEEE Service Center IEEE 445 Hoes Lane P.O Box 1331 Piscataway, NJ 08855-1331 Tel: + 800 272 6657 Fax: + 714 821 4641 http://computer.org/cspress csbook@computer.org Tel: + 732 981 0060 Fax: + 732 981 9667 http://shop.ieee.org/store/ customerservice@ieee.org IEEE Computer Society Asia/Pacific Office Watanabe Bldg., 1-4-2 Minami-Aoyama Minato-ku, Tokyo 107-0062 JAPAN ACM Order Department P.O Box 30777 New York, NY 10087-0777 Tel: + 81 3408 3118 Fax: + 81 3408 3553 tokyo.ofc@computer.org 1-800-342-6626 1-212-626-0500 (outside U.S.) orders@acm.org Cover art by Robert Vizzini Printed in the United States of America Sponsoring Societies This report was made possible by financial support from the following societies: ACM IEEE Computer Society The CS2013 Final Report has been endorsed by ACM and the IEEE Computer Society Computer Science Curricula 2013 Final Report December 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 (Exelis Inc.) Andrea Danyluk (Williams College) Ernesto Cuadros-Vargas (Univ Católica 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) Elizabeth 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 10 Overview of the CS2013 Process 11 Survey Input 12 High-level Themes 13 Knowledge Areas 14 Professional Practice 15 Exemplars of Curricula and Courses 16 Community Involvement and Website 16 Acknowledgments 16 References 19 Chapter 2: Principles 20 Chapter 3: Characteristics of Graduates 23 Chapter 4: Introduction to the Body of Knowledge 27 Knowledge Areas are Not Necessarily Courses (and Important Examples Thereof) 28 Core Tier-1, Core Tier-2, Elective: What These Terms Mean, What is Required 29 Further Considerations in Designing a Curriculum 32 Organization of the Body of Knowledge 32 Curricular Hours 32 Courses 33 Guidance on Learning Outcomes 33 Overview of New Knowledge Areas 34 -3- Chapter 5: Introductory Courses 39 Design Dimensions 39 Mapping to the Body of Knowledge 45 Chapter 6: Institutional Challenges 46 Localizing CS2013 46 Actively Promoting Computer Science 46 Broadening Participation 47 Computer Science Across Campus 48 Computer Science Minors 48 Mathematics Requirements in Computer Science 49 Computing Resources 51 Maintaining a Flexible and Healthy Faculty 51 Teaching Faculty 52 Undergraduate Teaching Assistants 53 Online Education 53 References 54 Appendix A: The Body of Knowledge 55 Algorithms and Complexity (AL) 55 Architecture and Organization (AR) 62 Computational Science (CN) 68 Discrete Structures (DS) 76 Graphics and Visualization (GV) 82 Human-Computer Interaction (HCI) 89 Information Assurance and Security (IAS) 97 -4- Information Management (IM) 112 Intelligent Systems (IS) 121 Networking and Communication (NC) 130 Operating Systems (OS) 135 Platform-Based Development (PBD) 142 Parallel and Distributed Computing (PD) 145 Programming Languages (PL) 155 Software Development Fundamentals (SDF) 167 Software Engineering (SE) 172 Systems Fundamentals (SF) 186 Social Issues and Professional Practice (SP) 192 Appendix B: Migrating to CS2013 204 Outcomes 204 Changes in Knowledge Area Structure 205 Core Comparison 206 Conclusions 211 Appendix C: Course Exemplars 228 Course Exemplar Template 232 CSCI 140: Algorithms, Pomona College 234 COS 226: Algorithms and Data Structures, Princeton University 237 CS 256 Algorithm Design and Analysis, Williams College 240 CSE332: Data Abstractions, University of Washington 243 CS/ECE 552: Introduction to Computer Architecture, University of Wisconsin 246 CS150: Digital Components and Design, University of California, Berkeley 249 -5- CC152: Computer Architecture and Engineering, University of California, Berkeley 251 eScience, University of North Carolina at Charlotte 253 COSC/MATH 201: Modeling and Simulation for the Sciences, Wofford College 258 MAT 267: Discrete Mathematics, Union County College 262 CS103: Mathematical Foundations of Computer Science, Stanford University 265 CS109: Probability Theory for Computer Scientists, Stanford University 265 CS 250 - Discrete Structures I, Portland Community College 268 CS 251 - Discrete Structures II, Portland Community College 271 CS 175 Computer Graphics, Harvard University 274 CS371: Computer Graphics, Williams College 277 Human Aspects of Computer Science, University of York 280 FIT3063 Human Computer Interaction, Monash University 282 CO328: Human Computer Interaction, University of Kent 285 Human Computer Interaction, University of Cambridge 287 Human-Computer Interaction, Stanford University 289 Human Information Processing (HIP), Open University Netherlands 291 Software and Interface Design, University of Cambridge 293 Computer Systems Security (CS-475), Lewis-Clark State College 295 CS430: Database Systems, Colorado State University 298 Technology, Ethics, and Global Society (CSE 262), Miami University 301 CS 662; Artificial Intelligence Programming, University of San Francisco 304 Intelligenza Artificiale ( Artificial Intelligence), Politecnico di Milano 306 CMSC 471, Introduction to Artificial Intelligence, U of Maryland, Baltimore County 308 Introduction to Artificial Intelligence, Case Western Reserve University 310 -6- CS188: Artificial Intelligence, University of California Berkeley 313 Introduction to Artificial Intelligence, University of Hartford 315 Computer Networks I, Case Western Reserve University 318 CS144: Introduction to Computer Networking, Stanford University 320 Computer Networks, Williams College 323 CSCI 432 Operating Systems, Williams College 327 CS 420, Operating Systems, Embry-Riddle Aeronautical University 330 CPSC 3380 Operating Systems, U of Arkansas at Little Rock 332 582219 Operating Systems, University of Helsinki 334 RU STY1 Operating Systems, Reykjavik University 336 Parallel Programming Principle and Practice, Huazhong U of Science and Technology 339 Introduction to Parallel Programming, Nizhni Novgorod State University 342 CS in Parallel (course modules on parallel computing) 344 CS453: Introduction to Compilers, Colorado State University 348 Csc 453: Translators and Systems Software, The University of Arizona 351 CSCI 434T: Compiler Design, Williams College 353 Compilers, Stanford University 356 Languages and Compilers, Utrecht University 359 COMP 412: Topics in Compiler Construction, Rice University 361 CSC 131: Principles of Programming Languages, Pomona College 364 CSCI 1730: Introduction to Programming Languages, Brown University 367 CSC 2/454: Programming Language Design and Implementation, University of Rochester 369 CSE341: Programming Languages, University of Washington 372 CSCI 334: Principles of Programming Languages, Williams College 374 -7- CS 145: Introduction to Databases The course covers database design and the use of database management systems for applications It includes extensive coverage of the relational model, relational algebra, and SQL It also covers XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery, and XSLT The course includes database design in UML, and relational design principles based on dependencies and normal forms Many additional key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), JSON, and emerging NoSQL systems Class time will include guest speakers from industry and additional advanced topics as time and class interest permits Prerequisites: 103 and 107 URL: http://www.stanford.edu/class/cs145/ CS 147: Introduction to Human-Computer Interaction Design Introduces fundamental methods and principles for designing, implementing, and evaluating user interfaces Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios Prerequisite: 106B or equivalent programming experience URL: http://www.stanford.edu/class/cs147/ (Also listed as a course exemplar in CS2013) CS 155: Computer and Network Security Principles of computer systems security Attack techniques and how to defend against them Topics include: network attacks and defenses, operating system security, application security (web, apps, databases), malware, privacy, and security for mobile devices Course projects focus on building reliable code Prerequisite: 140 URL: http://www.stanford.edu/class/cs155/ CS 161: Design and Analysis of Algorithms Worst and average case analysis Recurrences and asymptotics Efficient algorithms for sorting, searching, and selection Data structures: binary search trees, heaps, hash tables Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, randomization Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths Possible additional topics: network flow, string searching Prerequisites: 103 and 109 URL: http://www.stanford.edu/class/cs161/ CS 181: Computers, Ethics, and Public Policy Primarily for majors entering computer-related fields Ethical and social issues related to the development and use of computer technology Ethical theory, and social, political, and legal considerations Scenarios in problem areas: privacy, reliability and risks of complex systems, and responsibility of professionals for applications and consequences of their work Prerequisite: 106B URL: http://www.stanford.edu/class/cs181/ - 501 - CS 194: Software Project Design, specification, coding, and testing of a significant team programming project under faculty supervision Documentation includes a detailed proposal Public demonstration of the project at the end of the quarter Prerequisites: 110 and 161 URL: http://www.stanford.edu/class/cs194/ EE 108B: Digital Systems II The design of processor-based digital systems Instruction sets, addressing modes, data types Assembly language programming, low-level data structures, introduction to operating systems and compilers Processor microarchitecture, microprogramming, pipelining Memory systems and caches Input/output, interrupts, buses and DMA System design implementation alternatives, software/hardware tradeoffs Labs involve the design of processor subsystems and processor-based embedded systems Prerequisite: 106B URL: http://ee108b.stanford.edu/ - 502 - Williams College Department of Computer Science www.cs.williams.edu Contact: Andrea Danyluk (andrea@cs.williams.edu) Curricular Overview Williams College is a highly-selective liberal arts college of about 2200 students To complete the requirements for the Bachelor of Arts degree, students must take at least 32 regularly graded one-unit courses, satisfy the requirements for a major, and fulfill distribution requirements (3 courses in each Division – Arts and Languages; Social Studies; Science and Mathematics Students must also complete Exploring Diversity course, writing-intensive courses, and quantitative/formal reasoning course) In order to ensure that students are free to explore a wide range of academic subjects in the liberal arts tradition, the College places a limit on the number of courses that may be required for a major – typically Students are free to take as many courses in their majors as they’d like, provided they complete the distribution requirements The Computer Science Department has eight faculty with a wide range of research interests and expertise, including distributed systems, parallel programming, architecture, artificial intelligence, programming languages, algorithms, graph theory, graphics, and networks Computer Science Major The Williams College Computer Science major has been strongly influenced by LACS (Liberal Arts Computer Science Consortium) model curricula In all, 10 courses are required for the major A minimum of courses is required in Computer Science, including Introductory Courses (offered every semester) • CSCI 134: Introduction to Computer Science • CSCI 136: Data Structures and Advanced Programming Core Courses (offered once each year) • CSCI 237: Computer Organization • CSCI 256: Algorithm Design and Analysis • CSCI 334: Principles of Programming Languages • CSCI 361: Theory of Computation Electives Two or more electives (bringing the total number of Computer Science courses to at least 8) chosen from 300- or 400-level courses in Computer Science At least one of these must be a course designated as a PROJECT COURSE “Reading”, “Research”, and “Thesis” courses not normally satisfy the elective requirement - 503 - Current electives are • Computer Networks • Digital Design and Modern Architecture • Distributed Systems [PROJECT] • Advanced Algorithms • Computational Graphics [PROJECT] • Artificial Intelligence [PROJECT] • Machine Learning • Operating Systems [PROJECT] • Compiler Design [PROJECT] • Computational Biology • Integrative Bioinformatics, Genomics, and Proteomics Lab Electives are offered, on average, once every other year Required Courses in Mathematics MATH 200: Discrete Mathematics and any other Mathematics or Statistics course at the 200-level or higher In addition, seniors are required to attend weekly computer science colloquia Curricular Analysis Here we provide a high level picture of our coverage of CS2013 Core-Tier1 and Tier2 topics For this analysis, we consider a typical major to take the introductory sequence, the four core courses, and three electives, as well as Discrete Mathematics Though only two electives are required for the major, Computer Science students take, on average, 3.6 electives (computed over the last three years) Many students also enroll in Reading, Research, or Thesis courses, but we not include those in our analysis We have offered two different versions of our Introduction to Computer Science course over the last several years The one offered most frequently has been a network-themed course We use that in our mapping below The specific electives we have used in the mapping are: • CSCI 337: Digital Design and Modern Architecture • CSCI 373: Artificial Intelligence • CSCI 432: Operating Systems Tier Tier Typical major – Intro, Core, Discrete Math + Architecture, AI, and OS 83% 60% Common CS core – Intro, Core, Discrete Math – not the complete major 70% 40% Typical major from row + either Distributed Systems or Networks 85% 68% - 504 - Knowledge Units in a Typical Major Algorithmic Strategies 4.5 10 12 1 337: Digital Design & Arch Machine-level rep of data Assembly level mach org 5.5 1.5 1.4 2.7 34 17 Memory org and arch .17 Fundamentals (336) n/a 96 n/a 98 75 80 30 0 Basic Logic Proof Techniques 8.3 DS Basics of Counting 2.7 Graphs & Trees Fundamental Concepts 100 Sets, Relations, & Functions GV 432: OS Digital Logic Discrete Probability 100 Basic Autom & Comp Interfacing and comm % Tier % Tier Fund DS & Alg CN 373: AI Basic Analysis AL AR Discrete Math # # # 136: Data Structures 237: Computer Organization 256: Alg Design and Analysis 334: Principles of Prog Languages 361: Theory of Computation Notation: < 25% of KU covered 25-75% of KU covered > 75% of KU covered 134: Intro to CS See preceding section for explanation of what we are taking to be a “typical” major The mapping below (as well as the % coverage) would be different for other paths through the major 2.7 1.8 Foundations HCI Designing Interaction - 505 - 67 Principles of Secure Design Defensive Programming Threats and Attacks IAS 337: Digital Design & Arch 432: OS 373: AI % Tier % Tier Fund Concepts in Security Discrete Math 136: Data Structures 237: Computer Organization 256: Alg Design and Analysis 334: Principles of Prog Languages 361: Theory of Computation # # # 134: Intro to CS Notation: < 25% of KU covered 25-75% of KU covered > 75% of KU covered 63 12 20 n/a 83 83 63 14 Network Security Cryptography Info Management Concepts IM 2 Database Systems Data Modeling 4 Fundamental Issues Basic Search Strategies 3.8 Basic Knowledge Rep Basic Machine Learning IS NC Introduction 1.1 Networked Applications Reliable Data Delivery Routing and Forwarding Local Area Networks 38 1.5 Resource Allocation Mobility - 506 - % Tier 337: Digital Design & Arch % Tier 55 80 100 21 100 100 97 NA 1.8 Concurrency 2.6 Scheduling and Dispatch 2.1 43 2.3 OS 1.5 Memory Management 1.5 Security and Protection PD 92 Overview of OS Operating Systems Principles 432: OS 373: AI Discrete Math 136: Data Structures 237: Computer Organization 256: Alg Design and Analysis 334: Principles of Prog Languages 361: Theory of Computation # # # 134: Intro to CS Notation: < 25% of KU covered 25-75% of KU covered > 75% of KU covered Parallelism Fundamentals Parallel Decomposition 2.2 Comm & Coord .6 Parallel Algorithms Parallel Architecture Object-Oriented Programming 2.7 2.7 10 Functional Programming Event-Driven & React Prog PL Basic Type Systems Program Representation Language Translation Algorithms and Design Fund Prog Concepts 10 Fund DS 12 4.6 6.2 SDF Development Methods 11 1.5 - 507 - 77 % Tier 337: Digital Design & Arch 1.3 % Tier 432: OS 1.3 67 Tools and Environments 43 28 76 80 67 1.5 Software Design 2.4 Software Construction 3 Software Verif & Valid Software Evolution 373: AI Software Project Manage SE 1.3 Software Processes Requirements Engineering Discrete Math 136: Data Structures 237: Computer Organization 256: Alg Design and Analysis 334: Principles of Prog Languages 361: Theory of Computation # # # 134: Intro to CS Notation: < 25% of KU covered 25-75% of KU covered > 75% of KU covered 25 25 Software Reliability SF Computational Paradigms 1.4 Cross-Layer Communications 1.8 65 2.4 State and State Machines 5.5 Parallelism 25 Evaluation 1.5 1.5 2.1 Resource Alloc & Sched Proximity 3 Virtualization & Isolation Reliab through Redundancy 1 33 Social Context Analytical Tools Professional Ethics SP Intellectual Property Privacy & Civil Liberties 43 Prof Communication Sustainability - 508 - 43 43 Possible Curricular Revisions Note that here we analyze the complete Williams College Computer Science curriculum, rather than the path that any individual student might take through the major The major areas of difference between our complete curriculum and the CS2013 core are as follows No coverage or very minimal coverage: • Human-Computer Interaction (HCI) • Information Management (IM) • Social Issues and Professional Practice (SP) More coverage but not close to CS2013 targets: • Software Engineering (SE) • Core-Tier of Parallel and Distributed Computing (PD) Could use more coverage: • Information Assurance and Security (IAS) Students are, in general, gaining more knowledge in SP and SE than our formal mapping suggests, through their lab experiences in project courses, research and reading courses, and colloquia In addition, because our students are required to take courses in the humanities and social sciences, they gain a broad appreciation for social, ethical, and political considerations that students at many engineering institutions not Considerations for possible changes in curriculum: We begin by noting that the complete Williams CS curriculum is quite strong in Algorithms and Complexity, Architecture, Discrete Mathematics, Graphics, Intelligent Systems, Networking and Communication, Operating Systems, Core-Tier of Parallel and Distributed Computing, Programming Languages, and Software Development Fundamentals It also covers Systems Fundamentals very well In revising our curriculum to better meet the CS2013 recommendations, our goal would be to balance the following considerations We want to continuously evolve our curriculum to remain current and even cutting-edge We desire to also maintain our traditional strengths And we must work within the constraints of a relatively small department and the restriction on the number of courses we can require for the major Possible changes: We have been involved in major curricular discussions over the past year Among the revisions we have discussed is the following Remove the following requirements: • Theory of Computation (but keep as an elective) • Discrete Mathematics + one additional Mathematics/Statistics course - 509 - Add: • • • Mathematical Foundations of Computer Science – this course would introduce topics from Discrete Mathematics in a more CS-focused manner Basic computability topics could be integrated into this course Introduction to Software Design – this could be a third course following our traditional introductory sequence It would introduce basic topics from software engineering and HCI, preparing students even better for our project electives This would also have the side effect of freeing up time in those electives that is currently spent on basic project management and design issues Topics in Security and Parallel Processing to existing courses/electives as appropriate Though a number of the Information Management learning outcomes fit well within a liberal arts context, quite a few seem less appropriate Similarly, the topics we would introduce in our Software Design course would not literally follow the CS2013 Software Engineering core Appendix: Information on Individual Courses A note on tutorial format courses: Modeled on Oxford-style tutorials, these courses offer students the opportunity to take a heightened responsibility for their own intellectual development Tutorials are typically limited to an enrollment of 10 Each week the professor sets the agenda, but the students are responsible for working through the material Once each week, students meet in pairs with the instructor to present their work and together delve even more deeply into the material CSCI 134 – Introduction to Computer Science This course introduces fundamental ideas in computer science and builds skills in the design, implementation, and testing of computer programs Students implement algorithms in the Java programming language with a strong focus on constructing correct, understandable, and efficient programs Students explore the material through the application area of computer networks Topics covered include object-oriented programming, control structures, arrays, recursion, and event-driven programming Format: lecture/laboratory http://dept.cs.williams.edu/~cs134/ CSCI 136 – Data Structures and Advanced Programming This course builds on the programming skills acquired in Computer Science 134 It couples work on program design, analysis, and verification with an introduction to the study of data structures Students are introduced to: lists, stacks, queues, trees, hash tables, and graphs Students are expected to write several programs, ranging from very short programs to more elaborate systems Emphasis is placed on the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify Format: lecture/laboratory http://dept.cs.williams.edu/~jeannie/cs136/index.html - 510 - CSCI 237 – Computer Organization This course studies the basic instruction set architecture and organization of a modern computer Over the semester the student learns the fundamentals of translating higher level languages into assembly language, and the interpretation of machine languages by hardware At the same time, a model of computer hardware organization is developed from the gate level upward Final projects focus on the design of a complex control system in hardware or firmware Format: lecture/laboratory CSCI 256 – Algorithm Design and Analysis This course investigates methods for designing efficient and reliable algorithms It introduces several algorithm design strategies that build on data structures and programming techniques introduced in Computer Science 136 These include induction, divide-and-conquer, dynamic programming, and greedy algorithms Particular topics of study include graph theory, hashing, and advanced data structures Format: lecture See course exemplar in Appendix C CSCI 334 – Principles of Programming Languages This course examines the concepts and structures governing the design and implementation of programming languages It presents an introduction to the concepts behind compilers and runtime representations of programming languages; features of programming languages supporting abstraction and polymorphism; and the procedural, functional, object-oriented, and concurrent programming paradigms Programs are required in languages illustrating each of these paradigms Format: lecture See course exemplar in Appendix C CSCI 361 – Theory of Computation This course introduces a formal framework for investigating both the computability and complexity of problems Students study several models of computation including finite automata, regular languages, context-free grammars, and Turing machines Topics include the halting problem and the P versus NP problem Format: lecture http://dept.cs.williams.edu/~heeringa/classes/cs361/f12/ CSCI 336 – Computer Networks This course explores the principles underlying the design of computer networks It examines techniques for transmitting information efficiently and reliably over a variety of communication media It looks at the addressing and routing problems that must be solved to ensure that transmitted data gets to the desired destination Students come to understand the impact that the distributed nature of all network problems has on their difficulty The course examines the ways - 511 - in which these issues are addressed by current networking protocols such as TCP/IP and Ethernet Format: tutorial – students will meet weekly with the instructor in pairs to present solutions to problem sets and reports evaluating the technical merit of current solutions to various networking problems http://dept.cs.williams.edu/~tom/courses/336/ CSCI 337 – Digital Design and Modern Architecture This tutorial course considers topics in the low-level design of modern architectures Course meetings review problems of designing effective architectures including instruction-level parallelism, branch-prediction, caching strategies, and advanced ALU design Readings are taken from recent technical literature Labs focus on the development of custom CMOS circuits to implement projects from gates to bit-sliced ALU’s Final group projects develop custom logic demonstrating concepts learned in course meetings Format: tutorial/laboratory CSCI 339 – Distributed Systems This course studies the key design principles of distributed systems Covered topics include communication protocols, processes and threads, naming, synchronization, consistency and replication, fault tolerance, and security Students also examine some specific real-world distributed systems case studies, ranging from the Internet to file systems Class discussion is based on readings from the textbook and research papers The goals of this course are to understand how large-scale computational systems are built, and to provide students with the tools necessary to evaluate new technologies after the course ends Format: lecture/laboratory http://dept.cs.williams.edu/~jeannie/cs339/index.html CSCI 336 – Advanced Algorithms This course explores advances in algorithm design, algorithm analysis and data structures The primary focus is on randomized and approximation algorithms, randomized and advanced data structures, and algorithmic complexity Topics include combinatorial algorithms for cut, packing, and covering problems, linear programming algorithms, approximation schemes, hardness of approximation, random search trees, and hashing Format: tutorial http://dept.cs.williams.edu/~heeringa/classes/cs356T/f11/ CSCI 371 – Computational Graphics This course teaches the fundamental techniques behind applications such as PhotoShop, medical MRIs, video games, and movie special effects It begins by building a mathematical model of the interaction of light with surfaces, lenses, and an imager Students then study the data structures and processor architectures that allow for efficiently evaluating that physical model Students complete a series of programming assignments for both photorealistic image creation and realtime 3D rendering using C++, OpenGL, and GLSL These assignments cumulate in a multi-week final project Topics covered in the course include: projective geometry, ray tracing, bidirectional - 512 - surface scattering functions, binary space partition trees, matting and compositing, shadow maps, cache management, and parallel processing on GPUs Format: lecture/laboratory See course exemplar in Appendix C CSCI 373 – Artificial Intelligence This course introduces fundamental techniques in the field of Artificial Intelligence It covers methods for knowledge representation, reasoning, problem solving, and learning It then explores those further by surveying current applications in selected areas such as game playing and natural language processing Students complete several programming projects, including a large project of their own design that spans most of the second half of the semester Format: lecture/laboratory http://dept.cs.williams.edu/~andrea/cs373/ CSCI 374 – Machine Learning This tutorial examines the design, implementation, and analysis of machine learning algorithms It covers examples of supervised learning algorithms (including decision tree learning, support vector machines, and neural networks), unsupervised learning algorithms (including k-means and expectation maximization), and optionally reinforcement learning algorithms (such as Q learning and temporal difference learning) It introduces methods for the evaluation of learning algorithms, as well as topics in computational learning theory Format: tutorial http://dept.cs.williams.edu/~andrea/cs374/ CSCI 432 – Operating Systems This course explores the design and implementation of computer operating systems Topics include historical aspects of operating systems development, systems programming, process scheduling, synchronization of concurrent processes, virtual machines, memory management and virtual memory, I/O and file systems, system security, os/architecture interaction, and distributed operating systems Format: lecture/laboratory See course exemplar in Appendix C CSCI 434 – Compiler Design This tutorial covers the principles and practices for the design and implementation of compilers and interpreters Topics include all stages of the compilation and execution process: lexical analysis; parsing; symbol tables; type systems; scope; semantic analysis; intermediate representations; run-time environments and interpreters; code generation; program analysis and optimization; and garbage collection The course covers both the theoretical and practical implications of these topics Students construct a full compiler for a simple object-oriented language Format: tutorial/laboratory See course exemplar in Appendix C - 513 - CSCI 315 – Computational Biology This course provides an overview of Computational Biology Topics covered include database searching, DNA sequence alignment, phylogeny reconstruction, protein structure prediction, microarray analysis, and genome assembly using techniques such as string matching, dynamic programming, suffix trees, hidden Markov models, and expectation-maximization Format: lecture/laboratory CSCI 319 – Integrative Bioinformatics, Genomics, and Proteomics Lab This course makes use of one well-studied system, the highly conserved Ras-related family of proteins, which play a central role in numerous fundamental processes within the cell The course integrate bioinformatics and molecular biology, using database searching, alignments and pattern matching, phylogenetics, and recombinant DNA techniques to reconstruct the evolution of gene families by focusing on the gene duplication events and gene rearrangements that have occurred over the course of eukaryotic speciation By utilizing high throughput approaches to investigate genes involved in the MAPK signal transduction pathway in human colon cancer cell lines, students uncover regulatory mechanisms that are aberrantly altered by siRNA knockdown of putative regulatory components This functional genomic strategy is coupled with independent projects using phosphorylation-state specific antisera to test hypotheses Proteomic analysis introduces the students to de novo structural prediction and threading algorithms, as well as datamining approaches and Bayesian modeling of protein network dynamics in single cells Flow cytometry and mass spectrometry are used to study networks of interacting proteins in colon tumor cells Format: laboratory/lecture - 514 - A Cooperative Project of ... Computer Society The CS2013 Final Report has been endorsed by ACM and the IEEE Computer Society Computer Science Curricula 2013 Final Report December 2013 The Joint Task Force on Computing Curricula. . .Computer Science Curricula 2013 Curriculum Guidelines for Undergraduate Degree Programs in Computer Science December 20, 2013 The Joint Task Force on Computing Curricula Association... Localizing CS2013 46 Actively Promoting Computer Science 46 Broadening Participation 47 Computer Science Across Campus 48 Computer Science Minors

Ngày đăng: 01/06/2018, 14:56

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan