CS313E: Fall, 2011
Unique number: 52295
Elements of Software Design
Class time: MWF 9-10am; Location: RLM 5.104
Instructor: Dr. Bill Young
Office: MAIN 2012 Office Hours: MWF 11-noon and by appointment
Office Phone: 471-9782; Email: byoung@cs.utexas.edu
TA: Kai-Yang Chiang Email: kychiang@cs.utexas.edu
TA Office Hours: PAI 5.33 desk 4, Tues. 11am-noon and Wed. 3:30-4:30pm
Proctor: Brad Burlage Email: bburlage@cs.utexas.edu
Proctor's Office Hours: Painter Elements Lab, MWF noon-3pm and TTh 2-5pm
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.I am having surgery on my back on Tuesday (12/13) so will be out of commission for a week or so. I know that's not optimal. I'll be submitting your grades, but can always adjust them later if we find something is not right. Take a look at your grade and send a message if you find something amiss, but please don't expect feedback from me for a while. Sorry about this, but it's really bad luck that this back problem happened just at the very end of the semester.
Here are the answers for all of the quizzes: Quiz 1: Quiz1 Answers, Quiz 2: Quiz2 Answers, Quiz3 version 1 (which was not graded): Quiz3 Answers; the answers to Quiz3 version 2: Quiz3-v2 Answers; the answers to Quiz4: Quiz4 Answers; and the answers to Quiz5: Quiz5 Answers.
Some Interesting Links:
The Beloit Mindset ListFor some tips on porting code from Python 2 to Python 3, use one of the following websites:
Python 2 to 3
IBM cribsheet
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 and data structures 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 have readings from the text. Supplemental notes on various topics 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 and participation are 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. Some helpful links on Python are included at the bottom of this page.
Required text:
Kenneth Lambert, Fundamentals of Python: First Programs, Cengage, 2010.
Getting an Account:
You can request a computer account here: Request an Account
Finding the Proctor:
Brad Burlage is the proctor for the course. He'll be available in the Painter Elements Lab on MWF noon-3pm and TTh 2-5pm. His contact info is above.
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 Python PS-4up PDF-4up PDF
Slide set 3: Turtle Graphics PS-4up PDF-4up PDF
Slide set 4: Classes PS-4up PDF-4up PDF
Slide set 5: Abstract Data Types PS-4up PDF-4up PDF
Slide set 6: Another ADT: Queues PS-4up PDF-4up PDF
Slide set 7: Lists PS-4up PDF-4up PDF
Slide set 8: Recursion PS-4up PDF-4up PDF
Slide set 9: Efficiency of Algorithms PS-4up PDF-4up PDF
Slide set 10: Trees PS-4up PDF-4up PDF
Slide set 11: Simple Language Interpreter 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.All assignments will be in Python. Please make sure that you use Python 3 (not Python 2). The differences aren't great, but they are enough to make it hard for the TA if you're not all using the same version of the language, and our textbook is oriented to Python 3.
Also, some of the assignments will build upon one another, so if you get behind, you'll be seriously disadvantaged. Make sure you keep up with the programming assignments.
Links to assignments will appear here.
Read Chapters 1 and 2 in your textbook: due 9/2/11
Simple String Processing: Assignment 0: Due 9/7/11
Here's the solution to Assignment 0 discussed in class: hw0.py
Turtle Graphics: Assignment 1: Due 9/14/11
This assignment was so general that there is no specific solution that I can post.
Poker Hands: Assignment 2: Due 9/21/11
Here's my solution to assignment2. Solution 2
Building a Calculator: Assignment 3: Due 9/30/11
Here's my solution to assignment3. Solution 3
Widget Ordering System: Assignment 4: Due 10/10/10
Here's my solution to assignment4. Solution 4
Radix Sort: Assignment 5: Due 10/24/10
Here's my solution to assignment5. Solution 5
Courses Database: Assignment 6: Due 11/2/10
Here's my solution to assignment6: Solution 6
Students Database: Assignment 7: Due 11/16/10
Trees and Languages: Assignment 8: Due 11/30/10
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. Almost all modern computers have Python and related tools installed. If you find that yours does not, let us know.
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. Late homeworks are accepted up to two days after the due date with a maximum possible score of 90% for one day late and 80% for two days late.
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.
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 Python source code (i.e. the .py 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 the proctor for proof of mailing. For assigned programs, the source code (.py 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 .py 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 midterm will be held on Friday, October 14 and the final will be held on Saturday, December 10 from 7--10pm. The final exam will be held on Saturday, December 10 from 7-10pm in PAI 2.48. Please don't schedule anything to conflict with these tests. A study guide is here: Study Guide.
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:
Component Percent Attendance and Participation 10% Quizzes 10% Assignments 40% Midterm Exam 20% Final Exam 20%
As of this semester, instructors are required to grade on the new +/- grading system. Course grades are assigned according to the following scale:
Grade Range A 92-100 A- 90-91 B+ 88-89 B 82-87 B- 80-81 C+ 78-79 C 72-77 C- 70-71 D+ 68-69 D 62-67 D- 60-61 F 0-59
However, I reserve the right to be more generous than this indicates. That is, I may enlarge the range for any grades to the benefit of the class.
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 generally is not permitted. We may have some assignments on which you are allowed to work with a partner. This will be clearly stated in the assignment.
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.
- Copying solutions, code, or programs from someone else or giving someone else your solutions, code, or programs
- Participation in a discussion group that develops a solution that everyone copies
Your Responsibilities in This Class
- Your performance in this class will be determined by you! It will require a strong dedication to learning the material and may require a substantial time commitment to complete the programming assignments.
- You are expected to show up on time for class and stay for the whole lecture.
- You are required to have your cell phones off at all times during the lecture. You may not make or receive calls on your cell phone in the lecture hall.
- You may NOT use your laptop in class.
- You are responsible for all material posted to the web site and sent as email. Ignorance of such material is no excuse.
- You are responsible for all material presented in the lectures. Note that lectures will include some material that is not available elsewhere.
- You are responsible for turning in your own work on all assignments. Unauthorized collusion is not allowed and constitutes a violation of the university's policies on academic integrity. See above guidelines for more information on what is or is not allowed.
- You are responsible for protecting your work from being copied by others.
- Your conduct in class should be conducive towards a positive learning environment for your class mates as well as your self.
Some Helpful Links
Python Links
Python Tutorials and Books
- Writing Your First Python Program
- Official Python Tutorial
- How to Think like a Computer Scientist
- Dive Into Python
- Comprehensive Python Resource
Miscellaneous Information on Python