Course Materials for NSF CRCD 008078

This is the website for materials developed as part of the NSF, CRCD grant 0088078.

In our original proposal we targetted courses in three domains as part of our grant: networks, operating systems, and software engineering. In our proposal we indicated that we would revamp our introductory and advanced networks courses using the active lecture format we proposed.

Our method for developing materials was predicated on having the co-PIs with research expertise in specific areas work together with the PI (Astrachan) who would lead the effort to ensure materials were pedagogically appropriate and relevant to our proposal. In essence the content and research would be provided by the research faculty PIs while cognitive and pedagogical guidance would be provided by the PI with expertise and experience in those domains.

The PI with expertise in networking moved from Duke in 2003 and withdrew from the grant. Subsequent to this change we developed materials for courses in computational biology and bioinformatics as part of the grant, with funding going to undergraduates who developed materials for courses in those areas.


In our proposal we targetted introductory undergraduate and graduate courses in networks, as well as advanced courses in distributed systems. As part of the grant we introduced the undergraduate networks course at Duke, we had taught the course once prior to writing the proposal.

The last version of the course we taught as part of this proposal and the materials developed for it are accessible here.

Chat Room Assignment

As part of this proposal, Garrett Mitchener (then an undergraduate, now a post-doc) developed a Chat Room Assignment that resulted in a SIGCSE publication. Garrett's web-page has complete details, but that page may move, so the information from the page relevant to this grant is reproduced and linked below. We develop(ed) some assignments for his (co-PI's) networking class. We presented the chat room assignment, which includes two fully functional security systems, at the 2001 SIGCSE Symposium. The basic chat room is designed to be used in an introductory networking class as a "get your hands dirty with sockets" assignment. The security systems are optional and are designed to teach how kerberos and other security systems work.

Java Details

Java source code for the chat room.

Parts of this don't work very well because the Java cryptography extension has changed somewhat since I wrote it, and I haven't been able to find a "provider" that works with JDK 1.4 and with the chat room code. However, you might still find this useful.

(You might also want to check out the Logic of Authentication paper.)

A Chat Room Assignment for Teaching Network Security: Slide Show. These are the slides I presented at the 32nd SIGCSE Symposium in Charlotte, NC, February 2001.

A Chat Room Assignment for Teaching Network Security: Paper. This is a slightly fixed version of the article that appeared in the proceedings of the symposium. As per ACM rules, it is subject to the following: Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.

Macedon and Assignments

In the UCSD Distributed Systems and Networks course UCSD Spring 2005, CSE 123b an assignment and materials based on Macedon and its successor Mace are developed and used as part of the course. Work on these projects was partially funded as part of this proposal, and undergraduates and graduate students funded by the proposal contributed to that work. In particular undergraduate Sooraj Bhat and graduate student Dejan Kostic were funded under this grant.

Publications that resulted from the work include the following:

Network Applications in OO Software Courses

As part of the work targetted in our software design and engineering courses we developed materials that emphasize object-oriented techniques for developing network games. Undergraduates funded through this work include Benjamin Koh, David Bernstein, and Andrew English.

These students developed a platform for deploying and developing network games called NOOGA, a Networked Object Oriented Game Architecture. This led to an FIE publication and a complete set of code and documentation for developing assignments.

Systems Materials

In our original proposal we posed the following in re-examining existing courses in operating systems.
We propose the systematic re-examination of all aspects of operating system design and implementation from the point of view of energy efficiency rather than the more traditional OS metric of maximizing performance. Our research explores the implications that this major shift in focus can have upon all aspects of OS design: the services, policies, mechanisms, and internal structure of the OS itself.

A fundamental OS task is efficient management of the host resources. With energy as the focus, the question becomes how to make the basic interactions of hardware and software as energy efficient as possible for local computation (e.g., disconnected operation). One trend observed in traditional, performance-centric resource management involves latency hiding techniques. A significant difference and challenge in energy-centric resource management is that power consumption is not easy to hide.

Incorporating such research into the OS curriculum involves asking, for each unit of the course, how things change and what things stay the same when one adopts these different assumptions and objectives. We have developed a prototype of an OS course centered on the energy-efficiency theme in which we asked the question, "How would one design an energy-aware OS for mobile/embedded devices?" This experience will serve as the model for future course development under this grant.

For example, when considering the topic of virtual memory, a traditional topic is the page placement policy. This is the choice of which page frame in physical memory to allocate for an incoming virtual page during page fault handling. At the undergraduate level, this is often ignored. A graduate level OS course may consider the impact of the page placement policy on caching performance (reducing the potential for conflict misses). This leads to lectures and assigned readings on page coloring techniques. With the emergence of main memory technologies for portable systems such as RDRAM, the page placement policy takes on a potential new role and presentation of our research results follows naturally.

This prototype course has led to the development of several modules and materials for incorporating power and energy into existing courses. These materials are accessible here.

Bioinformatics and Social Network Materials

As part of the retargetting of this grant to address courses and research in bioinformatics we developed two courses for non-majors: Compsci 4g and Compsci 6g. The former is the most recent version of the course, it's not intended as an introduction to a computer science major. Although the materials from those courses offer information about the content, we highlight the most useful and portable assignments here.

Bioinformatics course materials are accessible here. Our preliminary work and tools on using social networks is accessible here.

Owen L. Astrachan
Last modified: Sun Mar 26 15:05:07 EST 2006