CS 3164 Interface Programming
Winter Term, 2008
Professor: Dr. Tylene S. Garrett Office Phone:
859-233-8170
Office: 103A Brown Science Center Home Phone:
502-829-5676
email address: tgarrett@transy.edu Fax:
859-233-8171
Office Hours: 
(and by appointment)
MON
TUE
WED
THU
FRI
9:30 - 11:30
2:00 - 3:00
10:00 - 11:00
9:30 - 11:30
2:00 - 3:00
10:00 - 11:00
9:30 - 11:30
2:00 - 3:00
Class Meets:
MONDAY     -     WEDNESDAY    -    FRIDAY
      11:30 - 12:20    BSC/107
Course Prerequisites:

This course assumes you are a competent  C++ programmer and are familiar with the Unix operating system.

Textbooks and
Online Support
Materials:

There are no required texts for this course.  However, there are many good sources available online and links will be provided, as necessary, on Blackboard.  They include books, articles, videos, and tutorials.

In addition, the following books are available to you in the CS Lab (BSC/106) but must remain in the lab:

  • Perl Cookbook, 2nd Edition, by Tom Christiansen and Nathan Torkington
  • Programming the Perl DBI by Alligator Decartes and Tim Bunce
  • Programming Perl, 3rd Edition, by Larry Wall, Tom Christiansen and Jon Orwant

Other reference books are also available in the lab. Please become familiar with what is there -- we actually have a very good collection of useful books.


Compilers:

Although our primary programming language will be Perl, we will make use of other languages.   Perl is available for all platforms, and is free.  The current release is Perl 5.10.0.  To obtain Perl, go to http://www.perl.org.  Modules for Perl may be downloaded from http://cpan.perl.org/ (Comprehensive Perl Archive  Network).

Purpose:

The main purpose is to explore the basic capabilities of a scripting language for interfacing with

  • programs written in other languages
  • system commands
  • Internet applications
  • networking
  • databases
Graphical interfaces will be emphasized.  In addition, we will participate in an open source development platform for Nokia Internet Tablets.  


Missed Classes:

You are expected to attend all classes.  If you must miss for any reason, please send me email as soon as you know you must be absent.  Absences will result in a lower Participation Grade.

Programming Assignments: A scoresheet for each assignment will be given, clearly indicating the number of points possible for each component of the project. Therefore, you should know how many points your earned on each project at the time you submit it to be graded. Unless otherwise indicated, the projects will be submitted to your Unix account, and will be graded on machines in the lab.
Homework:

You are expected to do all assigned homework exercises. Although they will not directly be used to caculate your grade in the course, they will indirectly impact your performance, as well as your Participation Grade.   Blackboard Forums and/or the class Wiki will be used to discuss homework problems; you will be expected to contribute to these discussions on a regular basis. You may discuss homework exercises with other students in the class and, of course, with me.

Lecture and Reading Assignments:

The schedule of topics is subject to change (due to progress rate of the class) so be sure to check the Schedule of Topics page in Blackboard periodically for latest information.

Online Class Info:

You are getting a hard copy of this syllabus at your first lecture.  But some of this will change during the course of the semester.  (Grading policy, exam dates, etc. will not change but lecture schedule will probably change.)  All pertinent class information will be available though Blackboard, including very useful FAQ's, tips, hints, suggestions from other students, etc., available through the Discussion Forums and/or the class Wiki.

Grading:
Component Percentage

Specific Programming Tasks

Several small programming projects will be assigned during the semester to demonstrate your mastery of basic concepts and abilty to perform specific tasks using Perl. Included in this category will be

  • interfacing with a Unix shell
  • providing a graphical interface to a program
  • interfacing with a program written in another language
  • embedding a Perl script within a program written in another language

In addition, you may have some small projects in this category that deal with the other major project areas.

20%

Project: Database Interface

This project area will be concerned with interfacing different databases. You will provide access to the database both via the shell and via the Internet. One database will be the Perl DB and another will be MySQL. Additional databases may be accessed.

20%

Project: Producing Dynamic Web Pages  using CGI (Common Gateway Interface)

You will develop and write the software to produce web content on demand,  according to specifications. Several databases will be maintained as part of this site. 

20%

Project: Network Interface

One major project will involve interfacing with a network, builing client/server communications.  This may be an individual effort, or as part of a small group, with prior permission, and may be combined with the Device Interface project.

10%

Project:  Device Interface

You will design, develop, and produce a project for a mobile device.  This may be an individual effort, or as part of a small group, with prior permission,  and may be combined with the Network Interface project.

20%

Participation

Of course you are expected to attend class, come prepared to participate in class discussions, and contribute to the wiki "how to's".  But, in addition to participating in the usual classroom experience, it is important to participate in the larger community of developers, through various forums, wikis, lists, Q&As, etc.  Although the grade you earn for this portion is entirely subjective, you will always be notified in writing when participation points are being deducted, and given a chance to refute.

10%
Determining Grade:
Average Grade   Average Grade    Average  Grade
58% D -   60% D   67% D+
70% C-   72% C   77% C+
80% B-   82% B   87% B+
90% A-   92% A   97% A+