Prerequisites:
Textbooks.
Required: Mark Allen Weiss, Data Structures, and Problem Solving
with Java (2nd edition) (Addison-Wesley, 2002), ISBN 0-201-74835-5.
Recommended: Patrick Henry Winston, Sundar Narasimhan, On to Java, (2nd edition) (Addison-Wesley, 1998), ISBN 0-201-38598-8
Undergraduate Section Leaders:
This term the Computer Science Department is initiating a new program in which undergraduate Computer Science majors will be employed to teach small discussion sections of 10 - 12 students and grade these students program interactively (You know, like while sitting together and being able to talk about it.).
You will be assigned to a graduate student teaching assistant or an
undergraduate section leader (USL), normally the student
who teaches your small discussion section. This person is your vital link
to me in the course. All questions regarding your grade should first
be directed to your TA since they maintain your grade record until the very end
of the course. TAs and USLs will hold office hours in the Painter Hall computer lab to help with
programming assignments and discuss problems and difficult aspects of the
material.
Classes. Monday, Wednesday, and Friday class meetings will be lectures, with four small discussion sections meeting together with me in Taylor Hall 2.106. I may give quizzes during some of the lectures. Small group discussion sections meet on Tuesday or Thursday depending on the unique course ID for which you are registered and which small discussion section you sign up for. Each section meets separately with a graduate teaching assistant or USL to give students the opportunity to discuss supplementary material, get a head start on homework assignments, and allow students to ask questions. Handout will be given the Friday before discussion sections with some of the material to be covered in section. You shall complete this before coming to section although it will not be graded. Participation in lecture and discussion section is one thing that can help you move up if you are on the borderline of a grade break. This means if you are within 1 point of the next highest grade and I believe you have participated in class I reserve the right to move you up to the next highest grade. Short quizzes will be given and important examples will be worked during these discussion sections. You are responsible for any and all material presented at these small discussion sections.
Web Site. A class web site http://www.cs.utexas.edu/users/scottm/cs307 is maintained. Course materials and some announcements will be available here. Visit the web site and newsgroup (see below) frequently at least every time you visit the lab or work on an assignment to check for announcements, especially about assignments, between lectures. Assignments, review materials, and other materials will also be posted there. If you need anything, chances are it's on the website.
Class Newsgroup. Their is a class newsgroup, utexas.class.cs307-scott. If you do not have an email account get one as soon as possible. There is information on the class web page explaining how to obtain an email account. Note, to access the utexas newsgroups via an off campus internet connection you will have to follow the instructions at www.utexas.edu/cc/usenet/extnews/ The name of the news server is newshost.cc.utexas.edu If you are using Outlook Express on campus you add a new news account with this news server address. (Under Tools -> Accounts -> add account) You can also see www.utexas.edu/cc/usenet/index.html for more information about reading from newsgroups.
Painter Hall Microcomputer Lab. PCs are available for assignments in the CS Department microcomputer lab located in Painter Hall, room 3.06. Students must see the user assistant (UA) in Painter 3.12 to obtain an account for the microlab. These accounts are only for the CS microlab, and not any other labs or networks at UT. The TAs, USLs, and proctors will hold office hours in the lab to assist students with questions on programming assignments. Students may also use other computers available to them to do assignments.
Software. There is no official course software. You have many, many options for Java if you want to work at home. You will need a Java SDK. You probably also want an IDE that makes programming easier. One simple IDE is BlueJ, a non commercial Java IDE developed by educators for educational purposes. BlueJ requires the Java SDK version 1.3 or later be installed first. If you wish to work outside the lab, you will have to download and install the Java Software Development Kit from Sun Microsystems web site along with BlueJ. The class web page has instructions on how to do this.
Other options include JBuilder and JCreator, both free and available via the web. See the class software page for links to these products.
Please note, working at home is optional and aside from the information on the web page you are on your own to download, install, and get the Java and BlueJ software up and running. You will also be required to turn in most of your assignments electronically via the Turnin program, a piece of software that allows you to transfer files from other computers to your account on the microlab server. The instructor and TAs will not be able to help you with installation of software on your personal computer although you may be able to help each other via the class newsgroup. Be warned, if you choose this route you are mostly on your own. The time to try and download and install the software at home is NOT four hours before the first assignment is due.
Schedule. A schedule of lecture topics, reading assignments, and assignment distribution and due dates is given below. The same information will be posted on the web page and any changes to the schedule will be announced in class, on the newsgroup and made on that page. The schedule page will also contain links to slides from the lectures, assignments, and online readings. I expect you to complete the readings before class so we can have a discussion on the topic instead of a simple lecture. Assignments are always due by 7:59:59 p.m. on Fridays.
| Monday | Wednesday | Friday |
| January 14
First Day of Class Lecture 1: The management of complexity slides in PDF or PowerPoint format Reading: Assignment 1 Out |
January 16
Lecture 2: Software Tools, Java Mechanics slides in PDF or PowerPoint format Reading: Syllabus, Chapter 1, Weiss |
January 18 Lecture 3: Java Mechanics slides in PDF or PowerPoint format Reading: Chapter 1, Weiss |
| January 21
Martin Luther King, Jr. Day, No Class |
January 23
Lecture 4: Java Mechanics Reading: Sections 2.1 - 2.3, Weiss JavaBasics.java, JavaBasicsMain.java, IntObj.java, IntObj1.java Tomorrow, Thursday January 24: Deadline for seeing a CS Academic Advisor to resolve problems concerning prerequisites or repeated enrollment. |
January 25
Lecture 5: Java Mechanics Reading: Chapter 2, Sections 2.4 - 2.6, Weiss Discussion section handout for the week of January 28.
|
| January 28
Lecture 6: Java Mechanics Reading: Chapter 2, Sections 2.4 - 2.6, Weiss Discussion sections with graduate TAs and USLs start this week!
|
January 30
Lecture 7: Pointers and Objects 12th class day. Last day to drop for possible refund. Last day to add course. Official enrollment taken. |
February 1
Lecture 8, Arrays in Java and I/O Assignment 1 due Discussion section handout for the week of February 4. |
| February 4
Lecture 9: Classes and Objects. The adding machine and lunar lander examples. Reading: Chapter 3, Weiss slides in PDF or PowerPoint formats
|
February 6
Lecture 10: Classes and Objects Reading: Chapter 3, Weiss slides in PDF or PowerPoint formats Sample Midterm(Word
and PDF) |
February 8
Lecture 11: Classes and Objects Discussion section handout for the week of February 11. Assignment 2 due Assignment 3 out |
| February 11
Lecture 12: Assignment 2 algorithm review. 20th class day. Last day to drop a class with an automatic Q |
February 13
Lecture 13: Object Oriented Design of Large Programs Reading: Chapter 4, Weiss |
February 15
Lecture 14: Java Interfaces (Introduction to Inheritance and Polymorphism) Reading: Chapter 4, Weiss Discussion section handout for the week of February 18. Assignment 3 due Assignment 4 out |
| February 18
Lecture 15: Java Interfaces (Introduction to Inheritance and Polymorphism) Reading: Chapter 4, Weiss |
February 20
Optional class. I will be available in the lecture hall all period for questions. Think of lecture as extra office hours. Midterm 1, 7 - 9 p.m. |
February 22
Lecture 16: Algorithm Analysis (Introduction to basics here. talked about during other topics as appropriate.) Reading: Chapter 5, Weiss. The Sieve of Eratosthenes online at www.cs.unc.edu slides in PowerPoint Assignment 4 due |
| February 25
Lecture 17: Matrices Recursion Basics Reading: Sections 7.1 - 7.3, Weiss |
February 27
Lecture 18: Recursion Basics Reading: Sections 7.1 - 7.3, Weiss |
March 1
Lecture 19: Recursion, Procedural Recursion slides in PDF or PowerPoint
formats Reading: Sections 7.4 - 7.6, Weiss Discussion section handout for the week of March 4. Assignment 5 due |
| March 4
Lecture 20: Recursion and Backtracking slides in PDF or PowerPoint formats Reading: Section 7.7, Weiss |
March 6
Lecture 21: Recursion and Games Reading: Chapter 10, Weiss slides in PDF or PowerPoint formats Knap.java with code for the Knapsack problem
|
March 8
Lecture 22: Sorting slides in PDF or PowerPoint formats Reading: Chapter 8, Weiss Assignment 6 due |
| March 11
Spring Break |
March 13
Spring Break
|
March 15
Spring Break |
| March 18 Lecture 23: Sorting and Searching. Reading: Chapter 8 Weiss
|
March 20
Lecture 24: Abstract Data Types Reading: Chapter 6, Weiss slides in PDF or PowerPoint formats Sample Midterm 2(Word
and PDF) |
March 22
Lecture 25: Abstract Data Types Reading: Chapter 6, Weiss slides in PDF or PowerPoint formats Assignment 8 out |
| March 25
Lecture 26: Recursive Data Structures, Linked Lists Introduction Reading: Sections 17.1, 17.2, Weiss slides in PDF or PowerPoint formats Assignment 7 due Last day to drop a class (with a possible F) or withdraw
without nonacademic reasons. |
March 27
Lecture 27: Linked Lists Reading: Sections 17.3, 17.4 Weiss |
March 29
Lecture 28: Class cancelled due to UT holiday Reading: Weiss Section 17.5 Assignment 8 due (on Saturday March 30, by 6 pm) Assignment 9 out |
| April 1
Lecture 29: Linked Lists |
April 3
Lecture 30: Stacks slides in PDF or PowerPoint formats Reading: Chapter 11, Weiss |
April 5
Lecture 31: Applications of Stacks (Compliers) Reading: Chapter 11, Weiss Assignment 9 due No Discussion Section Handout this week |
| April 8
Lecture 32: Queues Reading: Chapter 13, Weiss
|
April 10
Optional class. I will be available in the lecture hall all period for questions. Think of lecture as extra office hours. Midterm 2, 7 - 9 p.m.
|
April 12
Lecture 33: Applications of Queues (Simulations) slides in PDF or PowerPoint formats Reading: Chapter 13, Weiss Assignment 10 due |
| April 15 Lecture 34: Trees. Reading: TBA slides in PPT |
April 17
Lecture 35: Trees, Binary Trees slides in PPT Reading: Sections 18.1, 18.2
|
April 19
Lecture 36: Guest Lecture. Proferssor J Moore, chairman of the CS department. Don't miss this one! It is great! Assignment 11 due |
| April 22 Lecture 37: Binary Trees slides in PDF or PowerPoint formats Reading: Section 18.3, 18.4
|
April 24
Lecture 38: Red Black Trees slides in PDF or PowerPoint formats Reading: Section 19.1, 19.2, 19.3 |
April 26
Lecture 39: Application of Binary Trees. Compression and Huffman Coding Reading: Section 12.1 Assignment 12 due |
| April 29
Lecture 40: Application of Binary Trees, Huffman Coding (Priority Queue) Reading: Section 12.1 |
May 1
Lecture 41: Working with Files slides in PDF or PowerPoint formats Reading: None |
May 3
Lecture 42: Graphs slides in PDF or PowerPoint formats Practice final in Word or pdf |
| May 6
Dead Day |
May 8
Final Exam 7 - 10 pm, Welch 2.224 |
May 10
Finals |
| May 13
Finals |
May 15 | May 17 |
Exams and Grading. Your grade will be maintained by a TA or USL, normally the person who teaches your small discussion group. If you have questions or concerns about your grade contact your TA at lab hours or via email. Please do not contact Mike initially with grade questions or concerns else you will get a pithy reply reminding you to contact your TA.
Course grades will be based on the following components.
| Component | Date | Weight |
|---|---|---|
| Midterm 1 | Wednesday, February 20, 7 - 9 p.m. | 20% |
| Midterm 2 | Wednesday, April 3, 7 - 9 p.m. | 25% |
| Final Exam | Uniform date, to be determined, but could be as late as Tuesday, May 14 | 35% |
|
Assignments and Quizzes | (Stated in each assignment) Normally on Friday evenings by 8. Twelve assignments planned. Lowest assignment score dropped. Unannounced quizzes will be given during discussion sections and lecture. | 20% |
Exam Topics: Exams will cover material from lecture, discussion sections, assignments, and the assigned readings. Exams will be cumulative although they will be more heavily weighted towards material not yet tested. Computer Science and programming is a very cumulative discipline (like Mathematics), so it is important to have mastered earlier topics in order to understand later topics.
Final Grades: Final grades will be assigned according to the following criteria:
| Final Average | Letter Grade |
| 90 - 100 | A |
| 80 - < 90 | B |
| 70 - < 80 | C |
| 60 - < 70 | D |
| 0 - < 60 | F |
Final Averages will be calculated to 2 decimal places. I think the grading system at UT really stinks. I want more options such as + and - modifiers. To only have 5 grades to assign is almost criminal. The difference between a 79 student and an 80 student is not that much, but the grading system makes it seem there is a huge difference between the two. Alas, the line has to be drawn somewhere and no special allowances, other than a regrade of the final to ensure correctness, will be made for students whose final average falls near, but below the cutoff. No curve for the final average will be used although the midterms and final may be curved if the instructor believes it is warranted. I expect to have the following break downs on tests. 18% As, 27% Bs, 35% Cs, 15% Ds, and 5% Fs. I will only curve grades up. If everyone gets an A on the test, no curve will be imposed to lower scores. If everyone passes the test on raw score I will not curve anyone down to an F.
Nonacademic explanations for poor class performance have no bearing on the assignment of grades.
Midterm exams. Two midterm exams will be held in the evening on the days shown above. These tests will be held from 7:00 p.m. to 9:00 p.m. in the evening. Exams will cover all material up to and including material presented on the Monday just before the exam. Attendance at exams is required and missing an exam will result in a grade of 0. However, students who present adequate proof of a conflict with the exam time to the instructor two weeks before the exam may receive permission to take the exam at an announced alternate date and time, probably the next morning. You must contact the instructor via email and provide the required information as listed on the class web page. Failure to meet this administrative deadline will result in a 10 point penalty on the exam.
With adequate proof of exceptional conditions, such as illness, the instructor may excuse a student from taking an exam. In this case, there will be no make-up exam; the missed exam grade will be replaced by the weighted average of the remaining midterm exam grade and the final exam grade.
Final Exam. The final exam will be cumulative and must be taken by all students. It will be held on a uniform exam date, which will be established later, and not on the date announced in the schedule of classes. Students who present adequate proof of an exam conflict, or three or more final exams on the exam day, or other exceptional circumstances, to the instructor at least one week before the last day of classes may receive permission to take the final exam at the alternate date and time. Failure to meet this administrative deadline will result in a 10 point penalty on the exam.
If you miss an exam because of an emergency or due to some other circumstance show up and take the alternate exam, but realize the 10 point penalty will be enforced except for verified emergencies.
Assignments. Assignments will be given every week. Each assignment will have a clearly stated due date and time. Assignments start out easy, but get harder very quickly. Most assignments will require programming and may require substantial effort over several days with possible help from the TAs, USLs, and proctors. Budget sufficient time to complete assignments before the deadline. Model solutions to assignments will be handed out in class after the due date. The lowest assignment grade will be dropped. This is to cover and allow for emergencies and unforeseen problems. Because one assignment is dropped, assignments will not be excused for any reason.
Late assignments. No late assignments shall be accepted. Missing an assignment will not be excused for any reason. The dropping of the lowest assignment grade is designed to cover all reasons for missing an assignment.
Turning in assignments. All assignments must be submitted using the turnin program. See the class web site for instructions on finding and using the turnin program. The turnin program is installed on machines in the Microcomputer Lab. It may also be downloaded and run on any machine running Windows 95, 98, or NT after an internet connection is made. However, we do not guarantee that the turnin program will work outside the Microcomputer Lab. If it does not work on your machine or you are having a problem with your internet connection, you must use the turnin program installed in the lab. If you have trouble using the turnin program in the Microcomputer Lab you must follow the procedures and instructions below to turn in the assignment.
If you cannot get the turnin program to work for you in the Microcomputer Lab, then have a TA or proctor in the lab email the assignment for you to your TA, with a copy to you or another TA or proctor for proof of mailing. If we determine that turnin works for you in the Microcomputer Lab, we will notify you that further submissions by email will not be accepted. Assignments emailed by students themselves will not be accepted for grading.
Grading of Assignments. Assignments submitted via the turnin program are placed in your directory on the Microcomputer Lab server. Graded assignments will be returned by placing a copy of the graded assignment in the same directory. The copy will contain comments and your grade and will have a file name similar to the name of the file turned in. These files can be viewed with any text editor such as Notepad. If you have an USL instead of a graduate student TA you will arrange for a time with the USL to go over the assignment together to get feedback and discuss any problems you had.
Assignments will be graded on two major criteria, functionality and style. A program that works is not necessarily a perfect program. I want you to write programs that are well thought out and put together well. Each of these will count for half of the grade on your program. More on the two criteria:
Each area of the program grade is assigned a bucket grade. There are 6 possible grades for functionality and 4 for style. The bucket grading system is used to try and eliminate the quibbling over a few points here and there and let us concentrate on giving positive feedback to help you learn how to program better.
Functionality grading scale:
Style Scale:
Once you have submitted an assignment for a grade, do not delete the file or the returned file from the server. These files are part of your record for the course. We expect them to be available to us indefinitely.
Header and file name. All assignments must be submitted with the proper header, containing the name (as registered), unique number, also known as the unique section number (last two digits of the unique number), and the assignment number at the top of the assignment. Your student ID number or social security number is not required. In addition, because assignments are submitted as files by the Turnin program, they must have the correct file name which will be specified in the assignment handout . You must also ensure you turn in the assignment to the correct section folder, that is the section you are currently registered in. Look at the turnin page on the class web page for information on how to make sure you are turning the assignment into the right section. Assignments which omit or are incorrect in any one or more of these requirements will have automatically receive a ü - for their style grade.
Most assignments will be programs. For programs, the source code (.java file(s)) must be turned in; no credit will be given for turning in a compiled, executable, or other file. The source code must be a simple text file (with the .java extension) that can be compiled and run; word processing files will not be accepted. If you are using CodeWarrior do not submit the .mcp file. Always submit the .java file or files.
Quizzes Short 20 point unannounced quizzes will be given periodically throughout the term in discussion sections and lecture. The lowest of these quizzes will be dropped.
Grade Disputes and Corrections: If you are dissatisfied with a grade you receive on an assignment or test, you must submit your complaint briefly in writing or by email, along with supporting evidence or arguments, to the teaching assistant or USL for your small section within two weeks of the date the teaching staff first attempted to return the assignment to you. For assignments returned via your turnin directory, this will be the date on the returned graded file. Complaints about grades received after this date will be considered only if their are extraordinary circumstances for missing the deadline.
Collaboration. You are encouraged to study for tests together, to discuss methods for solving the assignments, to help each other in using the software, and to discuss methods for debugging code. However, the code that you submit for a grade shall be your own work; you may not share code or copy code from another student or any other source. If you turn in someone else's code you will be subject to the University Rules and Penalties for Cheating. My punishment for cheating on an exam or assignment is the assignment of an F as the course grade.
Extra Credit: There are no opportunities for extra credit in this class.
Other Policies
Email. Students are encouraged to discuss any matter with the teaching staff in person, typically after class or during lab or office hours. However when that is inconvenient, communications between students and the teaching staff are most conveniently handled by email. In email, include your name, your section number, and the number of the assignment or exam in question. Email accounts are available free to students from the university and commercial sources; see the page on email accounts.
Adding and Dropping the Course:
The academic calendar for each semester is provided in the front of the current Course Schedule. The following information is generally true during each new long semester. Summer courses are subject to a somewhat compressed version of this procedure (Note class days, refer to University class days, not course class days):
Adding the Course
Dropping the Course
Translation: Adding the course after the 4th day is hard, but not
impossible. Adding the course after the 12th day is almost impossible. Dropping
the course with a Q up to the mid semester deadline is fairly painless and I
will always, always, always give a Q if a student requests to drop the course.
After the mid semester deadline it becomes almost but not quite impossible to
drop the course. I always, always, always, recommend a grade of Q for these post
mid semester drops due to substantiated non academic reasons. If you drop after
the 12th class day with a Q you are still considered to have taken the course
once under the CS department's limited
course repetition rules.
| Thursday, January 17 | 4th class day. Last day to add a class using TEX or ROSE. |
| Thursday, January 24th | 8th class day. Deadline (4:00pm) for seeing a CS Academic Advisor to resolve problems concerning prerequisites or repeated enrollment. |
| Wednesday, January 30th | 12th class day. Last day to add a class except for unusual
circumstances. Last day to drop a class for possible refund. Last day a course can be dropped without counting as an enrollment under the CS department's limited-repetition rule. |
| Monday, February 11 | 20th class day. Last day to drop a class with an automatic Q |
| Monday, March 25 | Last day to drop a class (with a possible F) or withdraw
without nonacademic reasons. Last day to change a class to Pass/Fail. |
In addition are the following Computer Sciences Department rules for adding Computer Sciences classes:
On or before the 4th class day
If a CS class is full, or you want to switch sections and the section you want to get into is closed (i.e., full), please note the following:
- The Department of Computer Sciences does not override seat counts. If a class is full, it's full.
- The only recourse is to keep trying on TEX, in case someone drops the class.
- You can monitor class status through UTACCESS and ROSE.
The 5th through 12th class days (late adds)
- Go to the Undergraduate Advising Office (TAY 2.126) to speak to an advisor and obtain a late-add slip. You must meet the prerequisites of the class you wish to add. In certain circumstances, advisors may not allow a student to obtain a late add slip (for example, late registration, overloads, scholastic probation, etc.).
- Take the late-add slip to the instructor of the class. If the instructor decides it is reasonable for you to add the class, he/she signs the slip. This decision is solely up to the instructor of the class and will not be overruled by the Undergraduate Advising Office.
- Return to TAY 2.126 with the signed slip. At that time, an advisor will check for seat availability in the class. Please note: "seat availability" refers to the closing limit for the class, not the number of physical seats in the classroom.
- If the class is full, you must return to TAY 2.126 to see an advisor with the signed late-add slip when seats become available. You can monitor seat availability through UTACCESS and ROSE.
The *only* way to add a computer science class during this period is to follow the procedure described above. The instructor cannot add students to his/her class over the seat limit.
The deadline for dropping the course without possible academic penalty is Monday, February 11th. The last day an undergraduate student may, with the dean's approval, withdraw from the University or drop a course except for urgent and substantiated, nonacademic reasons is Monday, March 25th. After the end of the fourth week of class and until this date, a student wishing to drop the course ("Q drop") must get the forms from the Dean of his or her college and ask the instructor to complete the drop form that assigns a Q or an F. After the 24th of October drops are allowed only for substantiated, nonacademic reasons and you must see inquire within your college the procedure to do this. I always honor student requests for a Q up to the deadline on the 25th of March. I do not assign X's except in cases that strictly meet the guidelines of the Academic policies and procedures section of the general information guide:
Approved uses of the symbol X. An undergraduate student may, with the approval of the instructor, be assigned the symbol X in a course for one of the following reasons:
Improper uses of the symbol X. A student must not be assigned a temporary delay of the final course grade symbol to permit (1) time to prepare coursework in addition to that assigned the entire class, (2) time to repeat the entire course, or (3) opportunity to raise a grade for any reason other than the approved reasons cited above. The temporary delay of final course grade symbol is not issued for student or faculty convenience; it may be issued for the reasons cited above only in the case of compelling, nonacademic circumstances beyond the student's control.
Religious Holy Days: A student who is absent from an examination or cannot meet an assignment deadline due to the observance of a religious holy day may take the examination on an alternate day, submit the assignment up to 24 hours late without penalty, or be excused from the examination or assignment, if proper notice of the planned absence has been given. Notice must be given at least fourteen days prior to the classes scheduled on dates the student will be absent. For religious holy days that fall within the first two weeks of the semester, notice should be given on the first day of the semester. It must be personally delivered to the instructor and signed and dated by the instructor, or sent certified mail, return receipt requested. Email notification will be accepted if received, but a student submitting such notification must receive email confirmation from the instructor. A student who fails to complete missed work within the time allowed will be subject to the normal academic penalties.
Scholastic Dishonesty: Students who violate University rules on scholastic dishonesty in assignments or exams are subject to disciplinary penalties, including the possibility of a lowered or 0 grade on an assignment or exam, failure in the course, and/or dismissal from the University. Representing the work of others as your own will be considered academic dishonesty and will not be tolerated. Such dishonesty harms the individual, all students, and the integrity of the University, and policies on scholastic dishonesty will be strictly enforced. My punishment for cheating on an exam or assignment is the assignment of an F as the course grade.
Disability Related Needs: Please notify me of any modification/adaptation you may require to accommodate a disability-related need. You will be requested to provide documentation to the Dean of Students' Office in order that the most appropriate accommodations can be determined. Specialized services are available on campus through Services for Students with Disabilities, 471-6259 or 471-4641 TTY.