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.
The last version of the course we taught as part of this proposal and the materials developed for it are accessible here.
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.
Publications that resulted from the work include the following:
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.
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
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.