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

Course Philosophy


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

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.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


  1. Readings from text.
  2. Documenting, coding, testing and debugging six to ten programs with clearly documented design.

Methods of Evaluation


  1. 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.
  2. Final examination requiring students to write code based on course topics which is evaluated on appropriateness of solution, presentation and technical accuracy.
  3. Evaluation of programming assignments, based on correctness, documentation, code quality, and test plan executions.

Essential Student Materials/Essential College Facilities


Essential Student Materials: 
  • None.
Essential College Facilities:
  • 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


AuthorTitlePublisherDate/EditionISBN
Snader, John C.Effective TCP/IP Programming: 44 Tips to Improve Your Network ProgramsAddison-Wesley2020 - 1st editionISBN-13 : 978-0201615890

Examples of Supporting Texts and References


AuthorTitlePublisher
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


  1. Write programs which demonstrate the ability fork processes and process critical signals and interrupts.
    1. Process spawning and interprocess communication.
    2. Process synchronization.
    3. Signal and exception handling.
    4. Process signal-blocking masks.
    5. Low-level input/output: file descriptors and unbuffered I/O.
  2. Construct servers, which use all available socket types and packet delivery and reception methods.
    1. The central place of the socket interface in TCP/IP software
    2. Creating client sockets
    3. Sockets and their place in the UNIX filesystem
    4. Connecting a client socket to a server socket
    5. Server sockets - listening for client connections.
    6. Packet transfer between clients and servers
    7. Datagram versus stream packet delivery
  3. Construct clients, which pair up to each classical server type.
    1. Correlation between server type and client type.
    2. TCP/IP functions for locating server addresses.
    3. Detection of server availability or unavailability.
    4. Sending end-of-request packets to servers.
    5. Stream versus datagram clients.
    6. General socket and signal setups.
  4. Compare and contrast different methods of server construction and know the issues pertinent to each type of server.
    1. Polling versus process creation.
    2. Stream versus datagram servers.
    3. Passive versus active sockets.
    4. Process spawning, monitoring, and elimination.
    5. Assuring robustness via exception handling and error detection.
    6. Concurrent versus iterative servers.
    7. Review of well-known preexisting servers.
  5. Write client and server programs using "connectionless" UDP sockets.
    1. Advantages of UDP over TCP
    2. Liabilities of UDP versus TCP.
    3. UDP input/output: The sendto and recvfrom functions.
    4. Necessity for client socket binding in UDP clients
    5. Packet flow control in UDP: Differences from TCP.
  6. Write servers, which use descriptor set polling rather than classical process spawning.
    1. When to use Select versus true concurrency.
    2. System resource savings with polling servers
    3. Polling passive sockets in superservers.
    4. Visualize when a CPU-intensive client request necessitates the need to write a concurrent client.

Lab Topics


  1. Send and receive messages over network.
  2. Build a simple client to communicate over a socket using the Hypertext Transfer Protocol (HTTP).
  3. Create a server using sockets using Hypertext Transfer Protocol (HTTP).
  4. Optimize client/server performance.
Back to Top