Appendix C
From CS2001 Wiki
Course Guidance
By way of guidance, the Review Task Force is providing guidance in two different areas:
- An introduction to security
- A course on parallelism
In some sense these are intended to reflect areas of concern in the curriculum and changes in emphasis since 2001.
Contents |
C.1 Introduction to Security
This course is a survey of the fundamentals of information assurance and computer security. Topics include: security standards, policies and best practices; principles of ethical and professional behavior; regulatory compliance and legal investigations; information assurance; risk management and threat assessment; business continuity and disaster recovery planning; security architecture and design; elements of cryptography; digital forensics; physical (environmental) security; networking fundamentals; access control and authentication; network and application security; exploiting network, web, software and insider vulnerabilities.
CS3xx Introduction to Computer Security
Prerequisite: a course that provides an introduction to programming building on a broad introduction to computer science; in the context of CS2001 such a course would be CS 102
Co-requisite: a programming course that provides an introduction to data structures and algorithms; in the context of CS2001 such a course would be CS 103
Syllabus:
- Security Goals, Fundamentals (confidentiality, integrity, availability, etc.)
- Introduction to risk assessment and managment
- Security standards in government and industry (Common Criteria/Orange Book, sample corporate and institutional security policies)
- Computer system protection principles (UNIX and Windows)
- Access controls, including MAC, DAC, and role-based
- Networking fundamentals (Internet, TCP/IP network services)
- Cryptography fundamentals
- Authentication, passwords, introduction to protocols, Kerberos
- Security operations
- Attacks: software attacks, malicious code, buffer overflows, social engineering, injection attacks, and related defense tools
- Network attacks: Denial of service, flooding, sniffing and traffic redirection, defense tools and strategies
- Attacking web sites: cross-site scripting
- IPSec, Virtual Private networks and Network Address Translation
- Ethics, SP issues that are related
- Drop on Forensics
C.2 Course on Parallelism
The class is a suitable prerequisite to a capstone project class focusing on creating a complex parallel system. It cuts across several advance courses of CC2001, repackaging the material to eliminate more specialized information and emphasizing content that is most applicable to current students: CS314 Parallel Algorithms, Parallel Architectures, CS326 Concurrent and Distributed Systems, CS333 Cluster Computing, CS343 Programming Paradigms, CS344 Functional Programming, CS372 Transaction Processing, CS390 Advanced Software Development.
CS3xx Parallel Computation
A survey of parallel computation across hardware, software, programming languages, algorithms and applications areas. The emphasis is on learning enough context in each topic area to support effective parallel programming.
Prerequisites: CS112A Programming Methodology, CS210 Algorithm Design and Analysis, CS221 Architecture and Operating Systems
Syllabus:
- Context for present day parallel computing, including everyday parallelism, parallelism in processor architecture, parallel computer structures from multicore to huge clusters, etc.
- Basic concepts: models of parallel computers, differences (and similarities) between parallel and distributed computation, data and task parallelism, threads and processes, latency and bandwidth, locality, concurrent and exclusive reads and writes, dependences, MIMD/SIMD, Amdahl’s Law, performance measurements, true speed-up, relative speed-up, efficiency, super-linear speed-up
- Shared memory parallel machine architecture concepts, multi-threading, multi-core, SMP, snooping and directory-based coherency protocols, sequential consistency, private and shared memory
- Distributed memory parallel machine architecture concepts, disjoint address spaces, globalization of address spaces, message passing, synchronous and asynchronous communication
- Interconnection networks, common topologies, bisection bandwidth, bus and cross-bar connectivity
- Basics of threaded parallel computation, including problem partitioning, hazards of concurrency, locking, lock contention, thrashing, privatization, false sharing, serialization
- Algorithmic issues including problem decomposition, memory reference costs, techniques for improving locality, parallel prefix, controlling granularity and dependences, block and cyclic storage organization, tree decompositions, static and dynamic task assignment
- Languages and libraries for threaded parallel programming, POSIX threads, Java threads and memory model, automatic threading systems (OpenMP)
- Languages and libraries for distributed memory parallel programming, PVM and MPI, partitioned global address space languages (PGAS)
- Higher-level approaches including array-based, functional, domain-specific
- Transaction approach to memory consistency, hardware techniques, software techniques, rollback
- Emerging languages including high-productivity parallel languages
- Co-processor techniques including GPU, Cell, FPGA, characteristics of co-processor programming methodologies
- Experimental techniques, measuring performance, computing speed-up, experimental precautions, controlling variation, experimental dangers, reporting performance
| To give feedback on this area of revision, go to here and use your ACM user name and login. |
| To give feedback on security section of this area of revision, go to hereand use your ACM user name and login. |
| To give feedback on concurrency section of this area of revision, go to here and use your ACM user name and login. |
Copyright © 2008, ACM, Inc. and IEEE, Inc.
