HOME | CSCI 1710 | CSCI 1900 | CSCI 2150 | CSCI 2910 | CSCI 4717 | CSCI 4956 | CSCI 5011

This page is now obsolete. Please go to the ETSU D2L site for up-to-date course information.

April 27, 2007

To aid you in your studies, I've posted the following tests and answer keys:

There are also links to these documents from the Tests Aids page of the course web site.

April 23, 2007

The most common question I get toward the end of the semester is, "What do I have to get on the final to get a ___?" Well, I can't tell you that, but I have posted your grade up to this point on the grade book in Blackboard. The last item in your grades on Blackboard should be titled, "Grade wo/Final or P2." This item is what I currently have for your grade in this course after having completed 70% of the graded work. It does not include project 2 (10%) or the final (20%).

If you are not planning to take the final, i.e., you have an A or a B at this point, use the following formula to calculate your predicted score:

Final grade = [0.875 * (Grade wo/Final or P2)] + [0.125 * (expected P2 grade)]

If you are planning to take the final, use the following formula to calculate your predicted score:

Final grade = [0.70 * (Grade wo/Final or P2)] + [0.10 * (expected P2 grade)] + [0.20 * (expected final exam grade)]

April 19, 2007

I have posted the answers to Test 3 on the web site. You can find the by going to the Test Aids page, then scrolling down to Test 3 on the table of tests. In the right column, you should find links to:

In addition, and I apologize for this, I forgot to distribute the grading details for your on-line portions of the test during class. I will try to bring them to class on Tuesday.

April 19, 2007

The three URLs used in todays lab exercise are:

April 16,2007

I have posted the "rubric" I plan to use to grade Project 2. This is intended to help you determine the requirements for your project. You can find the rubric in MS Excel format at http://faculty.etsu.edu/tarnoff/othr2910/P2_rubric.xls

April 2, 2007

I just wanted to drop you a note to remind you of tomorrow's quiz. It will cover:

Basically, we haven't had a PHP quiz yet, so anything that we've covered so far in PHP will potentially be on the quiz.

March 19, 2007

I just thought you would like to know that I will be including a "cheat sheet" of sorts with tomorrow's exam. Basically, I will include the following SQL/MySQL syntax as part of the front page of the exam. I didn't want this to be a memorization-heavy exam. Focus more on how to create the MySQL statements rather than memorizing their syntax. Note that none of the semi-colons have been added for their command line usage.

March 16, 2007

I have posted some study material for this Tuesday's quiz on our web site on the Test Aids page.

February 24, 2007

Some people have been having some difficulties with the first project. The problems they are experiencing are not necessarily with the programming, rather it is with the odd logic required to initialize the program, i.e., randomize the image. I did not intend for the project to be a struggle for those who don't enjoy the challenge of a good algorithm development. (Yeah, there are a few of us who think it's really cool when we can get numbers to jump through hoops for us.)

Anyway, I wanted to give those who are having troubles with the random image a foot hold. Here's some helpful advice.

The algorithm I used is based on viewing the individual cells of the table in order from left to right and top to bottom. This allows me to use single dimensional arrays to refer to the "properties" of all of the table's cells.

 +-----------+-----------+-----------+-----------+
 |           |           |           |           |
 |  cell_0   |  cell_1   |  cell_2   |  cell_3   |
 |           |           |           |           |
 +-----------+-----------+-----------+-----------+
 |           |           |           |           |
 |  cell_4   |  cell_5   |  cell_6   |  cell_7   |
 |           |           |           |           |
 +-----------+-----------+-----------+-----------+
 |           |           |           |           |
 |  cell_8   |  cell_9   |  cell_10  |  cell_11  |
 |           |           |           |           |
 +-----------+-----------+-----------+-----------+

When I initialize the table with images, I insert an onClick event that calls a function like userClickedCell(cell) where the cell argument is the cell number from 0 to 11.

I have also similarly numbered the images. Okay, so the images aren't really numbered, but they have an order when the image is solved.

I've then created an array called cell_contains_image_number(). The index of this array corresponds to the cell number. The integer contained in each element of the array is the image number.

This array can be used for three things: to randomize the images, to determine which image is currently being displayed in a particular cell, and to check if the image has been solved. (Checking for a solved image is as simple as making sure the value stored in each element of the cell_contains_image_number() array is equal to its index.

If I know what row and column a user has clicked on, I can figure out which image is currently in that cell from the row and column values.

image_currently_displayed = cell_contains_image_number((4 * row) + column);

In order to figure out where the blank cell is, all I have to do is search for the element of cell_contains_image_number() that equals 0, i.e., the integer that represents image_00.gif. This could be done with code as simple as:

var empty_cell=-1;
for(counter = 0; counter < 12; counter++)
    if(cell_contains_image_number(counter) == 0) empty_cell=counter;

Note that there is a more elegant solution using a do-while loop, but the above code works just fine.

Okay, so using a single dimensional array makes it harder to check if the user has clicked on an image that is adjacent to the empty cell. It still shouldn't be all that bad though. Checking what row and column the "clicked-on" cell involves some basic integer math.

function getColumn(cell)
{
    return(cell%4);
}

function getRow(cell)
{
    return(Math.floor(cell/4));
}

Now for the hard part, randomizing the array. I made a simple while loop:

var cell_contains_image_number = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
var image_pos_to_init;
for(image_number_to_assign = 0; image_number_to_assign < 12; image_number_to_assign++)
{
    do
    {
        image_pos_to_init = Math.floor(Math.random() * 12.0);
    }while (cell_contains_image_number[image_pos_to_init] != -1)
    cell_contains_image_number[image_pos_to_init] = image_number_to_assign;
}
document.write("<h1>Array equals: " + cell_contains_image_number.toString() + "<h1>");

The last line is not part of the code. I've included it only to display the resulting array when it's completed.

I hope this helps.

February 13, 2007

Project 1 has been defined! You are going to be putting together the modern day version of the old number tile slider game. A description of this game along with some of the math that goes behind it can be found at MATH 308 Euclidean Geometry Project from the Mathematics Department of the University of British Columbia on a page put together by Hazel Grant. Instead of numbers, however, you are going to use pictures. You can find 12 images on the documents section of Blackboard for our class. These twelve images make up a complete single image of three rows and four columns. Note that if the images are initially randomized, it is possible to have put them into an unsolvable order.

Your JavaScript code must do the following:

You may also get bonus points for additional features such avoiding the creation of an unsolvable puzzle, but this is by no means a requirement.

The project is due February 27th by the beginning of class. Good luck!

February 8, 2007

thursday's lecture will include topics on form validation. One of the in class exercises involves reviewing a library of form validation routines written in JavaScript. I have provided links to this library both with the header description and without.

January 24, 2007

It has come to my attention that some of you are in need of WS-FTP on your home machines. To download a copy of WS-FTP to be used only for ETSU-related activities, visit ETSU's download site. Double click on the ws_ftp32.exe file, and when prompted, save the file to a folder on your harddrive. After the file downloads, execute the file by double-clicking on it from Windows Explorer and follow the directions to install it on your machine.

January 18, 2007

Just a reminder that we will be having a quiz on Tuesday over the CSS material we covered in class today. All of the questions will come from the material on the CSS Refresher Worksheet that we used in class. Expect to see about 10 to 15 short answer/multiple choice/true-false questions. Don't bother memorizing the property names; I'll give you the ones you need.

January 17, 2007

In an effort to avoid using PowerPoint, I have created a set of worksheets for our review of cascading style sheets tomorrow. I will bring a few copies to class, but our copier broke this afternoon, so I will not have enough copies for everyone. If you could, please print out the worksheets from the link below.

http://faculty.etsu.edu/tarnoff/ntes2910/CSS/CSS_worksheets.pdf

January 16, 2007

Welcome to class! We are going to spend this semester learning ways to add dynamic content to your XHTML web pages.

Before we get started, I need you to verify that your e-mail address is set up correctly on Blackboard. I use this system to e-mail you updates throughout the semester regarding class. I cannot take responsibility for messages you did not receive because you were not looking at your z-account e-mail.

[ News ] [ Syllabus ] [ Notes ] [ Exercises ] [ Test aids ] [ D2L Login ] [ Other links ]