Department of Computer Sciences
University of Texas at Austin

CS 313E - Elements of Software Design (Spring 2017)
Section: 51920, MWF 3:00 PM - 4:00 PM, GDC 2.216

Instructor: Dr. Shyamal Mitra
Office Hours: M 10:00 AM - 10:50 AM
Office Hours: WF 1:00 PM - 1:50 PM
Location: GDC 6.320 or GDC 6.302
E-mail: mitra@cs.utexas.edu
Do not send mail on Canvas.

Student Assistant: Asad Mahdi
E-mail: syed.asad.mahdi@utexas.edu
Office Hours: TTH 4:00 PM - 5:00 PM or by appointment
Location: GDC 4.304

Student Assistant: Melody Park
E-mail: melodypark@utexas.edu
Office Hours: MW 4:00 PM - 5:00 PM or by appointment
Location: GDC 4.304

Required Text: Problem Solving with Algorithms and Data Structures using Python
Author: Bradley Miller and David Ranum
Publisher: Franklin, Beedle and Associates
ISBN: 978-1590282571

Scope of the Course

This is the second course in the Elements of Software series. I assume that you know a programming language (C / Java / Python) at the level taught in CS 303E. The emphasis of this course will be on software development using object-oriented methodology.

We will learn how to analyze and design software. We will learn how to create reusable software components and to compose programs from already available components. We will learn about some basic data structures and algorithms and how to match the data structures and algorithms to problems. We will test and evaluate programs for their functionality and their performance.

We will be following the required text book closely. I will provide notes in class that will be posted on the web for topics that are not covered in the book. 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. If you are not there for any lecture you need to send me an e-mail explaining why.

Assignments

There will be programming assignments that you can complete in the CS Lab. You may choose to use your own computer to work on these assignments. If you work on your home computer, you will have to download and install Python 3. There is a graphical development environment (IDLE) that comes with Python that you can also install.

The only way to learn programming is to program. Doing the programming assignments is crucial to performing well in class. There will be on the average one to two assignments 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 Assignments 2 and/or 3, please see the Instructor immediately.

The assignments will require a substantial time commitment over several days (an average of 10 to 12 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 maybe returned promptly. If you do not finish an assignment by the deadline you have a maximum of two days to turn your assignment in. However, there is a penalty of 10 points (out of a 100 points) per day. Your assignment is one day late until the midnight of the day after it is due, two days late from then until midnight of the second day. We will accept your assignment after two days if there is a compelling reason.

Specific grading criteria vary on each assignment. However, in general, programs that do not compile correctly on the CS 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 CS Lab configuration in order to be graded. Here is the general grading criteria for programming assignments.

All assignments must be submitted using the web based Canvas program. You must always make a backup copy of the Python source code (i.e. the .py file) on your removable secondary storage device (e.g. flash drive). 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.

For assigned programs, the source code (.py file) must be turned in. The source code must be a text file that can be run through a Python 3 interpreter. Word processing files (those created with Microsoft Word, for example, and ending with .doc extension ) will not be accepted.

If you want us to debug your program, come to us during our office hours with your laptop and we will go through the program with you. Do NOT just e-mail the program to us for debugging. We will not respond to e-mails that have full length programs that have to be debugged.

Grade Dispute: Scores for assignments will be posted on Canvas. You have one week from the date the assignment grade is posted to dispute your grade. The student assistants will be grading the assignments. Send the TAs an e-mail and see if you can resolve your differences. If you cannot resolve your differences, you may send me an e-mail explaining the situation. We will not entertain any grade disputes after one week.

Assignment Identification: All assignments must be submitted with the proper header, containing your name (as registered), your unique section number, 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.

In addition, because assignments are submitted as files on Canvas, they must have the correct file name, which will be specified in the assignment handout. You must also ensure that you turn in the assignment to the correct unique section folder - that is, the section you are currently registered in. 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.

Quizzes

We will be having quizzes regularly throughout the semester. In general quizzes will be given on Fridays. There are no make-up quizzes. You may miss one of the quizzes during the semester, that is we will drop your lowest quiz score. Bring your laptop for the quizzes.

Tests

There will be three tests and no final examination. The three tests will be on Wednesdays from 6:00 pm to 8:00 pm. There will be makeup tests on Thursdays from 6:00 pm to 8:00 pm. You need to give me documented evidence that you cannot take the test on Wednesdays to be allowed to take the makeup tests.

Test Schedule
Test Date Time Room
Test 1 Wed, 22 Feb 6:00 PM - 8:00 PM GDC 2.216
Makeup 1 Thurs, 23 Feb 6:00 PM - 8:00 PM GDC 4.304
Test 2 Wed, 29 Mar 6:00 PM - 8:00 PM GDC 2.216
Makeup 2 Thurs, 30 Mar 6:00 PM - 8:00 PM GDC 4.304
Test 3 Wed, 03 May 6:00 PM - 8:00 PM GDC 2.216
Makeup 3 Thurs, 04 May 6:00 PM - 8:00 PM GDC 4.304

Make-up tests will be given only for the following reasons. In all cases you must provide some form of documentation.

Having three tests on the same day is not official UT conflict! For each test you may bring a non-programmable calculator and a single 8 1/2 x 11 sheet with handwritten notes (no photo reduction) on both sides of the paper.

Questions concerning test grades should be given to me in writing along with your test within the next class day that the test is handed back. We will not entertain any disputes after that time.

Grades

Your performance in this class will be evaluated using your scores for quizzes, programming assignments, and three tests. The weights of each of these components are listed below. There are no extra credit projects or assignments to improve your grade.

All scores will be entered on Canvas. Check your scores regularly on Canvas to make sure that we have entered them correctly. Remember the average score as shown on Canvas is not correct. It does is not weighted with weights as shown above.

Study Groups

Please organize yourselves into study groups of ~5 students who will meet once a week to discuss the course. Typically, you will review the lectures, do the reading, and attempt the homework independently before your weekly meeting with your study group. Studying for tests together is permitted and encouraged. If you are unsure about how to work together with your friend in a legal, helpful manner, do come and talk with us. Remember, it is always ok to "work together" with your professor or TA!

We will be using Piazza for general discussion of class related questions rather than the discussion board on Canvas. Please do not post solutions to any problems on Piazza.

Academic Misconduct Policy

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.

The homework, programs, and exams must be the work of students turning them in. University policy (see Dean of Students' policies on academic integrity) will be followed strictly. We will be running a sophisticated program on all submitted assignments to detect plagiarism. If we do detect any cases of academic dishonesty, we will assign a grade of F to all students involved and refer the cases to the Dean of Students.

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

University Time Table

General Policies

If you are absent from class or examination for the observance of a religious holy day you may turn in your assignment or take the examination on an alternate date provided you have given me written notice fourteen days prior to the class absence. For religious holy days that fall within the first two weeks of class notice must be given on the first class day.

Students with disabilities who need special accommodations should contact the Services for Students with Disabilities (SSD) Office (471-6259 or 471-4641 TTY).