Active Outline
General Information
- Course ID (CB01A and CB01B)
- CISD075B
- Course Title (CB02)
- Internet Programming with TCP/IP
- Course Credit Status
- Credit - Degree Applicable
- Effective Term
- Fall 2024
- Course Description
- This course covers writing client/server applications using the TCP/IP protocol suite. All server classes - "well known", iterative, concurrent, and polling - will be explored and used. Typical Internet programming problems will be addressed including resource availability, machine addressing, and differences in data representation between communicating computers.
- Faculty Requirements
- Course Family
- Not Applicable
Course Justification
This course is transferable to all CSUs. This course is a required course for the Network Programming A.A. Degree. This course is an introductory course in network programming to help students understand both networking and programming at their meeting point.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to CSU only
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
CIS D026B or CIS D26BH
Corequisite(s)
Advisory(ies)
ESL D272. and ESL D273., or ESL D472. and ESL D473., or eligibility for EWRT D001A or EWRT D01AH or ESL D005.
CIS D045A
Limitation(s) on Enrollment
Entrance Skill(s)
General Course Statement(s)
Methods of Instruction
Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in classLaboratory discussion sessions and quizzes that evaluate the proceedings weekly laboratory exercises
Assignments
- Readings from text.
- Documenting, coding, testing and debugging six to ten programs with clearly documented design.
Methods of Evaluation
- One or two midterm examinations requiring students to write code applying topics covered in the lectures and reading. Code will be evaluated on appropriateness, presentation, and technical accuracy.
- Final examination requiring students to write code based on course topics which is evaluated on appropriateness of solution, presentation and technical accuracy.
- Evaluation of programming assignments, based on correctness, documentation, code quality, and test plan executions.
Essential Student Materials/Essential College Facilities
Essential Student Materials:Â
- None.
- A computer lab connected to the Internet
- At least one computer in the lab (the one on which applications will be written) should run the UNIX Operating System
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Snader, John C. | Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs | Addison-Wesley | 2020 - 1st edition | ISBN-13 : 978-0201615890 |
Examples of Supporting Texts and References
Author | Title | Publisher |
---|---|---|
Michale J. Donahoo, TCP/IP Sockets in C, Second Edition: Practical Guide for Programmers, Second Edition, Morgan Kaufmann, 2009, ISBN-13: 978-0123745408 |
Learning Outcomes and Objectives
Course Objectives
- Write programs which demonstrate the ability fork processes and process critical signals and interrupts.
- Construct servers, which use all available socket types and packet delivery and reception methods.
- Construct clients, which pair up to each classical server type.
- Compare and contrast different methods of server construction and know the issues pertinent to each type of server.
- Write client and server programs using "connectionless" UDP sockets.
- Write servers, which use descriptor set polling rather than classical process spawning.
CSLOs
- Design and construct client and server applications using TCP/IP protocol suite and applying algorithms for enabling servers.
- Create algorithms, code, document, debug, and test client/server applications.
Outline
- Write programs which demonstrate the ability fork processes and process critical signals and interrupts.
- Process spawning and interprocess communication.
- Process synchronization.
- Signal and exception handling.
- Process signal-blocking masks.
- Low-level input/output: file descriptors and unbuffered I/O.
- Construct servers, which use all available socket types and packet delivery and reception methods.
- The central place of the socket interface in TCP/IP software
- Creating client sockets
- Sockets and their place in the UNIX filesystem
- Connecting a client socket to a server socket
- Server sockets - listening for client connections.
- Packet transfer between clients and servers
- Datagram versus stream packet delivery
- Construct clients, which pair up to each classical server type.
- Correlation between server type and client type.
- TCP/IP functions for locating server addresses.
- Detection of server availability or unavailability.
- Sending end-of-request packets to servers.
- Stream versus datagram clients.
- General socket and signal setups.
- Compare and contrast different methods of server construction and know the issues pertinent to each type of server.
- Polling versus process creation.
- Stream versus datagram servers.
- Passive versus active sockets.
- Process spawning, monitoring, and elimination.
- Assuring robustness via exception handling and error detection.
- Concurrent versus iterative servers.
- Review of well-known preexisting servers.
- Write client and server programs using "connectionless" UDP sockets.
- Advantages of UDP over TCP
- Liabilities of UDP versus TCP.
- UDP input/output: The sendto and recvfrom functions.
- Necessity for client socket binding in UDP clients
- Packet flow control in UDP: Differences from TCP.
- Write servers, which use descriptor set polling rather than classical process spawning.
- When to use Select versus true concurrency.
- System resource savings with polling servers
- Polling passive sockets in superservers.
- Visualize when a CPU-intensive client request necessitates the need to write a concurrent client.
Lab Topics
- Send and receive messages over network.
- Build a simple client to communicate over a socket using the Hypertext Transfer Protocol (HTTP).
- Create a server using sockets using Hypertext Transfer Protocol (HTTP).
- Optimize client/server performance.