It is often preferable to build a storage service out of a collection of individual components rather than out of a single monolithic server. The reasons for preferring such a structure are increased fault-tolerance, scalability, and economics. However, the distributed nature of the system can make it complex to design, difficult to implement, and nearly impossible to test making the whole enterprise a daunting one. One of the ways of reducing the complexity of distributed storage systems is to first design a set of simple abstractions and services that can then be composed easily to provide the required functionality. The talk will illustrate examples of this technique with reference to some systems – Petal ‘96, Frangipani ‘97, Boxwood ‘04, and Eclipse ‘05– on which I have worked. These systems demonstrate that it is feasible to build complex storage systems using a set of building blocks that are easy to design, implement, and test.
Byron Cook is a researcher at Microsoft’s research lab at Cambridge University:
In this talk I will discuss Terminator, the first known automatic program termination prover to support large programs with arbitrarily nested loops or recursive functions, and imperative features such as references, functions with side-effects, and function pointers.
Terminator is based on a newly discovered method of counterexample-guided abstraction refinement for program termination proofs. Additionally, to increase the proof power, Terminator computes inductive invariants of the program when checking the lemmas that imply termination. The talk will close with results from recent experiments with Terminator on dispatch routines from Windows device drivers. This is joint work with Andreas Podelski and Andrey Rybalchenko.
Is our discipline of computer science in a time of crisis? Our field has helped unlock the human genome, has allowed a hand-held device to be a gateway to the world’s information, and has transformed communication and society. Yet students do not want to study computer science. Do enrollment trends portend serious problems requiring immediate solutions or is the crisis greatly exaggerated?
In 1988 Dijkstra excoriated the then current practice of teaching computer science by programming computers using ad hoc methods when he wrote about the “Cruelty of Really Teaching Computer Science”. When we revisit this question today we must rise above discussions about whether Scheme is better than Java, which IDE is better for novices, and what the role of the command-line is in today’s curriculum. We must discuss whether teaching computer science today should be based on understanding recursion and the Towers of Hanoi or a single nucleotide polymorphism in a DNA sequence. We need to leverage new modes of access and communication in developing and building our curriculum. Should we build our courses on concepts that will let our students design and build the next BLAST or the next Web-CT?
In this talk I will discuss possible directions we can take in teaching computer science and why if we look to ourselves for answers, rather than to other disciplines, we may lose our franchise within the university.
If you’ve got the new Home Suite Home CD, but have no idea what to do with the coaster that you’ve got, consider coming out to this tutorial!
A Home Suite Home tutorial will be held on Thursday September 29th, 12:30-13:30 in DMP 301. If you are having problems getting your JDK set up at home, this is the place to go. An overview of remote computing will also be given - e.g., secure file transfer, etc. The tutorial will be run by Charles Kryszik who is a senior undergraduate student in the department and who put together the HSH CD.
Come and learn about:
Jdk1.5 / Eclipse 3.1 installation/troubleshooting and common issues.
Firefox/Thunderbird installation/setup to access your CS-Account email from home.