CSE 283 Data Communications and Networks (3 credits)
Catalog description:
An introduction to data communications, computer networks, protocols, and distributed processing as well as relevant standards and underlying theory. Topics include communication codes, transmission methods, interfacing, error detection, communication protocols, communications architectures, switching methods, and network types. Local area network and internetwork technologies are studied. The client/server model of distributed processing will be addressed. Students will design and implement data communications and network-based software.
Prerequisite:
CSE 271 or permission of instructor.
CSE 283 is a third-tier course in the CSE2 "Computer Programming" thematic sequence.
Computer software plays an important role in our daily lives: Our mobile phones, laptop computers, online banking, Internet applications such as YouTube, video games and movies, cars, and almost all aspects of daily life are touched by software. In your personal and professional life you will utilize computer software. It is also likely that you will select, or even influence the design of, software that is used in your professional or personal life. This thematic sequence will give you a deep understanding of how software works and is created, its limitations, and its potential. You will be able to read software and therefore be able to make informed decisions when selecting or participating in the design of business, scientific, or information systems that utilize computer software.
The CSE2 thematic sequence consists of both of the following introductory computer programming courses.
-
- CSE 174, Fundamentals of Programming and Problem Solving
- CSE 271, Object-Oriented Programming
Followed by one of the following courses...
-
- CSE 274, Introduction to Game Programming
- CSE 252, Web Application Programming
- CSE 283, Data Communications and Networks
CSE 283 is a course in which you apply programming concepts and techniques learned in CSE 174 and CSE 271 to design and implement data communications and network-based software.
Required Topics (approximate weeks allocated):
- Intro (.5)
- overview of communications
- the communications process
- physical communications
- networking
- Network architecture (.5)
- Client socket programming (2.5)
- creating sockets
- stream sockets
- datagram sockets
- connecting to hosts
- converting DNS names to IP addresses
- ports
- protocols
- http
- smtp
- custom
- sending/receiving data
- converting bytes to primitives
- converting bytes to strings
- heterogeneous issues - big vs little endian, unicode
- Testing, error handling, error recovery in networks (1)
- error handling testing
- recovery techniques
- session version stateless recovery
- logging, debugging techniques for asynchronous events
- timeouts
- Data communications (2)
- point to point
- RS232
- USB
- parallel
- packet switching
- modems/telecom system
- Network fundamentals (2.5)
- topologies
- addressing
- ethernet networks
- bridges, switches
- distance limitation
- twisted pair, bus, hub
- MAC layer functionality (1)
- access control
- framing
- checksum/CRC
- Network/IP layer (2)
- IP addresses
- IP address assignment
- ARP
- fragmentation
- routing
- Transport layer (1)
- ports
- sequence numbers
- connections
- reliable delivery
- datagrams
- Application layer (1)
- protocols
- security and privacy concerns
- Exams/Testing (1)
Learning Outcomes:
1: Discuss important network standards in their historical context.
1.1: Discuss the evolution of early networks and the Internet.
1.2: Define terminology related to data communications and networking.
1.3: Identify sources of Network standards and related standardization bodies
1.4: Analyze emerging technologies in the net-centric computing area and assess their capabilities, limitations, and near-term potential.
1.5: Demonstrate the ability to use effectively a range of common networked applications including e-mail, telnet, FTP, newsgroups, web browsers, and instant messaging.
2: Describe and compare basic methods of data transmission and generally describe the equipment needed for data communications.
2.1: Identify the differences between circuit switching and packet switching along with the advantages and disadvantages of each.
2.2: Describe how a packet is routed over the Internet.
2.3: Describe the mechanisms a networked application might use to detect and correct transmission errors including data loss, corruption, and miss-ordering.
2.4: Demonstrate an appreciation of challenges associated with mobile and wireless computing.
3: Describe and compare alternative network application design paradigms.
3.1: Compare and contrast client/server, peer-to- peer, and hybrid peer-to- peer applications.
3.2: Name and describe differences between client and server processes in a Client/Server network application.
3.3: Describe communication models used in pure peer-to- peer network applications.
3.4: Identify strengths and weaknesses of various hybrid peer-to- peer design paradigms.
4: Describe and compare alternatives in network design, including topology, LAN standards, and protocol stacks.
4.1: Explain the hierarchical, layered structure of typical network architectures.
4.2: Name the layers of the Internet protocol stack and understand the relation to the OSI reference model.
4.3: Describe and compare representative communication protocols.
4.4: Describe physical layer networking concepts including their theoretical basis, transmission media differences, standards and common protocols.
4.5: Describe data link layer concepts including framing, error control, flow control and common protocols.
4.6: Describe internetworking and routing including routing algorithms, internetworking, congestion control, and common protocols.
4.7: Describe transport layer services including connection establishment error detection and correction, performance issues, and common protocols.
4.8: Describe application layer protocol definitions and be familiar with aspects such as message format, content and semantics for various public domain application layer protocols.
5: Design and implement data communication and network-based software, including simple client/server and peer to peer applications.
5.1: The student will write programs that correctly send and receive specified numeric data using both the TCP and UDP transport layer protocols.
5.2: The student will write programs that correctly send and receive specified test data using both the TCP and UDP transport layer protocols.
5.3: The student will implement simple Client applications which communicate using the TCP and UDP transport layer protocols.
5.4: The student will implement single threaded Server applications which communicate with clients sequentially using the TCP and UDP transport layer protocols.
5.5: The student will implement multithreaded server application which communicate with clients in parallel using the TCP transport layer protocols.
5.6: The student will implement peer applications which communicate using the TCP and UDP transport layer protocols.