Undergraduate PROGRAMS

Course Information


Application program interface and network transport services including User Datagram Protocol and Transmission Control Protocol from the Internet protocol suite. Client-server organization and design of synchronous, asynchronous, and multithreaded client and server applications. Design, implementation, and testing techniques to improve robustness and performance. Design and implementation of servers and clients for standard Internet application protocols. Partially duplicates CS 4254 and credit will not be allowed for both.

Why take this course?

The Internet, other computer networks, and related network applications are rapidly growing in importance for both general and highly specialized uses. Computer engineers are increasingly asked to incorporate network functionality into systems. Electrical engineering students are increasingly asked to either interface communications systems with network software or to implement network software as part of a communications system. This course prepares students to undertake such design and implementation tasks, with a special focus on building applications that rely directly on standard transport services such as TCP and UDP and on realizing robust, high-performance applications. Secondly, the course is valuable to electrical and computer engineers working in other aspects of networking as it relates network protocols to network applications and many of the concepts and techniques covered in the class apply to general network protocol design and implementation. Finally, the course presents multithreading, events and messages for the first time electrical engineering students and, through design projects, makes these concepts concrete to both electrical and computer engineering students. This course differs from CS 4254, Computer Network Architecture and Programming, in three important ways. First, coverage in CS 4254 is split almost evenly between architecture and programming while this course focuses in considerably more depth on the specific topic of design and implementation of network applications. (A new ECPE undergraduate course in computer network engineering is anticipated that will provide in-depth coverage of network architecture and design.) Second, this course is highly design- and project-oriented as is consistent with the previously noted focus of this course on programming. Third, this course is taught without requiring prior in-depth knowledge of operating systems (at the level of CS 3204) which is not required of electrical engineering students but is a prerequisite for CS 4254.

Design Technical Elective for CPE; Technical Elective for EE


C- or better in 2504 and 2574

Strong programming ability in a programming language such as C or C++, user-level understanding of an operating systems such as Microsoft Windows or UNIX, and basic knowledge of computer systems are required for this course. ECPE 2504, Introduction to Computer Engineering, provides sufficient background in basic knowledge of computer systems. ECPE/CS 2574, Introduction to Data Structures and Software Engineering, provides sufficient background in software design, programming, and use of an operating system.

Major Measurable Learning Objectives

  • describe network services provided to applications;
  • describe the relation of network applications to TCP and UDP, standard Internet transport protocols;
  • describe the operation, design, and implementation of network applications and application-level protocols based on the client-server model;
  • design, develop, debug, and test network applications and application-level protocols using a standard application program interface; and
  • improve the robustness and performance of network applications by optimizing both application-level protocols and code structure.

Course Topics


Percentage of Course

Overview of network applications 5%
Introduction to network application design 5%
The application programming interface 10%
Client and server algorithms and examples 15%
Client and server design techniques 15%
Messages, events, and callback routines 15%
Overlapped input/output 5%
Application tunneling and gateways 10%
“Raw” sockets and examples 5%
Internet application case study 10%
Application security 5%