CS193i Internet Technologies

Welcome to the old CS193i home page. The new page is over here. The older material below is from last year.

Here's the basic plan for this quarter -- simple socket programming, HTML, how web browsers and servers work (HTTP), CGI programming in Perl, servlets in Java. The material assumes you have some programming background. I'll give very quick introductions to Perl and Java in lecture. That's about all you can fit in a 10 week quarter, but if I were to force in something else it would probably be server side JSP or PHP programming.

Books There is no required text for 193i. I'll give out ample lecture notes, and a great deal of what you need to know is documented online. Here are a few books I recommend if you feel you must buy a book for help in a particular area...


Here's last year's materials to get a sense of the course.

Staff

Office Hours

Office hours are generally in Sweet hall -- look for the "193i" sign on top of the TA's workstation.

Monday
Mike 10-12
Matt 2:15-4:15
Nick 3-5+ (Gates 190)

Tuesday
Jennifer 8-10 pm

Wednesday
Mike 10-12
Matt 3-5
Ashley 7-9pm
Nick 3-5+ (Gates 190)

Thursday
Tanya 11-3
Ashley 3-5

Friday
Jennifer 11-1 (Gates)

My favorite online Java resources...

  • Here's a handy Perl guide from MIT. The Perl home page to download the interpreter. Here's a supposedly handy Intro guide in PostScript form.

    About The Course

    Here's the official course blurb which is reasonably accurate since I originally wrote it and I'm teaching the course...

    CS193i. Internet Technologies.
    Survey of contemporary Internet technologies. The course is a programmer oriented survey of the authoring, distributing, and browsing technologies which make up the Internet. Introduces the role, use, and implementation of current Internet tools. Many of the topic areas will include a non-trivial programming project. Topics include...TCP/IP: namespace, connections, and protocols. Client/server structures. World Wide Web/HTTP/HTML techniques for text, images, links, and forms. Indexing and search technologies. Server side programming, CGI scripts. Dynamic content with Java. Security and privacy issues.

    Some Specifics

    The course blurb is necessarily vague as it's supposed to chart out the course niche for several years -- below are some specifics for this year's course. Each topic area will have its own programming project...

    Books

    No book is required for the course -- we will have ample handouts and other online resources. However, there are several excellent books on CS193i related material which you may find helpful...

    FAQ

    I have programming background XXXX -- is that sufficient?
    The prefered programming prerequisite for CS193i is CS106B which is our 2nd quarter programming course. You probably can get by with one quarter of programming (CS106A), but it's not recommended. The programming prerequisite is not there because we do all that much C programming -- it's there because we use a variety of programming techniques in C, Perl, and Java and it all gets thrown at you pretty quickly. You need a strong programming and debugging background to help you absorb and deal with the breadth of technologies we use without any basic programming hand-holding. If your programming background is not that strong, you will need to be extra committed to starting the assignments early so you can pick up what you need as we go.

    I'm just a nice ordinary person, am I going to get killed by the programming in CS193i?
    Possibly not. In CS193i, I'm aiming to emphasize the interesting and the practical. I think that's going to make for an excellent course. On the other hand, this is not just a fluffy Internet discussion course. There will be several non-trivial homework projects which will require programming and Internet authoring effort. To be fair, I should also point out that courses I have taught at Stanford have tended to be quite demanding. But I'm trying to keep my evil-instructor side in check.

    Are we covering Java? How much Exactly?? Java Java Java Java JAVA JAVA JAVA.
    Java is an awesome technology which is going to be enormously influential. I want to cover enough of the core of the language to see where it fits in the big picture and assign a non-trivial Java programming project. I think that can be done in about 4 weeks -- we'll see. I am not going to cover the entire Java corpus, but we will cover enough to write something cool. I will assume you know how to program in C, and I will present OOP programming concepts and Java in particular.

    What about platform X and language Y?
    Where possible, I'm going to structure things so you can use whatever computer you want. Depending on what assignments I choose, I may require you to program in: C, Perl or Java. Knowing C is a prerequisite. For the others, I'll cover what's necessary in lecture. You will need basic skills to manipulate and arrange files on Unix which is why CS1u is a prerequisite.

    How much Unix do I need to know?
    We're going to have one or two assignments which require write and debug a C program on Unix. In addition to a basic understanding of C, you will need to know the basics of editting, compiling, and debugging on Unix. Unix and C are not the major focus of CS193i, they are just tools we happen to need to get to the interesting stuff. For people who are interested, there are many, many books on the basics of using Unix-- from "dummies guide to..." to "expert guide to...". -- go to the Stanford bookstore, Stacey's in Palo Alto, or Kepler's in Menlo Park and pick one out which appeals to you. I will try to provide a remedial compiling-on-Unix handout for the programming specific stuff.