Instructional Technology Program
University of South Florida College of Education

DEPARTMENT COURSE SYLLABUS

ref# 11580 EME 6930-798 Programming Languages in Education: Web Programming 2

Spring 2009

http://www.coedu.usf.edu/wwwprog/

Asst I Asst II AsstIII Asst IV Asst V Asst VI


COURSE INSTRUCTOR

James A. White, Ph.D. wwwprog@tempest.coedu.usf.edu
Office: EDU 302U Phone: (813) 974-1629 Hours: By Appointment

CLASS MEETINGS: None regularly scheduled

PREREQUISITES:  "A" in EME 6930 PLE: Web Programming 1

COURSE DESCRIPTION

Web Programming 2 is a graduate level education course designed to introduce experienced educational web programmers to intermediate-level topics in client-side educational programming and to the application of the fundamentals of server-side programming to educational goals. The major course content is browser programming with JavaScript, server CGI programming with Perl, and server ASP programming with VBScript.

REQUIRED COURSE MATERIALS AND RESOURCES
1.McDuffie, T. S. (2003). JavaScript Concepts & Techniques: Programming Interactive Web Sites. Wilsonville, Oregon: Franklin, Beedle & Associates.  ISBN: 1-887902-69-4
NOTE: This is the same text used in Web Programming 1.
2.JavaScript Docs at Mozilla JS Reference  &  W3Schools Reference
3.Castro, E. (2001). Perl and CGI for the World Wide Web (2nd Ed.). Berkeley, CA: Peachpit Press. ISBN #0-201-73568-7 
4.Appropriate computer system with, at minimum, an appropriate text/HTML editor, Internet/WWW access, Netscape Navigator 3.0 or Microsoft Internet Explorer 4.0. In the process of the course, you may need to secure and implement local web-server software and the Perl interpreter. (No cost involved.)
5.An Internet account that provides email and web-posting facilities. This account must also allow you to implement Active Server Pages (ASP) or CGI programs that you have written in Perl.  USF Academic Computing will provide you with such an account on the myweb.usf.edu host
6.Many other resources online at http://www.coedu.usf.edu/wwwprog and http://www.coedu.usf.edu/webprog1

OPTIONAL COURSE MATERIALS AND RESOURCES

1. Although USF provides server space appropriate for you to practice CGI with Perl, there is no comparable support for ASP.  If you wish to practice ASP during the course you will have acquire appropriate server space elsewhere, or install your own local MS server.  Regarding the former, ASP hosting appears to be available for as little as $4.00/month. The best option for the latter is XP Pro, which provides MS Internet Information Server.  XP Pro can be purchased with a student discount at the USF Computer Store: http://www.computerstore.usf.edu/  Another option is to use the MS Personal Web Server that was supplied with Windows 98 SE.  PWS also operates under some other older versions of Windows, but not XP Home Edition.

2. The only ASP/VBScript references that I have identified for you are online.  You may wish to invest in some printed references as well.  These can often be found heavily discounted at local bookstores.

COURSE OBJECTIVES & PRODUCTS

In each of the following Assignments, write a program that will demonstrate your mastery of the objectives in a straightforward manner.  Throughout your work, remember to refer regularly to the appendices in your textbooks, to the resources located at the web sites that support the textbooks, and to the resources online at the course web site - http://www.coedu.usf.edu/wwwprog/
Also, be sure that all your work functions well at 640X480 resolution.)

Although I have attempted to correlate the assignments below to chapters in the textbooks, it is far from a perfect fit. The books just aren't organized that way.

Assignment #I:

Objective - Use HTML to make and publish a web page with various formatting features, various links to other pages, a form with various input fields & buttons and a "send" button that posts the form's data to: http://www.open.org/user-cgi/mailto.cgi OR http://www.coedu.usf.edu/wwwprog/cgi-bin/post-query.pl OR to some other useful CGI script. The web page must also include JavaScript code that performs an educational task that makes use of multiple (or multidimensional) arrays of related data (e.g. a "FirstName[]" array that is used with a "StudentID[]" array.)  In the sample solution below, for example, three different global arrays (Question[], Prompt[], and Answer[]) are used to store the questions, the question prompts, and the correct answers.  Then a global scalar variable (CurrentQ) is used to ensure that the appropriate correct answer is associated with the appropriate question and prompt.
References - McDuffie 1-14 (esp. 7) OR Deitel 1-12; HTML Made Really Easy; CGI Made Really Easy
Sample I -
http://www.coedu.usf.edu/wwwprog/Sample2b.html

Assignment #II:

Objective - Convert the multiple data arrays in your Assignment I into a single array whose members are instances of a programmer-defined object class.  Convert at least one of the functions that processed the data in your Assignment I into a method of your new programmer-defined object class.  Add significant data validation functions or methods.  In the sample solution below, for example, the parallel arrays that were used formerly for the questions, answers, and prompts have been replaced by the single array ProblemSet[]. Each element of ProblemSet[] is a JavaScript object type named Problem. A Problem is defined to have a Question, a Prompt, and a set of correct Answers, which is another JavaScript object defined to have as many as three possible correct answers. Note how these changes are reflected throughout the code; especially how the PresentQ function is now implemented as the Present method and how the Check function uses the "with" operator to check all the possible correct answers conveniently.
References - McDuffie 16 OR Deitel 13, Online JS Docs at 
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Creating_New_Objects and http://www.w3schools.com/js/js_objects.asp
Sample II - http://www.coedu.usf.edu/wwwprog/Sample3b.html

Assignment #III:

Objective - Add features to your Assignment II (or create a new program) using any TWO of the following three JS-based options: 1) implement a significant programmer-defined object class that is entirely different from the one already present in your Asst II, 2) implement at least one significant recursive algorithm (any do, for, or while loop that you have ever written can be implemented recursively) , 3) implement at least one significant searching/sorting routine. (Also, feel free to propose other options, regular expressions, for example.)
References - McDuffie 7, 16 & find online web references OR 1st Ed. Deitel 11.9-11.11, 12.7-12.8, 14, 17, 19, 20, 28; 2nd Ed. Deitel 6, 10.10-10.12, 11.7-11.9, 13-17, 17-18, 20
Sample(s) III - 1) getRadioGroupValue Method 2) Animage Object 3) Quiz Object 4) More on recursion

Assignment #IV:

Objective
- Develop and implement on your web server a rudimentary Perl/CGI or ASP/VBScript program (both is best) that returns to the client a useful and moderately complex page of HTML including some Environment Variables. Modify a copy of your Assignment #I to replace the CGI action of the form with this new script. Also, add a link that allows me to read a copy of your script (I may not be able to see it on your server otherwise.)
References - Castro 1-6, 8, 17, Appndx A-E; MS VB Script & ASP References. (Also some relevant Chapters in Deitel.)
CGI Wrap on myweb.usf.edu
Sample IV - http://www.coedu.usf.edu/wwwprog/sampleiv.html

Assignment #V:

Objective
- Develop and implement a more complex Perl/CGI program
or ASP/VBScript program (both is best) that uses the data submitted by an HTML form to perform some kind of processing or make some kind of decision. The features of the HTML page returned to the client by the CGI/ASP program should vary with the values of the data submitted.  A good way to approach this is to translate into Perl/CGI a significant, interactive program that you have already written solely in JS or some other high level language.  One of your better WP1 assignments, for example ...
References - Castro 7 & 9, reference 10-16 as necessary; MS VB Script & ASP References.
Sample V - http://www.coedu.usf.edu/wwwprog/cgiqtst2.html

Assignment #VI:

Objective
- Based upon your assignment V, develop and implement an even more complex application in which CGI/ASP programs are used to:
1) store on the server data submitted by the HTML form
2) read data from the file on the server and return it to the client.
References -
Castro 18-20, reference 10-16 as necessary; MS VB Script & ASP References. (Also some relevant Chapters in Deitel)
Sample VI -
http://www.coedu.usf.edu/wwwprog/surveyi2.html

Course Project: ("A" students only.)

Objective
– Draw upon overall course material to construct a unique and sophisticated application that differs appreciably from or extends significantly the samples presented by the instructor.

STUDENT ASSESSMENT

TO EARN A COURSE "B"

1. Assignments must be completed and submitted according to the Course Schedule, roughly an assignment every two weeks. The term "submit" means that the assignment is complete, that an email message has been sent to the instructor stating such, and the message includes the exact URL at which the work may be accessed. (Please establish a permanent web presence for this course to which I can go and just click links labeled "Assignment I", "Assignment II", and so on.) Incorrect assignments should be revised until they are correct. In order to secure a Course "B" grade, at least TWO of assignments I-III must be completed successfully, at least TWO of assignments IV-VI must be completed successfully, and no fewer than THREE of those assignments must be submitted on-time.

2. Class Participation - On-campus students ARE expected to attend every class and to participate. Students are NOT required to complete assignments in the COE computer labs -- lab activities may be performed at home or at other suitable locations. Prepare readings in advance of class and spend enough time working outside of class to ascertain that competencies are being met. Expect to spend a substantial amount of time outside of class entering, modifying, and executing many different programs. The COE computer labs are open most weekdays and some evening & weekend hours. Check the labs for posted hours of operation.

TO EARN A COURSE "A":

In addition to meeting all the conditions for a "B":

1. All assignments must be completed correctly and no fewer than 5 of them must be submitted on-time.

2. A course project must be completed and presented briefly (5 min.) for discussion at the last class meeting.  The project should demonstrate significant mastery of course concepts. (Presentations required of on-campus students only.)

3. The course project must make substantial and appropriate use of modular structure. Inherent in this concept is the appropriate use of data at global and local levels and the consequent passing of data and objects between subprograms.

4. The course project must include appropriate amounts of clearly-written internal documentation (remarks contained within the program code.)

5. The course project must move beyond the level of "brute force", situation-specific programming to the substantial use of generalizable algorithms. For example, if the program needs to present the subject with a number of multiple choice questions, a brute force approach is to make each question a different subprogram of the main program. A more generalizable approach is to write one question subprogram that either generates the questions or reads them from storage.

"I" (Incomplete grade) POLICY

Students sometimes fail to progress in technology-centered courses because adequate prerequisite technical skills are not possessed or because adequate time management and study skills are not exercised. These are NOT appropriate bases for the issuance of an "Incomplete" grade. No "I" grades will be awarded in this course without extenuating, documented circumstances, such as death in the family or extended illness. If you should happen to arrive in such unfortunate circumstances, be sure to provide me with suitable documentation when you approach me about the "I". I won't ask you for it. Also, don't ask me what form the documentation should take or what is acceptable. You make that decision. If I find any problem with it I'll let you know. Your "I" will buy you one more semester in which to finish your work. If you haven't earned a higher grade by that time, your grade will convert permanently to an "F" and there will be no way to complete the course. If you wish at that point to continue, you will have to start anew by re-registering (and re-paying) for the course.


ADA Statement: Students with disabilities are responsible for registering with the Office of Student Disabilities Services in order to receive special accommodations and services. Please notify the instructor during the first week of classes if a reasonable accommodation for a disability is needed for this course. A letter from the USF Disability Services Office must accompany this request.

USF Policy on Religious Observances: Students who anticipate the necessity of being absent from class due to the observation of a major religious observance must provide notice of the date(s) to the instructor, in writing, by the second class meeting.


Lab Experiences

Approximately 50% of class meeting time is allocated for instructor-facilitated laboratory work.