Computer Science 307
Fundamentals of Computer Science

Welcome to the homepage for CS 307, Fundamentals of Computer Science, Fall 2003 version. All of the important administrative information you need for the class is contained via one of the links below.

Syllabus  Schedule  Software  Links  Assignments  Office Hours / Lab Hours  Test Review Materials  Discussion Section Handouts(DiSHes)

December 29: A breakdown of results on the final and final course grades.

December 15:  I have finished grading the final, posted the grades for the final exam to egradebook, and have submitted final grades to the registrar. I do not know how long it takes for the registrar to make grades available, but when you get your final course grade please keep the following in mind:

The grading system needs to be fair to everyone so keep this in mind:
(1) Assigned grades are not the starting point of a negotiation. This isn't a weekend bazaar. Unless we have made a specific mistake in grading your work (i.e., you have a correct answer that was marked wrong or your score was added incorrectly), your grade is final.
(2) If we have made a mistake then in a calm and professional manner send me an email message describing the error you think has been made.

Note that none of the following grade discussions are appropriate:
(1) "I know my answer was wrong, but I deserve more partial credit points." When we grade, we make decisions about how many points to give for various kinds of wrong answers. This is never a clear cut decision. The important thing is that we make some decision and then implement it fairly for everyone. It is completely unfair to come back later and give one person more points just because they ask. We won't do it.
(2) "I don't like my final grade. It will ruin my life for the following reason: ... Therefore you should give me a better one." Class grades reflect only one thing: how well you did in the class. Life circumstances just don't play a role here. Don't come to me with this kind of argument.
(3) "I don't like my final grade. I am desperate. Isn't there some sort of extra credit thing I could do?" Any answer other than "No" to this question would be completely unfair to other students in the class unless they were all offered this option. That would be equivalent to saying that the semester isn't over and everyone can keep trying. We're not going to do this. Final grades are final.
(4) "I don't like my final grade. Can I have an incomplete and try again?" There are University rules for giving incompletes. If you meet those rules (e.g., you had a medical problem during the semester), then, of course, come and tell me and ask for an incomplete. But make sure you do it as soon as you can. Do not wait until the semester is over. If you do not meet the rules, the answer is "No".
(5) "I don't like my final grade. It doesn't reflect what I really know. I guess I didn't show what I know on the exams, but won't you give me a chance to convince you that I really know this stuff." Again, any answer other than "No" would be unfair to everyone else.

Remember, grades are a reflection of performance in the class on homework, quizzes, midterms, and the final. Unfortunately the amount of effort you put in the course or your perception of your knowledge level have no relevance or bearing on the final grade you are assigned. It is based on your performance on the homework, quizzes, midterms, and the final. The time to "do something" about your grade is long past. The time to do something about your grade was during the term in studying for the class and doing the work for the class. 

I am not posting this information because I am mean-spirited. I am simply amazed at the number of students each term who try to negotiate a final grade that has little correlation to their performance in the class and I am trying to head off these types of discussions before they start.

Take care and have a good break.

December 10: Room assignments for the final: Students with last names starting with A - H are assigned to Painter 2.48 and students with last names starting with I - Z are assigned to Painter 4.42/ Please go to the correct room.

December 9: Please bring a pencil to the exam. A portion of the exam will use a standardized test bubble sheet.

November 24: I have posted scores to egradebook for midterm 2. The aggregate results and curve have been posted. 

The final exam is Thursday, December 11, 7 - 10 p.m. in Painter Hall 2.48 and 4.42 (Room assignments to be posted at a later date.) The makeup, available only via prior arrangement with me, is Friday, December 12, 9a.m. - 12 noon. The length of the final will not be significantly longer than the midterms all the format will be a little different. I have decided to include our class in a national survey of introductory programming classes using Java and so there will be some standardized (multiple choice) questions most involving reasoning about pieces of code and possible implementation of data structures. There will be 3 coding questions, one involving trees (and therefore, possibly recursion) and 2 questions involving data structure, using and implementing.

For the week of the final I will be holding extra office hours so please feel free to stop by on Tuesday December 9, ~10 - 2, Wednesday December 10, all day, and Thursday, December 11, 12 - 5.

November 20: Assignment 11 has been posted.

November 14: Assignment 10 has been posted.

November 10: The second midterm exam is on Wednesday, November 12, from 7 - 9 p.m. in ART 1.102. If you made prior arrangements for the makeup it is Thursday, November 13, from 9:30 - 11:30 a.m.  in Taylor 3,128. 

November 5: The SparseMatrixGenerator class has been posted.

November 3: Assignment 9 has been posted.  The supporting classes for testing will be available Wednesday.

October 30: Tomorrow's classes (Friday, October 31) are canceled. I am at home sick. (A touch of pneumonia.)

October 27: The assignment handout states duplicate entries are not allowed in the Lexicon. This is incorrect. Duplicate entries are allowed. This makes you job a little easier.

Someone in the afternoon class asked what the Java ArrayList class started its containers at. From the java source code (which is included as a zipped file when you download the sdk. Look under the directory you installed the SDK for src.zip.)

public ArrayList() {
    this(10);
}

It calls the constructor where the capacity can be sent as an int with an initial size of 10. Shame on them for not using a constant.

October 24: Assignment 8 has been posted. Enjoy!

October 22: Contrary to a posting I made to the newsgroup in a less than lucid moment, you can use the substring method in the palindrome method. Sorry!

October 20: The drop deadline for courses is Wednesday. You should have enough information to decide whether you want to drop or not based on midterm, quiz, and assignment performance. I am not encouraging people to drop, in fact I am encouraging people to stay. The chairman of the Computer Science Department, Professor J Moore, summed it up very nicely: "making a C or B in your first CS course is not indicative of failure!  The field is broad and many experts (including most of the faculty!) are good at some parts and not particularly interested in others.  Deciding to abandon the field because you didn't make an A in your first course is not very defensible." I strongly urge you to stay with computer science if it interests you as a field of study. If you are planning on pursuing a different field of study I would ask you to examine you reasons why.

October 17: Assignment 7 has been (Thanks Mom.) posted.

October 15: Midterm 1 aggregate results have been posted. This includes the curve.

October 10: Assignment 6 has been posted.

October 10: There is an error in the original version of the Simulation class I provided. The step method does not check to ensure a BasicOrganism has not been eaten between the time the list of all organisms was pulled from the world for the current turn and an organism is told to act. The corrected version of step is:

//--------------------simulation.java------
    public void step()
    {   Locatable[] orgs = myWorld.allObjects();
        shuffle(orgs);
        for(int i = 0; i < orgs.length; i++)
        {
           if(myWorld.objectAt(orgs[i].location()) == orgs[i])
            ((BasicOrganism)(orgs[i])).act(myWorld);        
        }
    }
//---------------

Add the if statement to your code. Many thanks to David Grohmann for identifying and fixing this problem.

The deadline for assignment 5 is extended until Monday, October 13 at 11:00 p.m.

October 6: This assignment (Terrarium) is another hard assignment. Hopefully you already started and have a partner to work with. I would start with very simple strategies for your animals and then if you have time add complexity.

The two assignments after this one will, depending on the student, take less time. On an absolute scale I would say the next two assignments are certainly easier than the current and previous assignment or DNA assignment, more on par with the Matrix assignment.

I know that coding can be a real grind, but please keep in mind, our goal is for you to learn a valuable and important skill that will assist you in your study of computer science. As Dan Rather says, "Courage."

October 3: Assignment 5 has been posted. And there was much rejoicing...

September 26: Assignment 4 has been posted. Midterm 1 will be held Wednesday, October 1, 7 - 9 p.m. in ART 1.102. The alternate exam (which may only been taken if you have made prior arrangements with me) will be 9:30 - 11:30 a.m. in Taylor Hall 2.144.

September 19: The post condition for the process strands method in assignment 2 had an error in the post condition: Just to be clear:

/* pre: labels and strands are parallel arrays, containing the labels and strands for a group of dna strands. labels[0] is the label for strands[0], label[1] is the label for strands[1], and so forth.  label.length = strands.length. No element of labels or strands is null. threshold > 1
post: process the strands according to the process described in the assignment 2 handout using threshold. The method returns an array of Strings which contains the labels for the final strand(s). The length of the returned shall equal the final number of strands. This will be a parallel array to the variable strands. The variable strands will contain the merged strands. The N final strands will be contained in the first N elements of the variable strands. Note, strands will contain some null elements if any merges occurred. This is necessary because any statement such as"

The original version stated labels instead of strands. This of course is completely wrong. The labels array should not contain the strands, it should contain labels, but really isn't important since the method returns the array of labels. The char[][] will contain the information of the strands, the bases if you will.

September 19: Assignment 3 has been posted. 

September 15: Posted a page with links to all of the discussion section handouts. Check the schedule for suggested problems.

September 15: The assignment is unclear on how to combine labels when a match occurs. It is up to you. The order doesn't matter.

X1:AAAAAAAAT
Y1:AAAAATCCCCCCCC
 
if threshold is 6 or less we have a match
  
AAAAAAAAT
   AAAAATCCCCCCCC
 
New strand
 
AAAAAAAATCCCCCCCC
 
new label X1Y1 or Y1X1, doesn't really matter.
 
Also for a containing match the label of the smaller strand is added to the label of the larger strand. Again the order of labels doesn't matter.

September 12: Assignment 2 has been posted.

September 8: Lab hours page posted. The USLs will be holding lab hours starting today.

September 5: Small section signups are happening now. Please make sure you visit the page listed below and sign up for your section. Sections will not meet until Tuesday, September 16th. They will not meet on Tuesday, September 9th. USLs will start holding lab hours in the microlab starting Monday. Please see the Lab Hours Schedule page.

September 3: Section signups are available. Go to http://www.cs.utexas.edu/users/leverich/signup/ and follow the instructions. Sections will not start until September 16th. Remember if you work as a pair on an assignment, you must have the same section leader. 

Please use the newsgroup as it was intended. To pose and answer questions about course material and other CS topics in general. Sophomoric pictures, pickup lines, and useless comments on people testing their connectivity to the newsgroup are not appropriate uses of the newsgroup. Thanks.

Letters for students who need to see the CS advising office in Taylor 2.126 regarding prereqs and/or repeating the class are available.

August 29: If you are having trouble accessing the newsgroup be sure you have followed all the instructions from the ITS web site. 

August 27: Here is a link to the story I mentioned in class about the UT CS professors and the next generation processor.  Here is a link to Professor Peter Stone and his Artificial and Robot Soccer research.

August 25: Welcome to CS 307, Fall 2003. Check back often for news and announcements.

There is a class packet with slides and homework problems available at the University Duplicating Services office in Welch Hall, room 2.228.


Detailed instructions about accessing UT newsgroups can be found on the class software page. Nathan Skvirsky, a proctor for the course, has provided simple instructions on how to set up Microsoft Outlook Express to access the class newsgroup via an on campus computer.

Syllabus The most important document in the class.  This contains details for just about every issue on the class

Schedule: This has the calendar of everything including links to handouts given in class.

Software: A page with more links to information and instructions on how to use the various pieces of software required for the class.

Links: A collection of helpful and interesting links.

Assignments: The large page containing links to assignment handouts and the necessary java files for assignments.

Tutoring: In addition to the instructor, TAs, and undergraduate proctors, tutoring help available via the following means:

  1. ACM at UT tutornet (ACM = Association for Computing Machinery) offers tutoring to members of the UT ACM chapter. You can join the UT ACM chapter for only $5 per semester.  See the web page to sign up.
  2. Upsilon Pi Epsilon, the CS honor society, provides free walk-in tutoring by CS honor students. This semester, they meet every Wednesday from 6:30-8:30 pm in TAY 3.144.
  3. The Learning Skills Center, located in Jester A332A, 471-3614, has individual tutors for hire. The cost is about $10 per hour; students receiving financial aid can get 2 hours per week free.

Maintained by Mike Scott.  Email me comments and suggestions.

Mike Scott's Homepage