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.
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.
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%|
|Application tunneling and gateways||10%|
|“Raw” sockets and examples||5%|
|Internet application case study||10%|