CS313E: Fall, 2009
Elements of Software Design

Unique number: 54640
Class time: MWF 9-10am; Location: WAG 201
Instructor: Dr. Bill Young
Office: TAY 5.140 Office Hours: MWF 10-11 or by appt.
Office Phone: 471-9782; Email: byoung@cs.utexas.edu
TA: Patrick MacAlpine; Email: patmac@cs.utexas.edu;
TA Office Hours: PAI 5.38 Thurs. & Friday 4-5:30pm
Proctor: Loren Micheloni; Email: lorenm@mail.utexas.edu;
Proctor's Office Hours: PAI 5.38, MW noon-3pm
This website: www.cs.utexas.edu/users/byoung/cs313e/syllabus313e.html




Important Class Announcements:

Breaking news important to the class will be posted here. Consult this spot often.

There will be no class on Wednesday, November 25.

Check out Patrick's (your TA's) webpage at Patrick's page.

A very useful resource on the Java API is here: Java API



Course Description:

CS313E is the second course in the Elements of Software series. It is assumed that you know some high level programming language (C / Java / Python) at the level taught in CS303E. The emphasis of this course will be on software development using object-oriented methodology. You will learn how to analyze and design software and learn how to create reusable software components and to compose programs from already available components. You also will learn some basic data structures and algorithms and how to match the data structures and algorithms to problems. You will test and evaluate programs for their functionality and their performance.

We will be following the text quite closely. Supplemental notes on data structures and algorithms may be made available on the web. Unlike the traditional lecture format, our classes will be a venue for solving problems, writing programs, and exchanging ideas. Attendance to the lectures is mandatory.

Prerequisites:

You are expected to have experience programming in some high level programming language. If you are uncertain about your preparation for this course, please consult with Dr. Young.

Required text:

Introduction to Java Programming (Comprehensive Version) by Y. Daniel Liang, current edition, Prentice Hall. ISBN: 0136012671.

Getting an Account:

You can request a computer account here: Request an Account

Here's information about the Elements Lab: Elements Lab

Schedule

The following is a proposed schedule of topics for the semester (borrowed from Dr. Mitra's Spring 2009 schedule.). It is a fairly ambitious schedule and we may not be able to keep to it. You can see that the readings are extensive, so allocate your time appropriately.

I have reordered our schedule to make the Java Collections Framework come earlier than in the previous schedule. There may be other reorderings.

Unit Topics Chapters
1 Computer Organization, Arithmetic, Logic, and Intro to Java Ch. 1
2 Data Types, Operations, Control Statements, Methods, Arrays Ch. 2 - 6
3 Classes, Strings, Inheritance, Polymorphism, Interfaces Ch. 7 - 11
4 Exceptions and I/O Ch. 8 and 18
8 Java Collections Framework Ch. 22
9 Recursion, Efficiency of Algorithms Ch. 20, 23
7 Generics Ch. 21
10 Data Structures and Algorithms Ch. 24
11 Data Structures and Algorithms Ch. 24 - 25
13 Threads Ch. 29
12 Regular Expressions Ch. 8 & Tutorial
5 GUI Programming Ch. 13
6 Advanced GUI Programming and Event Handling Ch. 13 - 16, 33 - 35
14 Networking and RMI Ch. 30
15 Problem Solving in Java (OOAD) Class Notes

Class Notes:

Handouts of all class slides will be made available over the course of the semester via links below. Slides are available in PostScript (PS) or in PDF format. The PostScript files can be viewed with Ghostview or printed on any postscript-compatible printer. The PDF files can be viewed with Acroread.

Slide set 0: The Elements Program PS-4up  PDF-4up  PDF

Slide set 1: Introduction PS-4up  PDF-4up  PDF

Slide set 2: Basic Java PS-4up  PDF-4up  PDF

Slide set 3: Classes PS-4up  PDF-4up  PDF

Slide set 4: Exceptions PS-4up  PDF-4up  PDF

Slide set 5: Abstract Classes and Interfaces PS-4up  PDF-4up  PDF

Slide set 6: Java Collections Framework PS-4up  PDF-4up  PDF

Slide set 7: Recursion PS-4up  PDF-4up  PDF

Slide set 8: Data Structures PS-4up  PDF-4up  PDF

Code from Binary Search Trees discussed in class: BST code

Slide set 9: Multithreading PS-4up  PDF-4up  PDF

Assignments:

Programming is not a spectator sport. The only way to learn programming is to program. Doing the programming assignments is crucial to performing well in class. Assignments will be given almost every week. Each assignment will have a clearly stated due date and time. Assignments start out being easy but get harder over the semester. If you are having considerable difficulty with the first few assignments, please see the instructor immediately.

Assignment1: Due 9/8/09

Assignment2: Due 9/17/09

Assignment3: Due 9/28/09

Assignment4: Due 10/7/09

Assignment5: Due 10/28/09

Assignment6: Due 11/6/09

Assignment7: Due 11/13/09

Assignment8: Due 11/23/09

Programming assignments can be completed in the CS elements Lab (PAI 5.38) or you may choose to use your own computer to work on these assignments. If you work on your home computer, you should download and install the Java Software Development Kit from Sun Microsystems. You will also want an IDE like Eclipse.

The assignments will require a substantial time commitment over several days (an average of 8 hours per week should be expected). Be sure to budget sufficient time to complete assignments before the deadline.

Turn in your assignments on time. This permits grading to start promptly after the submission deadline so that assignments may be returned promptly. If you do not finish an assignment by the deadline you have a maximum of two days to turn your assignment in.

Programs will be graded on a 10 point scale with 1 point deducted for each day the program is late. The TA may turn off the turnin program after the due date, but will accept late assignments by email. Please coordinate with the TA regarding late submissions, or if you desire to re-submit an assignment following the due date. The date of a submission is purely a function of the timestamp. That is, the day ends at midnight and anything up to midnight is assumed to have been submitted on that day.

Specific grading criteria vary on each assignment. However, in general, programs that do not compile correctly on the Elements Lab configuration will receive no more than 80% of the possible points. Other point deductions are given for such things as: incorrect results, missing features, bad solution logic, no documentation, etc. No matter what configuration of software that you have on your home computer, the assignment that is turned in must run successfully on the Elements Lab configuration in order to be graded. Here is some general grading criteria for programming assignments. However, there will not be any extra credit for assignments in this class.

In general, try to follow the standard Java coding conventions illustrated on the slides, in your book, or which can be found here: Coding Conventions. You can either view the HTML page or download the PDF or Postscript and print it out.

All assignments must be submitted using the web based turnin program. But whether you can use the turnin program or not, you must make a backup copy of the java source code (i.e. the .java file) on your removable secondary storage device (e.g. a floppy or ZIP disk). This will be necessary in cases where your program gets lost, is corrupted, or if there is some dispute over what was turned in when.

If you cannot get the turnin program to work in the Elements 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. For assigned programs, the source code (.java file) must be turned in; no credit will be given for turning in a compiled, executable, or other file. The source code must be a text file that can be compiled and run. Word processing files will not be accepted. If you are using Eclipse always submit the .java file or files.

If you want help debugging your program, upload your program to UT Webspace or bring your program (on a portable storage device like USB Flash Drive) during office hours. Do NOT just e-mail the program for debugging.

Assignment Identification: All assignments must be submitted with the proper header, containing your name (as registered) and the assignment number at the top of the assignment. The format for the header will be specified in the assignment. That specification will over ride any other header specification (e.g. the header description in the documentation for the turnin program).

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. Lost assignments are typically caused by turning in an incorrect file name and/or turning a file into the wrong section folder. Assignments, which omit the header or are incorrect in any one or more of these requirements, will have the grade reduced by 5% of the maximum grade.

Graded Assignments: Assignments submitted via the turnin program are placed in your directory on the turnin 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. Once you have submitted an assignment for a grade, do not delete the submitted file or the returned file from the server. These files are part of your record for the course and must be saved by you in case of a lost file or grade dispute. You have one week from the day the assignment grades were posted to dispute your grade. After this time we will not make any changes to your grade.

Quizzes:

Short in-class quizzes may be given at any time. These will cover material covered in previous classes. The goal of quizzes is to test your understanding of the material and to give you an idea of the types of questions that will appear on exams. There will be no makeups for quizzes you miss, but any single quiz is only a small proportion of your final grade. So, if you miss a quiz don't sweat it; but make sure you get a copy and review it on your own.

Tests:

There will be two major tests during the semester: a midterm and a final. Exams are closed-book, closed-notes tests, except that you may bring a single handwritten 8 1/2 by 11 inch sheet of notes (both sides).

The CS313E midterm is scheduled for Wednesday, October 14 from 7-10pm, in GSB 2.124. You can bring a single handwritten 8 1/2 by 11 inch sheet of notes (both sides). A study guide for the test is here: Midterm study guide

The final exam will be held on Saturday, December 12 from 2-5pm in UTC 3.122. It's a very bad idea to make travel plans that conflict with the exam time. If you have a verifiable conflict, I will attempt to arrange for you to take an early exam. The final is comprehensive. You can bring two handwritten 8 1/2 by 11 inch sheet of notes (both sides). A study guide for the test will be posted shortly.

No laptops:

Students are asked not to have their laptops or other electronic devices open during class.

Grading policies:

Class attendance is mandatory and will be checked on a majority of class days. Excessive unexcused absences will result in a reduced grade. If you don't plan to come to class regularly, please don't register for this class. Signing in for another student not present will be considered cheating by both students.

Grades are averaged using the weighting below:

Attendance and Participation10%
Quizzes10%
Assignments 40%
Midterm Exam 20%
Final Exam 20%

Course grades are assigned on the scale: A = 90-100; B = 80-90; etc., except that I reserve the right to be more generous than this indicates. That is, I may enlarge the range for any grades.

Scholastic Dishonesty:

Academic dishonesty will not be tolerated. See http://www.cs.utexas.edu/academics/conduct for an excellent summary of expectations of a student in a CS class.

While you are free to discuss the course material with your classmates and are encouraged to form study groups for the exams, collaboration on homework or programming assignments is not permitted.

Helping a friend understand the intent of a homework or programming assignment specification is permitted. Students who work together too closely (e.g. design their solution together) should be aware that this is a form of cheating called "collusion" and is subject to academic penalties. Penalties for academic misconduct include a failing grade in this course, and may involve additional penalties.

Acts that exceed the bounds defined by the approved collaboration practices will be considered cheating. Such acts include:

We urge everyone in the class to take appropriate measures for protecting one's work. You should protect your files, homework solution sheets, etc. as deemed reasonable.

Your Responsibilities in This Class