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:
- States and state diagrams [X]
- Structures (ready list, process control blocks, and so forth) [X]
- Dispatching and context switching [X]
- The role of interrupts [X]
- Concurrent execution: advantages and disadvantages [X]
- The "mutual exclusion" problem and some solutions [X]
- Deadlock: causes, conditions, prevention [X]
- Models and mechanisms (semaphores, monitors, condition variables, rendezvous) [X]
- Producer-consumer problems and synchronization [X]
- Multiprocessor issues (spin-locks, reentrancy) [X]
Learning objectives:
- Justify the presence of concurrency within the framework of an operating system.
- Demonstrate the potential run-time problems arising from the concurrent operation of many (possibly a dynamic number of) tasks.
- 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.
- 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:
- Files: data, metadata, operations, organization, buffering, sequential, nonsequential [X]
- Directories: contents and structure
- File systems: partitioning, mount/unmount, virtual file systems
- Standard implementation techniques [X]
- Memory-mapped files [X]
- Special-purpose file systems
- Naming, searching, access, backups
Learning objectives:
- Summarize the full range of considerations that support file systems.
- 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:
- Why system performance needs to be evaluated [X]
- What is to be evaluated [X]
- Policies for caching, paging, scheduling, memory management, security, and so forth
- Evaluation models: deterministic, analytic, simulation, or implementation-specific [X]
- How to collect evaluation data (profiling and tracing mechanisms) [X]
Learning objectives:
- Describe the performance metrics used to determine how a system performs.
- 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:
- Background and history of networking and the Internet [X]
- Network architectures [X]
- The range of specializations within net-centric computing [X]
- Networks and protocols [X]
- Networked multimedia systems
- Distributed computing [X]
- Mobile and wireless computing
Learning objectives:
- Demonstrate a range of common networked applications including e-mail, telnet, ftp, newsgroups, and web browsers.
- Explain the hierarchical, layered structure of a typical network architecture.
- 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:
- Network standards and standardization bodies
- The ISO 7-layer reference model in general and its instantiation in TCP/IP
[X]
- Circuit switching and packet switching [X]
- Streams and datagrams [X]
- Physical layer networking concepts (theoretical basis, transmission media, standards) [X]
- Data link layer concepts (framing, error control, flow control, protocols) [X]
- Internetworking and routing (routing algorithms, internetworking, congestion control) [X]
- Transport layer services (connection establishment, performance issues) [X]
Learning objectives:
- Discuss important network standards, including who develops them and how they evolve.
- Describe the responsibilities of the first four layers of the ISO reference model.
- Discuss the differences between circuit switching and packet switching along with the advantages and disadvantages of each.
- Explain how a network can detect and correct transmission errors.
- Illustrate how a packet is routed over the Internet.
- 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:
- Consensus and election [X]
- Termination detection [X]
- Fault tolerance
- Stabilization
Learning objectives:
- Explain the distributed paradigm.
- Distinguish between logical and physical clocks.
- Describe the relative ordering of events.
- Explain one simple distributed algorithm.
NC3. Network security [core]
Suggested time: 3 hours [2]
Topics:
- Fundamentals of cryptography
- Secret-key algorithms
- Public-key algorithms
- Authentication protocols
- Digital signatures
- Examples
Learning objectives:
- Illustrate how public-key cryptography works.
- Summarize various authentication protocols.
- 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:
- Web technologies [X]
- Server-side programs [X]
- Common gateway interface (CGI) programs
- Client-side scripts
- The applet concept
- Characteristics of web servers [X]
- Handling permissions
- File management
- Capabilities of common server architectures
- Role of client computers
- Nature of the client-server relationship [X]
- Web protocols [X]
- Support tools for web site creation and web management
- Developing Internet information servers [X]
- Publishing information and applications
Learning objectives:
- Explain the different roles and responsibilities of clients and servers for a range of possible applications.
- Select a range of tools that will ensure an efficient approach to implementing various client-server possibilities.
- 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:
- Protocols at the application layer [X]
- Principles of web engineering [X]
- Database-driven web sites
- Remote procedure calls (RPC) [X]
- Lightweight distributed objects
- The role of middleware [X]
- Support tools
- Security issues in distributed object systems [X]
- Enterprise-wide web-based applications
Learning objectives:
- Illustrate how interactive client-server web applications of medium size can be built using different types of Web technologies.
- 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.
- 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:
- Historical overview of cryptography
- Private-key cryptography and the key-exchange problem [X]
- Public-key cryptography [X]
- Digital signatures [X]
- Security protocols [X]
- Applications (zero-knowledge proofs, authentication, and so on)
Learning objectives:
- Describe efficient basic number-theoretic algorithms, including greatest common divisor, multiplicative inverse mod n, and raising to powers mod n.
- Describe at least one public-key cryptosystem, including a necessary complexity-theoretic assumption for its security.
- Create simple extensions of cryptographic protocols, using known protocols and cryptographic primitives.
IM7. Transaction processing [elective]
Suggested time: 3 hours [2]
Topics:
- Transactions [X]
- Failure and recovery [X]
- Concurrency control [X]
Learning objectives:
- Create a transaction by embedding SQL into an application program.
- Demonstrate an understanding of implicit commits.
- Describe what issues are specific to efficient transaction execution.
- Explain when and why rollback is needed and how logging assures proper rollback.
- 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:
- Distributed data storage
- Distributed query processing
- Distributed transaction model [X]
- Concurrency control [X]
- Homogeneous and heterogeneous solutions
- Client-server
Learning objectives:
- Explain the techniques used for data fragmentation, replication, and allocation during the distributed database design process.
- Evaluate simple strategies for executing a distributed query to select the strategy that minimizes the amount of data transfer.
- Explain how the two-phase commit protocol is used to deal with committing a transaction that accesses databases stored on multiple nodes.
- Describe distributed concurrency control based on the distinguished copy techniques and the voting method.
- Describe the three levels of software in the client-server model.