A comprehensive overview of the core concepts and technologies of data communications. Communication protocols and network design principles are studied relative to the seven-layer OSI reference model. Programming projects will emphasize how network software is implemented and assist in explaining the over-all end-to-end behavior of networks. We assume an extensive scholastic programming background with languages such as C and PERL within a UNIX environment.