CS176B: Winter '11

Network Computing 


  • Googlegroup now open for new members
  • Discussion sections start on the second week of classes January 12.
  • First lecture: Monday January 3rd, 3:30PM, GIRV 2108

General Information

    Lectures: Monday/Wed, 3:30-4:45PM, GIRV 2108
    Professor: Ben Zhao, ravenben at cs.ucsb.edu
    TA: Gang Wang
    Sections: Wednesday 12-12:50PM at 932-101
    Office Hours:
    • Ben: Mondays 2:30PM-3:30PM, 1123 HFH
    • Gang: Fridays 1PM-3PM, CSIL

    Class Email List: cs176b-w11 Google Group
    Prerequisites: CS176A


Network-based applications provide the services that make up our daily interactions with the Internet possible.  Network applications permeate all facets of our lives today, spanning the gamut from online-grading at UCSB, to file-sharing networks, to UPS package tracking and online information repositories like GoogleEarth.  Even though using these network services is becoming easier, the development of network applications is still a complex activity that requires careful design and deep knowledge of the mechanisms underlying remote interaction.

This class presents the fundamental mechanisms and the protocols that are used in network-based applications. The class covers the basics of distributed programming and presents the principal application protocols used in the Internet today.  Our class goal is to provide students with the tools and the knowledge needed to develop scalable, efficient and secure network-based applications.

A special addition to this instance of CS176B is a recent focus on Smartphone-based network applications.  This quarter, in partnership with Microsoft Research, we will be implementing as part of you final "project" an interesting smartphone application on either the Android platform, or the new Windows Phone 7 platform.  Some student groups will work on Windows7 Samsung Focus Phones (Thanks to Microsoft Research and the Hawaii Project), while others will work on Motorola Androids (thanks to Google/Verizon).  More information will be given on the projects page as it becomes available.

Here is a rough list of some of the topics we'll cover in lecture. As we go along, certain topics will get cut, and others will be added on:
  • UNIX, C, TCP/IP, and the real world
    • autoconf, automake, and libtool
    • tcpdump, libpcap, libnet, netcat
    • Security caveats
  • Client-server programming
    • Socket programming
    • RPC programming
  • Data formats and data translation
    • XDR
    • MIME
    • HTML, CSS, XML, XSL and XSLT
    • SOAP
  • Secure communication
    • SSL, TLS
    • X-Mime, Signed/Encrypted XML
    • OpenPGP
  • Infrastructure services
    • Naming: DNS and extensions
    • Routing protocols: RIP, OSPF, BGP
  • Application protocols
    • HTTP, URI/URLs
    • SMTP
    • SSH
    • FTP
    • SNMP
  • Web-based Applications
    • The Apache web server
    • Server-side scripting (PHP, Perl)
    • Client-side scripting (JavaScript)
    • Web access to databases (MySQL)
  • Advanced topics
    • Peer-to-peer networks
    • Anonymous communication
    • Online social networks
    • Smartphone applications and platforms

Internetworking with TCP/IP, Vol. III: Client-Server Programming and Applications (Linux/Posix Sockets Version), by Douglas E. Comer and David L. Stevens, Prentice Hall, 2001.

Class Quizzes
Class participation is a critical part of your evaluation in the course.  This means coming to class and actively learning the material.  To encourage (on-time) attendance to each class, I will be scheduling a sequence of 5-7 short quizzes throughout the quarter. These quizzes are scheduled more or less randomly, and generally include a single straight-forward question on material from the previous lecture.  Missing a lecture day when a quiz is announced means a zero score on the quiz.  Note that I am more likely to announce a quiz on a day when I see fewer students showing up at lecture. 

Grading Policy

Your quarter grade will be derived from 3 homework assignments, class quizzes, and a midterm exam.