
Welcome to the University of Birmingham Environment homepage . The University recognises that in pursuing its educational and research objectives , it has a responsibility and it should take the opportunity to protect and nurture its immediate environment . By exercising proper control over its activities the University will promote the use of sustainable resources and discourage wasteful or damaging practices . The University 's Environmental Policy Statement sets out the University 's aims and objectives for safeguarding the environment . Further information , including Current Responsibilities at University Level , may be found on these web pages . For guidance on making requests for information under the Freedom of Information Act/Environmental Information Regulations please go to The University of Birmingham Freedom of Information Act Website . Staff and students should follow the Information for Staff and Students links on these pages . The University of Birmingham has an impressive record in environmental research and teaching , with around 130 academic staff actively engaged in a broad range of disciplines relating to this field . A Centre for Environmental Research and Training has been established to provide a focus for this environmental expertise and to enhance the University 's reputation as a centre of excellence . This page is maintained by the Health and Safety Unit 