In a co-operative research project with the Motorola Advanced Radiodata Research Centre, we are examining a number of issues related to client-server computing in a wireless and mobile environment. These activities led to a 2-day short course for industry participants on all areas of wireless and mobile computing, covering topics such as TDMA vs. CDMA, AMPS and CDPD, GSM, mobile IP, TCP over a wireless link, etc., that I taught in March 1997. The course notes are available on the WWW: http://ccnga.uwaterloo.ca/~tkunz/mobile/summary.html. The main focus of our work, as described in [22, 24, 25], is on the design of adaptive mobile applications, mobile applications that execute reasonably well in widely different networking environments. Outdoor cellular systems such as GSM provide data rates of less then 20 kbps, indoor wireless LANs such as WaveLAN operate at 1-2 Mbps, and a docking station connected to the Ethernet provides a 10 Mbps connection. Rather than executing different and specialized binaries for each network scenario, we aim at developing applications that dynamically adapt to the available bandwidth. We design mobile applications as a collection of (potentially mobile) objects. Our API provides information about network statistics, and the runtime system uses this information, together with application-specific information (number and size of objects, for example), to dynamically distribute the objects between the portable device and a proxy server (a machine in the wired network close to the portable device). This dynamic partitioning potentially allows to overcome the limitations of the portable device (such as a small PDA) and to adapt to changing bandwidths by the same executable. To demonstrate the feasibility of this approach, we designed and implemented a mobile e-mail browser. We currently compare its performance to the performance of various fixed partitioning schemes under different bandwidths.