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:
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.
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.
I have to go pick up my kid and go home for dinner. There will be something here later tonight.
Readings...
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.
Do the telnet exercise. Hand in as described in the exercise itself. Due Friday 9/21 by 5:00PM.
You won't be able to do this until you have your Math/CS UNIX account. I'll give you your account name and password in class on Wednesday.
There were several interesting and potentially controversial stories in the Friday 9/14 EDUCAUSE Edupage. Go to our Caucus conference by classtime Monday and express your opinion on one or more of them.
Due midnight, Monday 9/24. Create a web page on any topic that interests you. You should create the page using Notepad (don't use a web editor like Dreamweaver or Homepage). Your page should include at least one list, at least one link to some other page, at least one link to another section of your own page, at least one image, and at least one table. (This coming Friday's lab will show you how to create internal links and tables, among other things.) When you're done, create a folder names assignment1 in your S: drive folder, call your page index.html, and put it in the assignment1 folder. (That is, your web page should be stored as S:\Students\cs107\yourusername\assignment1\index.html.)
Chapters 12, 15, 16, 17, and 18 of Comer.
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.
Pages 1-5 (sections 1-2) of The Internet Gopher Protocol.
Go to gopher://gopher.quux.org and browse around a little bit. Think about how the gopher experience is similar to and different from the usual web browsing experience.
Pages 30-51 of Meloni.
Explain how to use telnet to connect to the gopher server at gopher.quux.org.
Once you're connected, what command do you need to send to obtain the top-level menu from the gopher server?
Explain the format in which you receive the top-level menu. Is this format suitable for display, or does it need to be modified before it is shown to a person?
What command do you need to send to obtain the "What's New?" file at gopher.quux.org? How can you tell that you have received the whole file?
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.)
We're at a point with PHP where Meloni is probably best used as a reference. Chapter 2 and parts of Appendix A are the most relevant parts for this week. Starting next week, you'll also want to look at Chapters 3 and 4, which concern the use of database management systems in conjunction with PHP.
Today's in-class examples are posted on the PHP Examples page.
Sorry for the trouble. Here's the assignment, finally.
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.
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.
Read these for Friday, and bring questions to class.
Pages 69-80, 90-93, and 150-154 of Meloni.
Chapters 22, 23 and 24 of Comer.
Read these by Monday
It's my daughter's birthday today. She's 8.
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:
Get a list of all the authors in the database, alphabetized by last name.
Get a list of all the authors in the database, sorted by birth year.
Get a list of all the books written by a given author, alphabetized by title. (This one should include a text field into which the user types the last name of the desired author.)
Get a list of all the authors in the database, sorted by the number of books they wrote.
Get a list of all the authors 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 authors along with their birth and death dates. Note that if, say, the span of years is 1801-1900, Mark Twain and Jane Austen should both appear, even though neither of them lived for the entire nineteenth century, and they each overlapped into another century.
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.
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.
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:
Monday, October 29, class time. Hand in a one or two 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, November 2.
Monday, November 5, class time. If I ask you to submit a second version of your proposal, it will be due no later than class time on November 5.
Monday, November 12 and Wednesday, November 14. 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, November 19, 5:00PM. Post your completed project. Store your starting page at http://prism.mathcs.carleton.edu/yourusername/final/index.html.
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.
Happy Halloween.