This is the class syllabus. This document will grow throughout the term, and will include commentary, links to readings, and assignments, among other things. I will not cheat: whenever I write something new, I will write it under the heading of the date on which I wrote it. Thus, except for simple typos, I won't change a day's worth of the syllabus after that date has passed, so you won't have to re-read the whole document to keep up with its changes.
Today in class, we'll deal with logistics, the waiting list, and a very brief summary of what this course will be about. Roughly, the course will break into three parts:
Fundamentals (about 2.5 weeks). Protocols, clients, servers, history, organizational structure, HTML, HTTP, Telnet, and FTP.
Web programming (about 2.5 weeks). Using PHP and MySQL to create dynamic web pages like weather.carleton.edu.
Miscellaneous topics. E-mail, security (viruses, denial-of-service, encryption, etc.), privacy (including cookies), Internet-related law, Open Source, and other topics as time permits.
Your grade will come from homework (40%), labs (10%), a midterm exam (25%), and a final project (25%).
My office is CMC327, and my phone number is x4364 (home: 663-7123). My office hours are Monday 2A, Tuesday 10:45-11:45, Wednesday 5A, and Friday 2A. I am often in my office, however, and you are welcome to drop by any time you can find me.
The books for this class are The Internet Book, Third Edition by Douglas E. Comer, Prentice Hall 2000, and PHP Essentials by Julie C. Meloni, Prima Tech 2000.
The How To Page contains brief instructions on how to perform various tasks related to this class. Like the syllabus, the How To Page will grow as the term progresses.
By 4/3/02. Read Comer Chapters 1-7 and 23.
By 4/3/02. Read Meloni, pages 1-5 and 26-33.
Get a Carleton Netware account if you don't already have one.
Get hooked up to Caucus, subscribe to the "CS107 Spring 2002" conference, and introduce yourself in the Introductions topic. I want you all to participate at least occasionally in discussions in our Caucus conference, so I will make Caucus participation equivalent to one homework assignment. You'll get full credit for this assignment if you post at least ten messages to the conference.
If you haven't finished yet, make sure to get through the lab exercises we started on Wednesday. Answer the questions that appear in the bulleted items and send your answers to me at jondich@carleton.edu.
Read Chapters 12, 13, 15, 16, and 17 of Comer. Write down questions as you go, and ask them in class or on Caucus.
Due 11:10AM Wednesday, April 10
Create a web page or collection of pages on any topic that interests you. You should create the page using something like Notepad or Wordpad or, if you have a Mac at home, SimpleText. Don't use a web editor like Dreamweaver or Homepage.
Your pages should include at least one list, at least one link to some other page, at least one internal link to another section of your own page, at least one image, and at least one table. Your web page should be stored as S:\Students\cs107\yourusername\assignment1\index.html (this will require you to create a folder called assignment1).
This coming week, we will discuss the history and administrative structure of the Internet, and we will start talking in detail about protocols. We will, in particular, study the HTTP, FTP, and gopher protocols to see three different ways of transfering files across the Internet.
Your next assignment, due next Friday, will involve using the Unix command-line interface you worked with in lab today to contact various kinds of servers and speak to them in their native languages.
Late next week or the following Monday, we will start working with PHP to create web pages whose content depends on the results of some kind of computation or other.
All of the stuff you did in the terminal window in today's lab can be done on any Unix system connected to the Internet. If you have MacOS X, for example, you can just run the Terminal application and then type ls, cd, mkdir, etc. to your heart's content. On Windows, you can download the ssh-telnet program (better known as PuTTY) from the PuTTY homepage. It's free. For MacOS 9 and earlier, Better Telnet is a good choice.
Read Chapters 8-11 of Comer.
Do today's lab. Most of you did this today during class, but some of you were unable to attend. You'll need to get your Unix account user name and password before you can do this, so make sure to check in with me Monday.
If you don't have your Unix account information, please oh please come see me so you can do last Friday's lab and this coming Friday's assignment.
Launch Netscape and go to gopher://prism.mathcs.carleton.edu/. Click around to get the feel of interacting with gopher servers. Think about how it is similar to and different from the usual web surfing you do.
Find the Gopher Manifesto on the web and read it.
Do this list of exercises. These will be due at class time on Friday, 4/19/02.
A couple clarifications on the assignment for Friday.
Please hand in your assignment on paper. I do not want to receive your answers via e-mail.
You might find the Unix command "host" to be useful. You can find out how to use it by logging in to Unix (either directly in the lab or using ssh-telnet or a similar program) and typing "man host". In general, you can get the manual page for any Unix command by typing "man command", where "command" is the name of the command you are interested in.
Today, we will start talking about HTML forms and PHP programs. We'll have a lab session on Wednesday, and an assignment due Monday.
We will have an in-class exam on Wednesday, May 1. This exam will cover material from assignments, readings, labs, and lectures up through Friday, April 26.
Read Meloni, pages 30-68
Due Monday, April 29. Write the PHP program assignment2.php as described on this page. To hand it in, create a folder called assignment2 in your S-drive folder, and put the files assignment2.html and assignment2.php in that folder. The grader will thus be able to go to http://prism.mathcs.carleton.edu/cs107/yourusername/assignment2/assignment2.html to test your program.
I have posted a few questions on the Caucus conference. Here's your chance to vent your opinions for class credit.
Due 5:00PM Friday, May 17, 2002.
For this assignment, you will build a MySQL database of creators and creations similar to the authors and books database we used in class and lab. You may use directors and their movies, composers and their songs, poets and their poems, or something similar. Don't stray far from this simple creators and creations format--you'll have a chance to use more sophisticated data in your final project.
Once you have a database to work with, write an HTML form and a PHP file to process the form, providing people with the opportunity to:
Get a list of all the creators in the database, alphabetized by last name. (Look at the ORDER BY clause of a SELECT statement in SQL.)
Get a list of the creators, sorted by birth year.
Get a list of all the creations of a given creator, alphabetized by title (or whatever name the creations go by).
Get a list of all the creators in the database, sorted by the number of creations they have in the database. (This one's the hardest one here, and is best done using the GROUP BY clause of a SELECT statement.)
Get a list of all the creators who were alive during a given span of years. Here, the user will enter a starting year and an ending year, and the result should be a list of creators along with their birth and death dates. Notethat if, say, the span of years is 1801-1900, Mark Twain and Jane Austen would both appeara, even though neither of them lived for the entire nineteenth centrury, and they each overlapped into another century.
Put your files into a folder called "creators" in your course folder. Call the page with the HTML form index.html, so the URL http://prism.mathcs.carleton.edu/cs107/youruseername/creators/ will go to your form. You may name the PHP file anything you wish, but please put it in thbe creators folder, too.
For your final project, you will research some topic related to the Internet, and present your results as a small web site. The scope of your work should be similar to what you would do for a ten page paper, but your presentation should be suitable for the web rather than the linear narrative form of a term paper. You may work on your project with one other person from the class if you wish.
Here are your deadlines:
Wednesday, May 22, class time. Hand in a one page proposal that includes a description of your topic, an outline of how you plan to present your topic via the web, and a list of any questions you have for me about your topic. I will hand your proposal back to you no later than Friday, May 24.
Monday, May 27, class time. If I ask you to submit a second version of your proposal, it will be due no later than class time on May 27. I don't ask for many resubmissions, but if your topic is unclear or you neglect to discuss your web organization plans, I might ask for clarifications. The goal of the proposal is for you to have a clear plan early enough to enable you to do a good job on the project.
Friday, May 31 and Monday, June 3. Five-minute presentations of the projects as they stand at the time. You should have enough done by this time to give your classmates a detailed summary of your project, and a clear sense of what gaps you intend to fill in before the project is complete. Five minutes is not a long time, so you should practice doing about 3-4 minutes of presentation, and fielding questions for a minute or two.
Monday, June 10, 5:00PM. Post your completed project. Store your starting page at http://prism.mathcs.carleton.edu/cs107/yourusername/final/index.html (or index.php).
Topics could be technical (e.g. a detailed comparison of PHP with a client-side language like Javascript, or a discussion of routing algorithms) or non-technical (e.g. research on the "digital divide," or the role of the Internet in dissident communities around the world) or a combination (e.g. a study of the legal and technical sides of privacy or of copyright on the Internet). You may use MySQL and/or PHP for your project, but you do not have to.
Your last assignment is a hodgepodge of questions related to topics discussed in class from mid-May to the end of the term. You should be able to begin work on half or more of the questions right away. A couple of the questions will be addressed in class during the next week. The assignment is due on paper at class time, Wednesday, June 5. You may discuss the questions with classmates, but compose your own answers.