CS219 - Programming for the World Wide Web (W99)

Instructor

Instructor: David Beazley (beazley@cs.uchicago.edu)
Office: Ryerson 257, 702-9111
Class times : 11:30 MWF, Ryerson 277
Office Hours : 10:30-11:30 MWF, Other times by appointment.

Class web-page : http://classes.cs.uchicago.edu/classes/archive/1999/winter/CS219

Prerequisites

Course Description

In this course, you will gain experience with the programming techniques, technologies, and issues associated with the Internet. Topics include network programming with sockets, TCP/IP, the HTTP protocol, web-servers, browsers, security, authentication, distributed objects, and client-server computing. This is a project-oriented course in which you will be expected to develop software in the Unix environment using a variety of programming languages including C/C++, Java, Python, and Perl.

Note: This is not an introductory programming course nor a course on the creation of web-pages (HTML, CGI, Javascript, etc...). Students interested in these topics should consider taking CS101.

Textbooks

There is no official textbook for this class. However, the following books may be generally useful: All of the material covered in this class is already available on the web so it is probably not necessary for you to buy these books unless you want to add them to your library.

Computer Accounts

All of the programs in this course will be implemented under Unix. If you do not have a Unix account, please go to http://classes.cs.uchicago.edu to find out about obtaining an account on 'classes'. It is critical that you do this as soon as possible. You may also use Linux, but be aware that your projects must still compile and run on classes when you turn them in.

If you have never used Unix, the first few weeks of this course are likely to make your head spin. Please come see me as soon as possible if this case and I will try to point you in the right direction. You may also want to get your hands on a copy of the following:

Grading Structure

This class is entirely project oriented in nature (there will be no midterm nor any sort of weekly busy-work). If you wish, you may work on the projects by yourself or with one other person as a team. For the final project, you will get to choose the topic and be expected to make a short class presentation at the end of the term. The final exam will primarily cover material related to the class projects.

Grading scale

Handin Policy

Late assignments are not accepted without prior arrangement. All projects should be turned in electronically and must include a README file describing how to run the programs and a Makefile (if appropriate). Your grade will largely be determined by how your program runs (and if it operates correctly), not the method by which it is implemented.

Academic Dishonesty

Feel free to discuss any aspect of the class projects with others, but be aware that the code you develop should be your own. Blatantly copying someone else's work or downloading code from the net and claiming it as your will not be tolerated. You may, however, borrow ideas from others and third party packages as long as you give appropriate credit (i.e., "I borrowed this cool hack from package X.").

General Comments

I hope to make this class a challenge, but I also want you to succeed. Please do not hesistate to come see me if you run into any problems.

Calendar

This is only a tenative outline and subject to revision at any time.

Week 1

Mon - Introduction and History of the Internet

Wed - Basic networking. TCP/IP, DNS, Network layers, and associated topics.

Fri - Network programming in C. Introduction to sockets.

Week 2
Mon - Network programming in C (continued).

Wed - Introduction to Java and Python.

Fri - Network programming in Java and Python.
Project 1 Due

Week 3
Mon - Web servers and the HTTP protocol.

Wed - Document encoding. HTML, MIME, images formatting, etc...

Fri - CGI and server-side plugins.

Week 4
Mon - Dynamic content generation and XML.

Wed - Performance issues and access control.

Fri - A look at some commercial web-servers.
Project 2 Due

Week 5
Mon - Public key encryption.

Wed - Secure sockets.

Fri - Authentication.

Week 6
Mon - Browsers (and browser wars)

Wed - Interacting with clients. Cookies and related topics.

Fri - Dynamic HTML, Applets, Client-side plugins, ActiveX.
Project 3 Due

Week 7
Mon - Applets, scripting, continued.

Wed - Web crawlers and search engines.

Fri - Proxy servers.

Week 8
Mon - Client-side security and privacy issues.

Wed - Push technology, audio/video streaming, multicast sockets.

Fri - Slack.

Week 9
Mon - Distributed objects. Introduction to CORBA and Beans.

Wed - CORBA/Beans continued.

Fri - CORBA/Beans continued.
Project 4 Due

Week 10
Mon - Project presentations

Wed - Project presentations

Fri - Discussion, class evaluations.


David M. Beazley
Last modified: Tue Dec 23 13:51:50 CST