Instructional Technology Program
University of South Florida College of Education

DEPARTMENT COURSE SYLLABUS

EDK EME 6930
Programming Languages in Education:
Web Programming 1

Fall 2008

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

(Syllabus addresses all course sections taught by Dr. White. On-campus and Distance Learning differences are noted.)

Asst 0 Asst I Asst II AsstIII Asst IV Asst V Asst VI Project


ON-CAMPUS SECTION 901: (ref#81215)

COURSE PERSONNEL

James A. White, Ph.D.

SCHEDULE: Thursday Evenings, Fall: 5:15 - 8:00 PM, EDU213

PREREQUISITES: Graduate standing, OS fluency (MS Windows 95/98 or MacIntosh OS or equivalent), and fluency with applications (wordprocessing, email, web browsing, database, etc.)


DISTANCE LEARNING SECTIONS 700 & 799: (ref #81214)

COURSE PERSONNEL

James A. White, Ph.D. EME 6930 Course Professor EDU162 (mail) EDU302U (office)
  (813) 974-1629 wwwprog@tempest.coedu.usf.edu

University of South Florida, 4202 Fowler Avenue, Tampa, FL 33620-5650

SCHEDULE: There are NO class meetings except for the final exam. The course is conducted by email/WWW. See Schedule of assignment submission and other deadlines. Ignore any materials or web pages indicating any initial meeting for this class. I won't be there.

PREREQUISITES:

The Distance Learning option is offered to a limited number of qualified students for whom the on-campus course is not a productive option.  These are students who have substantial programming experience. Participants are expected to be highly motivated and self-directed. Additional prerequisites that you must have are: 1) previous programming experience, knowledge of and experience in using basic data structures (e.g. scalar and arrayed variables) and basic control structures (e.g. if, case, for, do.); 2) email and the ability to use it to send messages with attachments; 3) some previous experience with HTML; 4) your own web space at which you already know how to publish web pages; 5) a Windows 95 system (or later); 6) willingness to come to Tampa for the final examination; 7) you must email the instructor for a permit to register.


TEXT AND OTHER COURSE MATERIALS

REQUIRED: McDuffie, T. S. (2003). JavaScript Concepts & Techniques: Programming Interactive Web Sites. Wilsonville, Oregon: Franklin, Beedle & Associates.  ISBN: 1-887902-69-4 BUY IT AT http://www.fbeedle.com/69-4.html

AND
REQUIRED: Personal email and web site.  If you don't have this, see USF Academic Computing Help.
AND
REQUIRED: (DISTANCE LEARNING ONLY) Equipment to use the materials above. 
 

COURSE DESCRIPTION

Web Programming 1 is an introduction to problem-solving and programming within the field of education. Course content is developed in the context of its application to instruction and to the collection and manipulation of educational data.


COURSE OBJECTIVES

01.0 Identify strategies and procedures for using high level programming languages to implement instruction and to collect & manipulate educational data.
02.0 Describe the general purposes of programming languages and how programs are designed.
03.0 Operate an event-driven, high level language in a GUI (graphical user interface) operating environment.
04.0 Describe and use HTML and JavaScript statements.
05.0 Describe and use JavaScript functions and operators.
06.0 Describe and use HTML controls and JavaScript methods.
07.0 Describe and use JavaScript variables and data types.
08.0 Manipulate numeric and string data.
09.0 Describe and use JavaScript decision-making.
10.0 Describe and use iteration and repetition in JavaScript.
11.0 Employ and control multimedia With HTML and JavaScript.
12.0 Describe and use JavaScript arrays to store, retrieve, and manipulate large amounts of data.
13.0 Use JavaScript to store and retrieve information in the browser cookie.
14.0 Describe and apply sound programming practices to the development of modular, structured JavaScript programs that reflect understanding of variable scope and parameter issues.
15.0 Describe and apply procedures to "debug" (locate and correct errors in) HTML/JavaScript programs.
16.0 Publish Javascript-enhanced pages on the web.

COURSE PRODUCTS

The Course Products that comprise the basis for evaluation of the student's performance are seven formal benchmark Assignments (0-VI), a Course Project (optional), and a Final Examination.

Course Assignments:

General Instructions

Before attempting to write any of the Assignment programs described below:

  1. Complete the corresponding chapters in the textbook, run & study the demo programs provided with the textbook, and do many exercises.
  2. Try to write some programs of your own invention that apply your new knowledge. Try to write a whole bunch of them. You learn to program by PROGRAMMING -- what a concept!
  3. Then, run & study the related instructor-provided demo programs. You are able to see all the code of these programs, as with the text-provided programs.
  4. Run the appropriate Sample Solution (Sample0.html, for example) to get a visual example of the kind of program that you must write and submit to the instructor. In most cases, I have taken steps to hide some of the code from you in these programs so that you won't be tempted to parallel them too closely.
  5. NOW try to write your Assignment submission.

In each of the Assignments you are instructed to demonstrate mastery of the objectives by creating a single, culminating product. This single, culminating product should be made to demonstrate your mastery of the concepts in a straightforward, spartan manner.  The online sample solutions are, in most cases, more complex than what you should create.  I will evaluate your assignment solutions and give you feedback (by email) regularly as you notify me (by email) of their completion.  However, if you expect to learn the course material well, you will have to write/study many, many more programs other than your Assignment submission. (There are abundant exercises and examples in the course text.)

As you create your assignment submissions, adhere to the general intent of each task, not the exact detail of how it has been accomplished in the sample solution. I don't want you to recreate the sample programs, just to do something comparable -- as long as you accomplish the same general objectives about learning programming.  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/webprog1/). Also, be sure that all your work functions well at 640X480 (very low) resolution.

How Will You Know If Your Assignment Is Correct?  In most cases it should be self-evident, but whatever the case you will always receive a return email from me with feedback in response to your message to wwwprog@tempest.coedu.usf.edu telling me that the assignment is ready for evaluation.  If the assignment is OK I will tell you so.  If it is not, I will tell you what I think you should do.

For those who seek the course "A" by submitting a Course Project, I evaluate projects at the very end of the course, so I normally send no email response. My evaluation is factored into the overall course grade. However, I will respond to specific questions about course projects as best I can.

How Soon Will I Respond?  I prioritize.  I try to respond to direct questions from distance learners within 24 hours of my receipt the message.  For on-campus students, it depends upon the nature of the question, but most issues should be addressed in the weekly lab sessions, not by email.  For assignment submissions and resubmissions about which you don't have questions, I try (and almost always succeed) to respond on a weekly cycle, much as you would experience in an on-campus class.  I try to let NO message of any kind go unanswered for longer than a week, except during University holidays.  Also, although I will receive assignment and project submissions after the overdue deadline near the end of the course, I won't usually respond to them.

Assignment #0: Introduction to HTML

Objective - Use HTML to make a simple web page with various formatting features (a title, a picture, color settings, some text displayed in varying fonts and other attributes, etc.) and various links to other pages. The page should also include a form with various input fields & buttons and a "send" button that posts the form's data to the following cgi "test" program:
http://www.coedu.usf.edu/wwwprog/cgi-bin/post-query.pl OR You may wish to work ahead to a later course topic and use OPEN.org's email-forwarding script http://www.open.org/user-cgi/mailto.cgi which is documented at
http://www.coedu.usf.edu/webprog1/emailer.html (But don't use it to forward data to ME.  I get enough spam as it is ...) 
(Note: I suggest that you build this in at least two phases. First, make the basic web page without the form elements. Then, once that is working, go back and add the form elements.)
References - McDuffie Intro, Chapters 2 (pp. 45-53) & 12 (HTML Form Elements), and Appendix D; online HTML tutorials; Assignment 0 Demo Programs
Sample Solution 0 - http://www.coedu.usf.edu/webprog1/sample0.html

Assignment #I: Introduction to JavaScript

Objective
- Create an original program that allows the user to enter demographic data into text boxes or other controls, and then to use buttons to manipulate the data and change the attributes of the controls. (You may want to use image objects, select objects, and input objects of type text, password, textarea, and button, but avoid using radio buttons and checkboxes in this effort. They're a bit more complex.  Select objects are difficult in some older browser versions, too.) Your buttons should specify event handlers that call JavaScript functions that you have defined in the header.
References - McDuffie Chapters 1, 2 (
pp. 54-74), & 5, and Appendix D; Assignment I Demo Programs
Sample Solution I - http://www.coedu.usf.edu/webprog1/samplei.html

Assignment #II: Data and Decision-Making

Objective
- Create an original program that uses multiple groups of controls (such as radio buttons, check boxes, etc.) and JS selection structures to collect data from a user, perform some kind of processing on those data, and provide some kind of qualitative response that depends upon the result of the data processing. Also, use dialog boxes to collect some appropriate text data from the user (prompt), and to display pop-up messages (alert) or to offer options to the user (confirm).
References -
McDuffie Chapters 3, 4, & 6, selection content (if, switch), and Appendix D; Assignment II Demo Programs
Sample Solution II - http://www.coedu.usf.edu/webprog1/sampleii.html

Assignment #III: Repetition and Arrayed Data

Objective
- Create an original program in which you apply methods of repetition (looping) to indexed (subscripted) controls such as selection lists, radio button groups, checkbox groups, etc. to manipulate moderately large amounts of information.
References -
McDuffie Chapter 6, repetition content (while, for, do), and Appendix D; Assignment III Demo Programs
Sample Solution III - http://www.coedu.usf.edu/webprog1/sampleiii.html

Assignment #IV: Randomness & Other Useful Methods

Objective
- Create an original program in which you use JavaScript's built-in methods to accomplish a substantial task that incorporates randomness and at least one other method or function appropriately that produces or manipulates a numeric or character value (the Math.floor or other related method that you use to manipulate the random number range doesn't count unless you do something original with it.)  Sampleiv.html, for example, focuses on the use of timing methods to time the latency of a subject's responses to a test of the limits of short term memory (Miller's number - 7 +/- 2 chunks.) Beginning with one digit, then two digits, then three digits, and continuing until the subject fails, the program displays a random sequence of digits in a text box for a fixed amount of time, then hides the digit(s) and asks the subject to recall them. When the subject fails, the latency of the response on the last trial is shown.
References -
McDuffie Chapters 9 & 10, and Appendix D; Assignment IV Demo Programs
Also, there are many additional methods that belong to the string, math, and other objects that you may wish to incorporate in your work. You can find more information in Netscape's online JavaScript documentation. Here's a good place to start: http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/
Sample Solution IV - http://www.coedu.usf.edu/webprog1/sampleiv.html

Assignment #V: Variable Arrays and Modular Programming

Objective
- Create an original program that manipulates a relatively large amount of data using modular programming methods.
  1. Implement major parts of the program as programmer-defined functions that are not tied directly to event handlers (functions that are called by other functions.)
  2. Include in your program at least one programmer-defined function to which a scalar variable is passed and used.
  3. Use a variable (data) array to store a moderately large data set.
  4. Include a function to which the variable array or other complex object is passed and multiple members of it are used.
For example, in samplev.html, the code that selects the random stimulus to be presented is now a programmer-defined function named RndStim(). The expression Answer=RndStim(2) causes a string of 2 randomly chosen digits to be generated and assigned to the variable Answer. Also, at the end of the program, instead of displaying the latency of the last response, the mean latency of all the response trials is displayed. This was implemented by creating a function named Mean. The expression: alert(Mean(TrialTime, NumDigits)) causes the mean of all the response latencies (times) stored in the array named TrialTime to be displayed in a message box. NumDigits contains the number of trials completed.
References -
McDuffie Chapters 7 & 8, and Appendix D; Assignment V Demo Programs
Sample Solution V - http://www.coedu.usf.edu/webprog1/samplev.html

NOTE: Many students find this unit to be the most difficult part of the course. It is not normally possible to achieve an "A" grade if you fail to "get" these concepts, however it IS still readily possible to get a "B."

Assignment #VI: Data Storage and Multimedia

Objective for "A" Students -- Integrate into your Course Project code that does the following:
Objective for All Others
-- Create an original program that does the following:
  1. Collects both demographic data and data related to the program's purpose.
  2. Stores the data in the browser's cookie.
  3. Emails the data to you using the copy of Meng Weng Wong's "mailto" program currently available at http://www.open.org/user-cgi/mailto.cgi.
  4. Under password protection, allows the data to be retrieved from the cookie and viewed.
  5. Implements dynamic media elements (e.g. movies, sounds) appropriately (optional).
Samplevi.html, for example, modifies samplev.html by collecting a subject's ID# and age. It then stores that information along with the performance data in the cookie and emails the data to me. The subject is able to view his/her data on the client under password protection. Moving images and audio are used to enhance the program.
References -
McDuffie Chapters 11-14, (15 optional), and Appendix D; Cookie Documentation, MAILTO Documentation; Assignment VI Demo Programs
Sample Solution VI - http://www.coedu.usf.edu/webprog1/samplevi.html

Course Project:

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 or the textbook authors. SampleVI.html is an "A" course project.  For additional detail, please review the "A" course grade criteria below.

Notes: Beginning at about Assignment IV, if your goal is to earn an "A" in the course, you should begin work toward your course project by trying to integrate the new information that you have learned into something larger and more ambitious than your assignment solution. If you do that consistently, you'll learn more and you'll have a big head start on your course project. Although I will help you with your developing course projects, I will only evaluate the project at the end of the course.  

Final Examination:

The final will be a multiple choice format examination of the rudiments of HTML forms, JavaScript, and related topics. The number of items on a given topic will reflect the amount of attention paid to it in class. The following example items are indicative of the format and average level difficulty.

Sample Items: (correct answers are indicated by **)

1. What will the last alert box display in the loop below?
for (var Index = 0; Index < 3; Index++) document.writeln(Index+1)
  1. 0
  2. 2
  3. 3**
  4. alert
2. What value will be displayed by the program below?
Sum = '1';
while(Sum.length < 3) {
  Sum = '0' + Sum;
}
document.writeln(Sum)

  1. 0.1
  2. 001**
  3. 100
  4. 1

See additional sample items at: http://www.coedu.usf.edu/webprog1/wp1sampleitems.pdf

DISTANCE LEARNING ONLY: Distance Learning students may exercise one of the following options:
  1. Take the examination with my evening on-campus class as indicated in the Course Schedule. Let me know if you want to do this. 
  2. If that option doesn't work for you, let me know as soon as possible and we will start working on an alternative.

STUDENT ASSESSMENT

TO EARN A COURSE "B"

  1. All assignments must be completed and submitted according to the Course Schedule, roughly an assignment every two weeks in Fall, every week in Summer.  For on-campus students, assignments are due the evening of class.  For Distance Learners, assignments are due MIDNIGHT SATURDAY of the given week. The term "submit" means that:
    1.  the assignment is complete to the best of your ability
    2. an email message has been sent to the instructor stating that the assignment is complete and has been posted at the student's web site.  You must 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.  I have posted a sample site at an account that I maintain on the USF student server --  http://jwhite.myweb.usf.edu/wp1 .  It will take some time for you to establish your own access to the USF student server and get this all working, so start as soon as you can.

    You must revise incorrect assignments until they are correct. In order to secure a Course "B" grade, no fewer than 4 assignments must be submitted on-time. 

  2. A score of 60% or higher must be obtained on a written final examination of the course content.

  3. Class Participation - 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.

  4. Note that you do NOT have to create a Course Project to secure a "B"

TO EARN A COURSE "A":

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

  1. No fewer than 6 on-time, correct assignment submissions.
  2. A score of 80% or higher must be obtained on a written final examination of the course content.
  3. A course project must be created that makes substantial and appropriate use of modular structure to display a high level of command over the course content. 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.
  6. Don't submit an Assignment VI if you intend to submit a course project.  Just incorporate the Assignment VI criteria into your project.

"I" (Incomplete grade) POLICY

USF Graduate School policy affords professors the "Incomplete" option only when a small portion of the student's work is incomplete and only when the student is otherwise earning a passing grade. 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". Don't ask me what form the documentation should take or what is acceptable. If I find any problem with it I'll let you know. "I" requests must be made and valid documentation provided before the course is over and grades have been issued.

This policy, combined with the Graduate School's current policy of refusal to entertain any petitions to take actions retroactive to a previous semester, means that you must make a firm commitment to the complete the course, or drop it very quickly.  If you decide to drop the course be sure to do so formally and follow up to verify, otherwise you are likely to receive a poor grade in the course -- one that cannot be removed.  There is no "grade forgiveness" policy at the graduate level.

Once issued, an "I" will normally 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 the grade that you have otherwise earned. If you are not satisfied with that outcome your only option will be to repeat (re-registering and re-paying) 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: All students have a right to expect that the University will reasonably accommodate their religious observances, practices and beliefs. Students are expected to notify the instructor in writing by the second class if they intend to be absent for a class or announced examination, in accordance with this policy.


Specific ISTE Competencies addressed in the course

1.1.1, 1.1.2, 1.2.2, 1.2.3, 1.2.4, 1.3.1, 1.3.5, 2.2.1, 2.3.1, 2.3.2, 2.3.3, 2.4.2, 2.4.3, 2.4.4, 2.4.5, 2.4.7, 3.1.9, 3.1.12, 3.2.8, 4.1.1, 4.2.1, 4.2.3, 4.3.1, 4.3.2, 5.2.1

Lab Experiences

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