Syllabus, CS107, Fall 2001

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.

Monday, September 10, 2001.

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:

Your grade will come from homework (40%), labs (10%), a takehome midterm exam due on Friday, October 12 (25%), and a final project (25%).

Most of our Friday class periods will be devoted to lab exercises in CMC304.

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.

Assignment (by Friday except Comer reading--that can wait to Monday):

Monday, September 17, 2001.

Recap: Last Wednesday, we talked about clients, servers, and the beginnings of HTML. Friday we were in the lab.

Today, we talked a little bit about the first 91 pages of Comer, and then about how client-server communication takes place, using TCP connections and port numbers.

In the next few class days, we're going to do some more HTML, learn about a specific protocol (the gopher protocol), and put telnet to greater use. We'll also take a closer look at HTTP.

Assignment:

I have to go pick up my kid and go home for dinner. There will be something here later tonight.

Readings...

Tuesday, September 18, 2001.

Good intentions last night, but let's try this again.

Please feel free to add new topics to the class Caucus conference, and to respond to a few of the interesting comments your classmates have made there already. Also, if you find anything interesting and Internet-related out on the Internet, post it in the "Links" topic in the Caucus conference.

Thursday, September 20, at 4:00PM on the patio between CMC and Boliou, we're having a Math/CS department ice cream social, to which you are all invited.

Assignment

Reading

Monday, September 24, 2001.

Last Wednesday, we talked about the Nimda virus, and a few new HTML details. Friday, we worked in the lab on more HTML.

Today, we're going to talk about how things are named (file systems, URLs, and DNS), and the gopher protocol. Wednesday, we'll start looking at PHP. Friday's lab will get you started writing your own PHP programs.

You may be wondering about the midterm exam I mentioned up above. The exam will be a takehome exam handed out on Monday, October 8, due at class time on Friday, October 12. The exam will cover the course material up through class on October 8. More details when the time gets closer.

Reading

Wednesday, September 26, 2001.

Once you have done your gopher-related readings, you will be ready to test out the gopher protocol.

Assignment

Answer the following questions on paper. Due at class time, Monday, October 1, 2001.

Tuesday, October 2, 2001.

Last week, we talked about file systems and how files and directories are named, URLs, the Domain Name System, IP addresses, and the gopher protocol.

On Friday, we talked about server-side vs. client-side processing of programs embedded in HTML files, and then looked at some examples of PHP programs to illustrate server-side processing.

Yesterday, we met in the lab to get you started writing your own PHP programs. On Wednesday and Friday of this week, I will do pretty much straight lecture on the details of PHP that will be relevant for this course.

Let me tell you briefly why I am having you learn some PHP and MySQL (that's coming up next week). First, there's the broad conceptual goal. The ideas of clients, servers, and protocols are at the heart of the Internet's structure, and I want to make sure that all of you have a good understanding of those ideas before the term is done. By writing PHP programs, you will, I hope, start to understand some of the more subtle features of client/server interactions.

Second, CS 107 is intended as an introduction to computer science in general, in the context of studying the Internet. The target audience is mostly people who do not expect to take a lot of computer science courses (though I hope and expect that a few 107 students will get fired up here and go on in CS). Either way, I want to make sure that you are seeing some of the computer science basics, such as the structure of programming languages, the process of software development, the nature of an algorithm, etc., because these are the foundations of computer science as a discipline. These basics should serve you well if you go on to take CS 117 and beyond, or even if you don't.

Finally, I think it's really fun to make computers do what I want them to do. PHP and MySQL will help you make pretty darned sophisticated and possibly even useful web pages. That, I think, is worth the effort all on its own.

Here is where one might say "</SOAPBOX>" if one wanted to appear geeky yet savvy at the same time. And I know you all aspire to geeky savviness. (Actually, the cultural phenomenon of "geekiness" is pretty interesting, I think. Some people view geekiness as something to avoid at all costs, and they take great pains to assure me that "I'm not really a computer person," even if they are enjoying studying computers. Even some CS majors want to distance themselves from what they view as a negative stereotype, and to make sure everyone knows that they have interests outside computers, science fiction, etc. On the other hand, some groups of people have reclaimed the geek label, and apply it to themselves with pride. As it happens, I have never met a person who lines up perfectly with the stereotype, but the fact that people work around that stereotype in different ways is pretty interesting.)

Reading

Wednesday, October 3, 2001.

Today's in-class examples are posted on the PHP Examples page.

Sorry for the trouble. Here's the assignment, finally.

Assignment

Due midnight Monday, October 8, 2001.

For this assignment, you will create a PHP page that performs the tasks described here. You may use my copy of assignment2.html, but put it in your S:/Students/cs107/yourusername/ folder. Make sure to get this right, because Michelle and I will expect to be able to view your page using the URL http://prism.mathcs.carleton.edu/yourusername/assignment2.html. Put your PHP code in S:/Students/cs107/yourusername/assignment2.php.

You may work with one other person for this assignment (no groups of more than two, please). If you work with somebody, put your PHP code in assignment2.php in one person's folder. In the other person's folder, assignment2.php should be a simple web page that says something like "I worked with so-and-so on this project, which is located here..." with a link to make it easy for me and Michelle to get to your work. Make sure both pages, the original and the one that links to it, show both your names.

Monday, October 8, 2001.

The midterm exam is ready. Good luck.

Wednesday, October 17, 2001.

Last Wednesday we met in lab for an introduction to MySQL . Friday, we met outside and talked about whether hotmail can lose your mail, why computers crash, etc.

I'll hand back the exams on Friday in class. You'll also get a new assignment or two on Friday. In the meantime, do the following readings.

Reading

Read these for Friday, and bring questions to class.

Read these by Monday

Friday, October 19, 2001.

It's my daughter's birthday today. She's 8.

Assignment

Due midnight Wednesday, October 24, 2001.

Create a MySQL database of authors and books, extending the database beyond the small number of authors and books we added to the database in lab last week. This time, do enough research to include the birth and death years of the authors (use the death year 10000 to indicate somebody who is still alive--if your database is still functioning by then, we'll have a Y10K problem). Then, create a web page (or combination of pages) that offers the user the following options:

If you want to do musicians and CDs instead, go ahead.

When you are done, please make sure to name your main page authors.php, and put it in your S-drive folder. Thus, to test your code, all I will need to do is go to http://prism.mathcs.carleton.edu/yourusername/authors.php. Please call it authors.php even if you do musicians instead.

Tuesday, October 23, 2001.

The question of whether this course is mandatory S/CR/NC is being taken up by the Academic Standing Committee this morning. In the original New Course Proposal my department submitted last year, there was no mention of mandatory S/CR/NC, and we intended for the course to be graded. But the 2001-2 catalog lists it as S/CR/NC. On the other hand, the green course schedule has a new course description (no mention of S/CR/NC), a line for the course itself (no mention of S/CR/NC), and a line for the waiting list (where it says S/CR/NC only). It's a mess. I'll let you know how things are going to work once the committee gets back to me.

Friday, October 26, 2001.

Assignment, due by the last day of classes

Do the Hardware Lab.

Sunday, October 28, 2001.

Final Project

I presented this is class last Wednesday, but I thought it should go here as well.

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:

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.

Wednesday, October 31, 2001.

Happy Halloween.