CSc/CpE 138 - Syllabus

Instructor: Dick Smith
Office: RVR 3006
Phone: (916) 278-7328
Office Hours: M 3:00 - 4:00, T 3:00 - 4:00, and other times by appointment
Required Text: Kurose & Ross, Computer Networking A Top-Down Approach Featuring the Internet, Addison Wesley, 4th Edition, 2008.
Bookstore $111.75 new, $84.00 used, or I recommend:
www.bestbookbuys.com
Class Notes: (Lecture Notes) CSc 138, Dick Smith @Copy Central, 925 Howe Ave. (916) 641-5535 ~$20.00.
Additional Text: Perl Language, not required if you know Perl , otherwise any book of your choosing, e.g. Deitel, Deitel, Nieto, McPhie, Perl How To Program, Prentice Hall, 2001.
Bookstore $68.00 new, $34.00 used, or I recommend:
www.bestbookbuys.com

Course Objectives:

Prerequisites:

Required satisfactory completion of CSc 35, CSc 60 and CSc 130 or their equivalents.
It is assumed that each student is prepared for this course and meets the following criteria. If not then it may require outside preparation.

Thorough understanding of:

  1. Programming design tools such as logic flow-charting, high level pseudo code, machine state diagrams or UML. (CSc 20, CSc 60, CSc 130)
  2. Specifications, design, implementation, testing and debugging a large complex program. (CSc 20)
  3. Advanced data structures used in file descriptors tables and complex network structures. (CSc 60)
  4. High level programming language techniques to manipulate bits and bytes. (CSc 60)

Basic understanding of:

  1. Application programming interface (API) (CSc 15, CSc 20)
  2. Asynchronous and synchronous timings. (CSc 35)
  3. UNIX command line interface. (CSc 60)
  4. UNIX X-windows interactive development environment (IDE) (CSc 60)

Exposure to:

  1. 1's complement arithmetic (CSc 35)
  2. Big-Endian and Little-Endian order of bytes and words. (CSc 35)
  3. Hardware interrupt programming. (CSc 35)

Course Content:

We will study computer networking from the modern top-down approach. Starting with the application-level protocols and then working down the protocol stack. It puts an early emphasis on application-layer paradigms and application programming interfaces, allowing the student to get their "hands dirty" early studying and implementing protocols in the context of applications they use daily. Proceeding through the layered network services that are needed and then, in turn, study how these services can be provided. A large part of the semester will be spent on client server paradigm and several programming assignments will be to implement client and/or server programs using sockets in different languages. Next we will study circuit and packet switching and how to categorize networks as: LANs, local loops, MANs, WANs, public or private, connection-oriented or connectionless. Finally we see how the underlying hardware works, how the energy or electrical signaling technology and the various medias used in networks.

Course Outcomes:

Thorough understanding of:

  1. Basic categories of network wiring schemes and advantages of each.
  2. Layering approach to the design of network architecture.
  3. OSI and Internet (TCP/IP) standards and protocol stack.
  4. The TCP/IP suite of protocols.
  5. Distributed computing with client/server socket programming.
  6. Hardware and software devices used in internetworking.

Basic understanding of:

  1. Network congestion and flow control and why they must be handled.
  2. Errors; the cause, detection, and various control techniques.
  3. ATM and Frame Relay protocols.
  4. Internet routing protocols (RIP, OSPF, CISCO's IGRP, EIGRP).
  5. HTTP and Web CGI programming.
  6. Host and Network configuration protocols (ARP, RARP, BOOTP, DHCP).
  7. Domain name system (DNS) and addressing schemes used in internetworking.

Exposure to:

  1. Technology of static Web documents (htm, html)
  2. Technology of dynamic Web documents (CGI: Perl, ASP, JSP)
  3. Technology of active Web documents (Java Applets, JavaScript).
  4. Security of computer systems and networks (Firewall, IDS).
  5. Border Gateway Protocols (BGP-4).
  6. High speed networks and new protocols (IPv6) (IPsec).
  7. Wireless technology.

Summary

In this course, we will study computer networks and distributed computing systems. We will discuss topics ranging from the transmission of data across physical communication media to contemporary distributed computing environments such as the ECS HP, Sun and Linux workstation networks. You will gain experience with several networks accessible from the ECS computing systems, and will write distributed programs using computers connected by the ECS network.

Measurable Course Outcomes

CSc 138 CO_1 Students will understand terminology common to 'Networks and Internet'
CSc 138 CO_2 Students will design software to exercise data transfers on various networks using socket protocols
CSc 138 CO_3 Students will acquire hands-on laboratory skills in observing data transfers
CSc 138 CO_4 Students will understand the design of hardware network equipment
CSc 138 CO_5 Students will design software to implement a client/server Simple Web application.
CSc 138 CO_6 Students will write a technical, grammatically correct term paper

ABET Program Learning Outcomes (What students are expected to know at time of graduation)

a. An ability to apply knowledge of computing and mathematics appropriate to the discipline. CSc 138 CO_1, CO_2, CO_4, CO_6 The bulk of the material in this course is mathematical (transfer rates, utilization, round trip time, probability of collision avoidance, noise, etc) and is related to engineering limitations (maximum rate of data flow, noise generation).
b. An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution. CSc 138 CO_3 The lab related exercises require students to observe and understand various types of data transfers.
c. An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs. CO_5 The Web has become an integeral part of our daily lives and software applications abound on the Web.
d. An ability to function effectively on teams to accomplish a common goal. CSc 138 CO_2, CO_3 Students work on teams on the LAN programming project. This course is cross-listed with CpE 138 and the teams have both computer science and computer engineering majors.
e. An understanding of professional, ethical, legal, security, and social issues and responsibilities. Not applicable.
f. An ability to communicate effectively with a range of audiences. CSc 138 CO_6 The research term paper is read, graded and marked for grammar and spelling errors. Students have a list of topics to choose from.
g. An ability to analyze the local and global impact of computing on individuals, organizations, and society. CSc 138 CO_1 Much of the informational material on networks and Internet is concerned with issues of today; security, identification, etc.).
h. Recognition of the need for, and an ability to engage in, continuing professional development. CSc 138 CO_1 A basic thread of the course is that networking and Internets is a process that is constantly being improved and modified; students are instructed on the value of keeping current in this area.
i. An ability to use current techniques, skills, and tools necessary for computing practice. CSc 138 CO_2, CO_3 This course uses the most recent tools, equipment, and devices from industry (students use protocol analyzers, modern switches and routers; student use industry software design tools, etc).

CAC Program Learning Outcomes for Computing Sciences

j. An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices. CO_1, CO_2,
k. An ability to apply design and development principles in the construction of software systems of varying complexity. CO_1, CO_2, CO_5

Course grading

There will be a midterm exam worth 20%, unanounced weekly quizes worth 5% and a final exam, worth 25% of your final grade. There will be frequent written assignments during the semester, worth 25% and programming projects worth 25% of your grade. Semester grades are based on the percent scale as follows 90% = A, 80% = B, 70% = C, 60% = D (also + and - inaccordance with the CSUS catalog). Note, to pass this class you must have a passing average on both EXAMS and PROGRAMMING PROJECTS. There is also an optional (non graded) weekly lab associated with the course, in which you will learn about some details of UNIX and the distributed programming environment here at ECS.

Late:
Homework assignments and programming projects are to be submitted during lecture on or before the assigned due date. Late assignments (up to 24 hours after due date) will be accepted, with a 10% penalty per day. After 5 days, late assignments will be accepted, (at the discretion of the instructor), with a 50% penalty, until 5:00 PM Wednesday of dead week. No late assignments will be accepted after solutions to that assignment have been posted. Note, the last time to turn in any work will be 12:30 PM Thursday May 14th. If assignments are turned in to the department office, make sure your instructors name is on the top of the first page (Note there is another instructor by the name of "Smith" so be sure to put "Dick Smith" on the top). Each student will have a 2 day credit at the start of the semester and the late penalty will only apply after all credit days have been used up. It is possible to earn extra credit days up to a max of 5 days by handing in homework or projects early.

Your written assignments are to be prepared on a text- or document- processing system and turned in as a listing on 8.5 by 11 paper with any tractor-feed holes removed. Programming exercises will be graded for appearance, programming style and comments as well as for correctness. Any output should be identified, and the input used for any program should be listed and explained. Most of your programming assignments will be completed on a UNIX system, so any input should be read from a file, and output redirected to a file, so that the inputs, output and program listings can be easily printed (see Unix "script" utility Ref. Lab 1). Multi-page assignments are to be stapled together.

You must have a UNIX account on the ECS system "gaia" for this class. If you don't have a UNIX account on gaia,
a. Use your favorite Browser and Go to www.ecs.csus.edu
b. Click on Computing Services -> Network Accounts -> Get a new Account.
c. Fill out all required fields

Policies

Repeats:
Any student that requests to repeat this course for > second time must file a petition for course repeat in the Computer Science Department Office.

Mailing list:
This course has an electronic mailing list and it is MANDATORY that each student subscribe to the list (http://www.ecs.csus.edu/mailman/ then find in the List the entry csc138 and click on it). Note do not send HTML e-mail to the list. Many mail reader programs (including my Pine) do not understand HTML Tags. How to subscribe

Academic Dishonesty:
You are to work alone on all assignments, projects, programs and exams except for the RS-232 LAN (project 1), HP Protocol Analyzer (project 2), optional assignments 4 & 6 Cisco Routers, which are best done as a team of two(2) to four(4). You are encouraged to consult with other students about assignments or programs; however, any submitted work must be yours alone.

The Computer Science Department has a policy on "Ethics in Computer Science Classes". Ethics in Computer Science Classes and the University has a "Policy on Academic Integrity" Academic Integrity. Each student will be required to read the policies.

Students are expected and required to do their own work. This does not mean that you cannot discuss assignments and problems with fellow students. In fact, working together on the design and concepts involved is encouraged. However, once you have talked things over, DO YOUR OWN WORK. Copying all or parts of programs is expressly forbidden. Penalties for violation of this will be severe for ALL parties involved. The submission of a program for grading constitutes a contractual agreement to several binding ethics one of which is that work is the students and he/she can (and WILL) be quizzed in detail about each line of the program or assignment. Any academic dishonesty will result in a "F" for the semester and a report will be submitted to the Dean of Student Affairs Office.