L548: Computer Programming for
Information Management
School of Library and Information Science
Indiana University
Spring 2001
Instructor: Uta Priss
Email: upriss@indiana.edu
Office: 029 SLIS
Phone: 812-855-2793
Office hours: Tuesday 4.00 - 5.00 or by appointment
This syllabus is electronically available at
http://php.indiana.edu/~upriss/l548/548-Sp01-syllabus.html
Course Syllabus
Some class-related links:
Student projects
Final exam
Introduction
This course introduces basic skills for programming and manipulation of
text-based information systems. Information management is a major task for
librarians and information professionals who are asked to extract information
from sources on the WWW, design interactive text-based web interfaces to
information systems, utilize text that is stored or is supposed to be stored
in a markup format or preprocess information for storage in databases.
This course teaches computer-based approaches to these tasks.
Currently the class is taught using Perl/CGI. Perl provides a good
introduction to general programming concepts. These concepts include basic
programming structures, such as control structures, file handling and
program design strategies. But they also include more advanced topics,
such as networking, text-based user interfaces, and basic
retrieval concepts. Perl allows rapid prototyping which is appropriate for
applications in a fast changing environment such as the WWW. Furthermore, Perl
is very suited for search engines, parsers and mark-up languages. Students
will develop a small information systems application as a project for this
class. The concepts are therefore not taught abstractly but as hands-on
experiences with WWW applications.
Course Objectives
This course
- teaches basic programming concepts and structures.
- introduces basic information processing and management concepts.
- uses small scale but realistic examples of information management tasks.
- teaches the basics of Perl and Perl/CGI.
- provides an introduction to more advanced topics such as object
oriented programming.
Prerequisites
L401 (must be either completed in a prior semester or an approved waiver
must be in the student's file).
For non-SLIS students: please, fill in the
waiver form
and send it to upriss@indiana.edu. Ignore the deadlines on that form.
Indicate on the form that you are not a SLIS student but
need the form for L548.
Especially important for this class are: basic Unix skills,
i.e. understanding of the Unix directory structure and ability to edit and
save files on a Unix computer; ability to create HTML web forms.
Class Organization
The class is taught as a combination of lecture and lab sessions.
The students will work on a semester team project.
The results of the projects will be
presented during the last class session.
Computer Lab
The lab session is taught in LI503 (a PC lab). All students must
create an account
on one of the IU Unix computers where Perl is installed, such as
Steel or Nations at least 24 hours before the first lab session.
Readings
There is no required textbook for this class. There are numerous
web resources or books available that can be used as supplementary materials
for this class. For students who have never used a programming language
before,
* Elizabeth Castro's "Perl and Cgi for the World Wide Web:
Visual Quickstart Guide", Addison-Wesley, 1998
is a good introduction.
For students who already know other programming languages,
* Randal L. Schwartz & Tom Christiansen: Learning Perl, 2nd Edition,
July 1997, O'Reilly
could serve as a more comprehensive resource.
Some on-line tutorials are
Day 2
on this page or the
Perl Tutorial.
Additional resources can be found at
www.perl.com and on a
local IU resource page.
Grading
The grades are given according to the SLIS grading standards. Good work
that meets the course expectations will be assigned a grade of B. To get a
higher grade than B, the students must demonstrate above average
comprehension of the course materials, knowledge and/or effort.
The final course grade will be computed for each student on the basis
of grades assigned for the following:
| Class contribution and mailing list discussions
| 1/5
|
| Project
| 2/5
|
| Final exam
| 2/5
|
Each student is expected to complete all course work by the end of the
term. A grade of incomplete (I) will be assigned only if exceptional
circumstances warrant. Late work will be accepted only at the discretion
of the instructor and in every case will be automatically downgraded by
1/3 grade (e.g., a B+ becomes a B, a B- becomes a C+, etc.).
Class contribution and mailing list discussions
The class contribution grade will be calculated based on
class attendance and contributions to class
discussions and discussions on the majordomo distribution list
(upriss_l548@indiana.edu).
It is required that every student
demonstrate respect for the ideas, opinions, and feelings of all other
members of the class.
Projects: Teams and topics
Students will work on their projects in a team of 2 - 3 members.
The teams must be formed before the third week of class.
Each project will consist of developing an information processing
or information management tool. The tool must have a CGI-based user
interface.
Examples for projects are:
- search engine
- library access tool
- data preprocessing tool (for connecting to a database)
- on-line greeting card service
- mail filtering system (using the standard Unix mail folder)
- content filter for webpages
- XML viewer
- indexing tool
- shopping cart
- calendar or scheduling tool
- link validator
Other similar topics can be suggested by the students.
Some of these topics require additional knowledge (such as databases or
xml) and should only be chosen by students who have acquired such knowledge
prior to this class. The students should discuss their choice of
topic with the instructor.
Project presentation, assignments and final project report
The students will present their tools during the last lab session
(April 23, 2001). Parts of the projects (and its documentation)
will be handed in as assignments during the semester (see the Class
Schedule). The source code of the tool should not be included in the
documentation but it must be made available for evaluation by the instructor.
Grading of the projects
A total of up to 70 points will be given for the project.
Each of the four assignments is worth 10 points, the presentation is
worth 10 points; and 20 points will be given for the project as a whole
when it is finished.
The project will be evaluated according to the following criteria:
-
General project: The project should be appropriate
and feasible for Perl/CGI. It should be neither too comprehensive nor
too simple. It should provide a service that is relevant
and interesting for WWW users.
-
Performance: The software must run without errors
and must do whatever is claimed in the documentation. The software
should not be too slow, for example, it should not try to download
huge files or graphics from the WWW while the user is waiting.
-
Security: The software should not present an open security risk for
the CGI server, i.e. all security rules that are given in class
must be followed. The CGI scripts must not permit sending of
unsolicited email messages. All copyright and privacy rules that
are common law or issued by IU must be followed.
-
Usability: the software must be usable by a medium computer literate
person. The web pages and links must contain enough information
so that users know what the software does and what happens if they
follow links or press buttons. The structure of the pages should be
clear, consistent and contain no redundancies.
The documentation should be clear and concise.
The web pages and documentation should be spell- and grammar-checked.
-
Programming style: the source code of the script should be clear
and should have appropriate comments.
Final Exam
The final exam will be a take-home exam consisting of several small
information management tasks for which the students will write
appropriate Perl
scripts. The exam will be distributed at the conclusion of the class
on April 16 and will be due on April 30, 12.00 pm
(Noon). Team work is not allowed for the final exam.
A note on plagiarism
The students must clearly indicate if they use materials from other
sources, such as textbooks or Internet webpages. Full citation information
must be given for such sources. Academic and personal misconduct by
students in this class are defined and dealt with according to the
procedures in the Code of Student Ethics.
Class Schedule
Note: the topics given in this schedule are fixed but I may still
make some modifications during the semester
to the order of the topics and the precise content covered in each week.
Exercise materials for the lab sessions will be added each week.
Week 1. Programming basics - Jan 8
Topics:
Introduction to information processing tasks; simple Perl programs;
scalar variables
Assignments:
- Lab Exercises
Week 2. Operators and if statements - Jan 22
Topics:
operators, if statements and debugging
Assignments:
- Lab Exercises
- Find partners for your team project and start developing a plan for
your information
processing tool: what do you want to accomplish with the tool? Which
components will your tool have? What are possible features and limits?
Find a name for your software tool.
Week 3. Logical expressions - Jan 29
Topics:
Logical "and", "or", and "not", truth tables
Assignments:
- Lab Exercises
Week 4. Program design and control structures - Feb 5
Topics:
Program design; flowcharts; control structures
Assignments:
- Lab Exercises
- To be handed in by Feb 12:
Email the name of your project and a short description to the discussion
list.
Draw flowcharts for components of your information processing tool
and hand them in.
Week 5. Arrays, Hashs and File handling - Feb 12
Topics:
Arrays and hashs; file handling
Assignments:
- Lab Exercises
Week 6. CGI I - Feb 19
Topics:
HTML forms and how to process them with CGI
Assignments:
- Lab Exercises
- To be handed in by Mar 5:
Create forms for your project and email
the URL of the form page (or the start page of your project if they
are different) to upriss@indiana.edu.
There is no class on Feb 26
But you should use the lab time to work on your assignment which is
due March 5.
Week 7. Regular expressions I - Mar 5
Topics: Regular expressions
Assignments:
- Lab Exercises
Week 8. Regular expressions II - Mar 19
Topics:
Regular expressions; substitution, transliteration and split
Assignments:
- Lab Exercises
Week 9. Programming in the large - Mar 26
Topics:
Functions, modular program design, local and global variables
Assignments:
- Lab Exercises
Week 10. CGI II - Apr 2
Topics:
Searching web pages on-line; security
Assignments:
- Lab Exercises
- To be handed in by Apr 9:
Write the main (sub)routine of your project
and a subroutine
that processes the form input for your project in a secure manner.
Print the source code of these two routines and hand it in.
Week 11. CGI III - Apr 9
Topics:
Environment variables, hidden text and cookies
Assignments:
- Lab Exercises
- To be handed in by Apr 16:
Create a three page
user manual for your project.
You should add these pages to your website.
Print the pages and hand them in.
Week 12. A Perl networking client - Apr 16
Topics:
Retrieving documents from the web via Perl
Assignments:
- Lab Exercises
Final exam
is handed out
Week 13 - Lecture. The object oriented paradigm Apr 23
Topics:
Objects, classes, methods
Assignments:
- Optional Exercises
- (
Here is an optional reading on object-oriented Perl.
Follow the links: Object-oriented programming, Objects, ...,
Using Modules on that page.)
Week 13. - Lab: Project presentations - Apr 23
Final exam is due: Apr 30