CIS307 and the Knowledge Units
in
ACM Computing Curricula 2001

CIS307 is intended as a capstone on system topics. It is articulated in three parts, part1, part2, part3. The following table summarizes the knowledge units from the ACM2001 Curricula that are covered. In square brakets are indicated the CIS307 lecture hours vs. the ACM lecture hours.
PART 1
OS3 OS8 OS11
[5/6] [3/5] [3/4]
[11/15]
PART 2
NC1 NC2
[5/2] [7/7]
[12/9]
PART 3
AL4 NC3 AL9 NC4 NC5 IM7 IM8
[3/3] [2/3] [1/14] [2/3] [2/12] [2/3] [1/3]
[13/41]
Student performance is assessed through three exams. Each exam has a two parts. Part 1 is on conceptual topics and problem solving. Part 2 is on programming. They are asked to write functions similar to those they wrote in their homeworks.
I have listed the Knowledge Units of the ACM2001 Curricula that are discussed in CIS307. I have marked with an [X] the topics covered and within square brackets, in bold, the number of hours dedicated to the knowledge unit. Here is an extensive list of questions asked in cis307's exams.
The detailed list of the knowledge units covered in the course follows.


Part 1: Review of OS concepts with stress on concurrency. Unix review. Threads. Total of 13 lecture hours [this is 2 more than what indicated for the knowledge units. The reason is the discussions on Unix, and threads.]

OS3. Concurrency [core]

Suggested time: 6 hours [5]

Topics:

Learning objectives:

  1. Justify the presence of concurrency within the framework of an operating system.
  2. Demonstrate the potential run-time problems arising from the concurrent operation of many (possibly a dynamic number of) tasks.
  3. Summarize the range of mechanisms (at an operating system level) that can be employed to realize concurrent systems and be able to describe the benefits of each.
  4. Explain the different states that a task may pass through and the data structures needed to support the management of many tasks.
OS8. File systems [elective]

Suggested time: 5 hours [3]

Topics:

Learning objectives:

  1. Summarize the full range of considerations that support file systems.
  2. Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each.
OS11. System performance evaluation [elective]

Suggested time: 4 hours [3]

Topics:

Learning objectives:

  1. Describe the performance metrics used to determine how a system performs.
  2. Explain the main evaluation models used to evaluate a system.


Part 2: Review of communication and networking concepts. It is a subset of topics covered in networking course. Substantial amount of socket level programming. Total of 12 lecture hours.

NC1. Introduction to net-centric computing [core]

Suggested time: 2 hours [5]

Topics:

Learning objectives:

  1. Demonstrate a range of common networked applications including e-mail, telnet, ftp, newsgroups, and web browsers.
  2. Explain the hierarchical, layered structure of a typical network architecture.
  3. Summarize the many areas of interest that lie within the net-centric computing area.
NC2. Communication and networking [core]

Suggested time: 7 hours [7]

Topics:

Learning objectives:

  1. Discuss important network standards, including who develops them and how they evolve.
  2. Describe the responsibilities of the first four layers of the ISO reference model.
  3. Discuss the differences between circuit switching and packet switching along with the advantages and disadvantages of each.
  4. Explain how a network can detect and correct transmission errors.
  5. Illustrate how a packet is routed over the Internet.
  6. Install a simple network with two clients and a single server using standard host-configuration software tools such as DHCP.


Part 3: Introduction to distributed systems concepts and distributed system development issues. Total of 13 lecture hours.

AL4. Distributed algorithms [core]

Suggested time: 3 hours [3]

Topics:

Learning objectives:

  1. Explain the distributed paradigm.
  2. Distinguish between logical and physical clocks.
  3. Describe the relative ordering of events.
  4. Explain one simple distributed algorithm.
NC3. Network security [core]

Suggested time: 3 hours [2]

Topics:

Learning objectives:

  1. Illustrate how public-key cryptography works.
  2. Summarize various authentication protocols.
  3. Generate and distribute a PGP key pair and use the PGP package to send an encrypted e-mail message.
NC4. The web as an example of client-server computing [core]

Suggested time: 3 hours [2]

Topics:

Learning objectives:

  1. Explain the different roles and responsibilities of clients and servers for a range of possible applications.
  2. Select a range of tools that will ensure an efficient approach to implementing various client-server possibilities.
  3. Design and build a simple interactive web-based application (e.g., a simple web form that collects information from the client and stores it in a file on the server).
NC5. Building web applications [elective]

Suggested time: 12 hours [2]

Topics:

Learning objectives:

  1. Illustrate how interactive client-server web applications of medium size can be built using different types of Web technologies.
  2. Demonstrate how to implement a database-driven web site works, explaining the relevant technologies involved in each tier of the architecture and the accompanying performance tradeoffs.
  3. Implement a distributed system using any two distributed object frameworks and compare them with regard to performance and security issues.
AL9. Cryptographic algorithms [elective]

Suggested time: 14 hours [1]

Topics:

Learning objectives:

  1. Describe efficient basic number-theoretic algorithms, including greatest common divisor, multiplicative inverse mod n, and raising to powers mod n.
  2. Describe at least one public-key cryptosystem, including a necessary complexity-theoretic assumption for its security.
  3. Create simple extensions of cryptographic protocols, using known protocols and cryptographic primitives.
IM7. Transaction processing [elective]

Suggested time: 3 hours [2]

Topics:

Learning objectives:

  1. Create a transaction by embedding SQL into an application program.
  2. Demonstrate an understanding of implicit commits.
  3. Describe what issues are specific to efficient transaction execution.
  4. Explain when and why rollback is needed and how logging assures proper rollback.
  5. Explain the effect of different isolation levels on the concurrency control mechanisms and how to choose the proper isolation level when implementing a transaction protocol.
IM8. Distributed databases [elective]

Suggested time: 3 hours [1]

Topics:

Learning objectives:

  1. Explain the techniques used for data fragmentation, replication, and allocation during the distributed database design process.
  2. Evaluate simple strategies for executing a distributed query to select the strategy that minimizes the amount of data transfer.
  3. Explain how the two-phase commit protocol is used to deal with committing a transaction that accesses databases stored on multiple nodes.
  4. Describe distributed concurrency control based on the distinguished copy techniques and the voting method.
  5. Describe the three levels of software in the client-server model.