IBM Announces Recipients Of
    Internet Research Grants

    
 Resources Will Help Universities Explore Internet2
    Applications 

    
 Waltham, Mass., January 15, 1998 -- As part of its $3.5 million
    commitment to support the development of Internet2, IBM has announced
    the names of seven higher education institutions that will receive
    resources through the company's sponsored research program. These
    resources will facilitate development of Internet2 applications and
    participation in the Internet2 project. The grant recipients are
    Clemson University in South Carolina, Duke University in North
    Carolina, Indiana University, Northwestern University in Illinois,
    the University of Chicago, the University of Michigan, and the
    University of South Carolina. 

    
 Donated resources will be in the form of hardware, software,
    switches and other pieces of network infrastructure critical to
    Internet2 applications, connections, and operation. In addition,
    grant recipients have access to the technological expertise of IBM
    personnel. Many of the grant recipients will use the donations to create
    networked consortiums with other higher educational institutions in
    their areas. Grant resources will be used to enhance specific advanced
    technology applications -- ranging from telemedicine to the
    maintenance of a digital Movietone newsreel archive. 

    
 Irving Wladawsky-Berger, general manager of IBM's Internet
    Division, emphasized the company's commitment to the new Internet. He
    said, The Internet has succeeded beyond our wildest imagination. More
    and more people are getting connected around the world, as the Internet
    is being embraced across the research community, educational
    institutions, businesses of all sizes, and society at large. The
    Internet2 efforts will take us all to the next levels, with significant
    improvements in bandwidth and quality of service. Most important, the
    Internet2 efforts will make possible all kinds of new, exciting
    applications. IBM is very proud to continue its associations and
    contributions to the Internet. 

    
 Sean C. Rush, general manager of IBM Global Education, agrees. He
    said, Internet2 is being developed with the needs of higher education
    inmind. Internet2 capabilities include high speed, dependability,
    and networking power. For example, data base analysis that took hours or
    days will take minutes. Researchers worldwide will be able to share
    large amounts of data without interruptions or slow downs. And finally,
    Internet2 will serve as an important repository for a wealth of
    materials, and researchers will now have high quality, high speed
    access to books, art work, films, and music. 

    
 Don Haile, vice president of IBM's Networking Hardware
    Development, has worked closely with several Internet2 universities
    over the past year. The recent revolutions in networking technology,
    including the advent of ATM, switched LANs and route-switching, are
    allowing today's university faculty to consider network-based
    applications that they previously only dreamed about, said Don.
    Professors can transmit voice and video in real time over a network,
    enriching research collaborations and distance learning classroom
    experiences. By providing high speed communication links, Internet2
    is supporting research that will benefit students and local
    communities, across the country. 

    
 Internet2 

    
 Since its recent inception, Internet2 has grown from 34 to over 100
    research universities. With Internet2, network applications are
    better served by new network points-of-presence (PoPs) capable of
    transmitting gigabits (billions of bits) of information per second.
    Internet2 participants broaden their research and development
    expenditures to help create these GigaPoPs. Member universities,
    working with private member companies and non-profit organizations
    are developing tools for scientific research and highe
r education in
    the 21st century. The Internet2 homepage is located at
    http://www.internet2.edu/ 

    
 IBM Global Education Industry 

    
 The Global Education Industry is a unit of IBM, the largest
    information technology company. The Global Education Industry
    provides targeted products, consulting, and services to K-12
    education and institutions of higher education throughout North
    America, Latin America, Europe and Asia. IBM's Higher Education
    homepage is located at http://www.hied.ibm.com 

    
 IBM Internet Division 

    
 IBM is a leader in the development of the Internet and is dedicated
    to helping customers and developers exploit the potential of network
    computing, drawing on the resources of over 24 information technology
    products and services, including computer systems, software,
    networking systems, storage devices and microelectronics.
    Developers and customers can find out more about IBM's many initiatives
    relating to Internet technologies, products and services on the Web at
    http://www.internet.ibm.com 

    
 IBM Networking Hardware Division 

    
 IBM's Networking Hardware Division (NHD) develops and
    manufactures industry-leading networking technologies and
    products, providing global end-to-end solutions for Token-Ring,
    Ethernet, Gigabit Ethernet, ATM, IP and SNA networks. IBM NHD also
    provides consulting, education, service and support worldwide to help
    customers achieve their business objectives. For additional
    information on IBM's networking solutions, visit our Web site at
    www.networking.ibm.com or call 800-IBM-3333 or outside the U.S.
    770-644-5997. # # # The following term is a trademark of the IBM
    Corporation in the United States or other countries or both: IBM
