Syllabus - Computer Science 314 - Data Structures (Computer Programming 2)
The University of Texas at Austin · Fall 2011

Class Basics:

- Lecture: MWF 1 - 2 pm, 2 - 3 pm. (Turn off cell phones and laptops in lecture.)

- Discussion Section: Tuesdays, various times

- UT Course unique numbers 52307, 52308, 52309, 52311, 52312, 52313, 52314, 52316

- Class Web Page: www.cs.utexas.edu/~scottm/cs314

Lecture and Discussion Sections Schedule:

Unique ID | Lecture Time and Location | Discussion Section Time All sections meet Tues. | Discussion Section Location | Discussion Section TA | Grader
52307 | MWF 1 - 2 pm UTC 3.104 | 9 - 10 am | WEL 3.266 | Swati | Swati
52308 | 10 - 11 am | PAR 310 | Swati | Jay
52309 | 11 am - 12 noon | WEL 4.244 | Swati | Swati
52311 | 12 noon - 1 pm | PAI 5.38 | Yuanzhong | Yuanzhong
52312 | MWF 2 - 3 pm UTC 3.102 | 1 - 2 pm | WEL 4.244 | Yuanzhong | Jay
52313 | 2 - 3 pm | BEN 1.124 | Yuanzhong | Yuanzhong
52314 | 3 - 4 pm | BIO 301 | Yuanzhong | Jay
52316 | 4 - 5 pm | PAR 304 | Swati | Jay

- Students may attend either lecture on MWFs.

- Students must attend a discussion section taught by the teaching assistant in charge of the unique id for which they are officially registered.

Teaching Staff:

- Instructor: Mike Scott, email: scottm@cs.utexas.edu office: Painter Hall 5.68
  Office Hours: Monday, Wednesdays, and Friday 3 - 5 pm
  Office hours will be held in the computer lab in PAI 5.38.
  If you can not make these times please email me to set up an alternate time.

- Teaching Assistants:

  - Swati Rallapalli, email: , Office Hours: Wednesday, 12 - 2 pm and Thursday, 1 - 4 pm
  - Yuanzhong Xu, email: , Office Hours: Monday 1:30 - 3:30 pm and Thursday 10 am - 1 pm

- Undergraduate Proctors:

  - Jay Ordway, email: , Office Hours: Monday, 3 - 7 pm, Tuesday and Thursday, 5:30 - 8:30 pm

Course Objectives: This is a second course in computer programming. The purpose of the course is to learn how to use and implement canonical data structures such as lists, iterators, stacks queues, trees, sets, maps, hash tables, heaps, and graphs. The course also covers testing, reasoning about programs (pre/post conditions, assertions), debugging, abstraction of data, basic algorithm analysis, recursion, canonical sorting and searching algorithms, and an introduction to the object oriented concepts of encapsulation, inheritance, and polymorphism. Students will be able to implement medium sized programs using the concepts listed. The course is taught using Java.

Estimates of the required effort for the student who meets the course prerequisites:

- 4 hours per week of studying
- 6 - 12 hours per week of programming
- 3000 lines of Java code.

Formal Course Prerequisite:

1. CS305j or CS312 with a grade of C- or higher

Informal Course Prerequisites: Mastery of the following basic programming topics: data types, variables, expressions and operators, control structures (looping and decision making), procedures( a.k.a. functions, methods, or subroutines), parameters, arrays (1d and 2d), simple user defined data types (records, structures, objects), top down design.

You should be able to design and implement a program in Java based on a problem statement. The problem should be complex enough that a well designed solution requires the following:

1. 200 - 300 lines of code for a well designed solution
2. uses arrays of records or arrays of objects
3. requires 8 or more procedures / functions / methods for a well designed solution

For example, create from scratch a program that allows two people to play a game of connect 4 on the computer. The display can be a simple text based interface. Both players share the same keyboard and take turns.

Textbooks:

- Recommended data structures book: Data Structures and Problem Solving using Java, 4th edition by Mark Allen Weiss, ISBN13 978-0321541406. Addison Wesley 2010.
- Recommended Java reference: On to Java by Patrick Henry Winston and Sundar Narasimhan , ISBN 978-0201725933. Addison Wesley 2001.
- Recommended book for recursion: Thinking Recursively with Java by Eric Roberts, ISBN: 978-0471701460, Wiley 2005.

Class Attendance, iClicker

- Purchase an iClicker (a remote control device) from the Co-op bookstore or the iClicker website.

  Beware: There may be several incompatible brands of remote control devices on sale. Be sure you get the ``iClicker'' brand. For a picture of one, see the iClicker web site. We are using the original iClicker, not the iClicker 2. The Co-op will buy back the iClicker for about half the current price. I recommend that you put a piece of transparent tape across the serial number on the back of your iClicker to prevent it from being rubbed off with use. The serial number is important when you register the iClicker (see the next step) and you want it intact when/if you sell the iClicker back to the bookstore.

- Register your iClicker at http://www.iclicker.com/support/registeryourclicker/ by providing:
  - your first name
  - your last name
  - your UT EID (which they call your ``student ID'')
  - your clicker's ID (the serial number under the bar code on the back of the device)

  Even if you already have a iClicker and registered it in the past you must reregister for this semester.

- Bring your iClicker to every lecture. Participation on the iClicker questions will determine attendance for each lecture. Don't be a special case.
- In order to get credit for a given day you MUST:
  - register your clicker prior to class and
  - have your clicker with you and
  - answer one or more of the attendance questions during class.
- If you do not meet these requirements you will not receive iClicker credit for that day.

Class Discussion Tool: I have set up a discussion group for the class on Piazza.

- Go to the Piazza web site and join the CS314 group for The University of Texas at Austin.
- I will post class announcements and information to the discussion group.
- Post your questions about the class to the discussion group. You may also post your test cases to Piazza to share with other students.

Email: All students must become familiar with the University's official e-mail student notification policy. It is your responsibility to keep the University informed as to changes in your e-mail address. You are expected to check e-mail on a frequent and regular basis in order to stay current with University-related communications, recognizing that certain communications may be time-critical. It is recommended that e-mail be checked daily. The complete text of this policy and instructions for updating your e-mail address are available at http://tinyurl.com/3nk7f2g which includes instructions on how to update the email address you have on record with UT.

In this course I use e-mail as a means of communication with students. You will be responsible for checking your e-mail regularly for class work and announcements.

Software: Required software for programming assignments is described on this web page: http://www.cs.utexas.edu/~scottm/cs307/software.htm

Computing Facilities:

- Painter Hall Microcomputer Lab. PCs are available for assignments in the CS Department microcomputer lab located in Painter Hall, room 5.38. There are also public machines available in ENS rooms 1 and 2. You are free to work on your own computer if you wish.

CS Lab Account:

- Students must obtain an account for the CS department microlab. Visit this website to request account: https://udb.cs.utexas.edu/amut/acut/ (If you had an account the previous semester it should renew automatically.)
- Accounts take at least a day for account to become active. Please request your account as soon as possible. Even if you do not work in the lab, you will use this account to turn in your homework.
- These accounts are only for the CS microlab, and not any other labs or networks at UT. This account is not the same as your UTEID or UT Direct account.

Schedule: A schedule of lecture topics, reading assignments, and assignment distribution and due dates is available online, via the class web page, www.cs.utexas.edu/~scottm/cs314/schedule.htm. The schedule page contains links to slides for the lectures, assignments, and online readings. Readings are to be completed before class. The schedule is subject to change.

Exams: In order to effectively evaluate your understanding of course material there will be two out of class midterms. If you have a conflict with a midterm please email the instructor as soon as possible to work out an alternate time.

- Midterm 1: Wednesday, October 5, from 6 - 8 pm, BUR 106 (covers up to and including linked lists)
- Midterm 2: Wednesday, November 9, from 6 - 8 pm, UTC 2.102A (covers up to and including binary search trees)
- The CS314 final exam will be given at a uniform time for both lecture sections. The date and time for the final will be available towards the end of October. Traditionally the Registrar schedules the final for either Wednesday, Thursday, or Friday evening of finals week, but could be as late as Tuesday, December 13.

Grading: Here are the class components used to determine your final average.

Component Type | Number | Points | Total Points
Assignments | 12 | 20 each | 240
iClicker participation | 40 | 1 each day | 40
Quizzes | 13 | 10 each | 130
Midterm 1 | 1 | 175
Midterm 2 | 1 | 175
Final Exam | 1 | 275

- Programming assignments, iClicker participation , and quizzes can count no more than 375 points towards your final average. Programming assignments, iClicker participation , and quizzes add up to 410 points. There are 35 points of "slack" in these non-exam grading components. This slack (and slip days explained below) is to account for any problems that may occur during the semester that cause you to miss one of these non-exam components. (Such as illness, family emergencies, hardware problems, etc.) Quizzes and iClicker participation cannot be made up for any reason. For assignments there is some leeway. See the explanation of slip days below.
- The final letter grades will be assigned based on your total points. The maximum possible for points is 1000. The grade cutoffs are: <600 = F, 600 - 699 = D, 700 - 799 = C, 800 - 899 = B, >= 900 = A. Plusses and minuses (+ and -) will be assigned to scores within 25 points of the cut offs. So for example total points 875 to 899 earn a B+ and total points 900 to 924 earn an A-.
- Note, points are not added to your final total. The "slack points" are handled by basing your final average on 1000 points instead of 1035 points. There are 1035 points available in the course. non-exam component points are capped at a maximum of 375. In other words, earning more than 375 points on the non-exam components will NOT result in points being added to your exam score.
- Depending on the results of an exam, exam scores may be curved. If so, exam scores may stay the same or improve. Exam score will never get worse due to a curve. No other class components (assignments, iClicker participation, or quizzes) are curved.
- You have 6 slip days to use through out the term on your assignments if you are not able to turn an assignment in on time. See the assignments page for details on how slip days work. www.cs.utexas.edu/~scottm/cs314/Assignments/index.htm. Slip days are to account for life circumstances (My hard drive crashed!! I got a virus downloading an mp3!!) and emergencies. Do not use your slip days frivolously. If you use up your slip days and then have an emergency of some type you will receive a 0 if you do not turn in an assignment on time.
- The required format and procedures for turning in assignments are available at www.cs.utexas.edu/~scottm/cs314/Assignments/index.htm.Assignments that are not turned in to the correct directory in the correct format will cause you to use slip days, lose points, and/or receive a 0 on the assignment.
- Quizzes are given at the beginning of every discussion section. If you are not present when the quiz is completed you receive a 0 for that quiz. Quizzes cannot be made up under any circumstances. Quizzes are not curved. Quiz grading will be: 10 for a perfect quiz, 7 - 9 for minor mistakes, and 6 or less for little or no effort.
- If a student misses a midterm exam with a verifiable excuse the remaining exams will count for the missed exam.
- If you are dissatisfied with a grade you receive on an assignment or test, you must submit your complaint via email, along with supporting evidence or arguments, to your grader within 5 days of the date the teaching staff first attempted to return the assignment or test to you.
- Questions about your grade are to be sent to the grader assigned to your section. See the table above for graders and section unique ids.
- You may request a regrade of an exam if you feel the grading criteria was not applied correctly. To ensure accuracy the entire exam will be regraded.
- There are no opportunities for extra credit in this course.

This course is similar to the old CS307 course. Historically:

- 74% of the people taking the class earned a C- or higher: 24% A's, 30% B's, 20% C's
- 15% earned a D or F.
- 11% dropped or withdrew from the class, grade symbols Q or W.

No whining: Feedback and concerns about the course are always welcome; legitimate grading errors that are identified in a timely fashion will certainly be corrected, but whining is counter-productive and will only irritate those who evaluate your work to determine grades.

Important Dates for Changing Academic Status and Dropping the Course: Refer to the Registrar's academic calendar for the deadlines for changes in academic status. Highlights are:

- Monday, August 29: Last day of the official add/drop period; after this date, changes in registration require the approval of the department chair and usually the student’s dean.
- Friday, September 9: (12th class day) Last day to drop for a possible refund. Last day to add a course.
- Tuesday, November 1st: Last day an undergraduate student may, with the dean’s approval, withdraw from the University or drop a class (Q drop) except for urgent and substantiated, nonacademic reasons. Last day a student may change registration in a class to or from the pass/fail or credit/no credit basis. In practice I always grant approval for "Q drops" up to this date as long as their are no issues with academic integrity.
- After Monday, November 1st, students must go to the academic advisors in their college Dean's office. To be eligible for an incomplete (UT uses the symbol X to indicate incompletes) you must have a letter grade of C- or better and a written, verifiable excuse for missing the last test. This is a necessary but insufficient condition for receiving an incomplete.

Important Dates for Changing Academic Status and Dropping the Course: Refer to the Registrar's academic calendar for the deadlines for changes in academic status. Highlights are:

- Friday, January 21: Last day of the official add/drop period; after this date, changes in registration require the approval of the department chair and usually the student’s dean.
- Wednesday, February 2: (12th class day) Last day to drop for a possible refund. Last day to add a course.
- Monday, March 28:(Half way point of semester) Last day an undergraduate student may, with the dean’s approval, withdraw from the University or drop a class (Q drop) except for urgent and substantiated, nonacademic reasons. Last day a student may change registration in a class to or from the pass/fail or credit/no credit basis. In practice I always grant approval for "Q drops" up to this date as long as their are no issues with academic integrity.
- After Monday, March 28, students must go to the non academic advisors in their college Dean's office. For CS majors go to WCH 1.106. To be eligible for an incomplete (UT uses the symbol X to indicate incompletes) you must have a letter grade of C- or better and a written, verifiable excuse for missing the last test. This is a necessary but not sufficient condition for receiving an incomplete.

Academic Dishonesty: Taken from the CS department Code of Conduct.

"The University and the Department are committed to preserving the reputation of your degree. It means a lot to you. In order to guarantee that every degree means what it says it means, we must enforce a strict policy that guarantees that the work that you turn in is your own and that the grades you receive measure your personal achievements in your classes:

Every piece of work that you turn in with your name on it must be yours and yours alone unless explicitly allowed by an instructor in a particular class. Specifically, unless otherwise authorized by an instructor:

- Students may not discuss their work with anyone except the instructor and other members of the instructional staff (instructor, TA, lab proctor or partner on a pair assignment).
- Students may not acquire from any source (e.g., another student or an internet site) a partial or complete solution to a problem or project that has been assigned.

You are responsible for complying with this policy in two ways:

1. You must not turn in work that is not yours, except as expressly permitted by the instructor of each course.
2. You must not enable someone else to turn in work that is not theirs. Do not share your work with anyone else. Make sure that you adequately protect all your files. Even after you have finished a class, do not share your work or published answers with the students who come after you. They need to do their work on their own.

The penalty for academic dishonesty will be a course grade of F and a referral of the case to the Dean of Students. Further penalties, including suspension or expulsion from the university may be imposed by that office.

One final word: This policy is not intended to discourage students from learning from each other, nor is it unmindful of the fact that most significant work in computer science and in the computing industry is done by teams of people working together. But, because of our need to assign individual grades, we are forced to impose an otherwise artificial requirement for individual work. In some classes, it is possible to allow and even encourage collaboration in ways that do not interfere with the instructor's ability to assign grades. In these cases, your instructor will make clear to you exactly what kinds of collaboration are allowed for that class."

For CS314 the policy on collaboration is modified as follows: 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. Essentially if you talk about an assignment with any one else you are okay, but the moment you start looking at someone else's source code or showing someone else your source code you have crossed the line into cheating. You should not ask anyone to give you a copy of their code or, conversely, give your code to another student who asks you for it. Similarly, you should not discuss your algorithmic strategies to such an extent that you and your collaborators end up turning in exactly the same code. Discuss high level approaches together, but do the coding on your own.

Understand the difference between cheating and collaboration. Collaboration is allowed, cheating will lead to failure in the course.

Examples of cheating are many and include accessing another student's account, looking at someone else's solution code, copying or downloading someone else's solution code, referring to solutions from previous semesters, and / or allowing others to copy of access your solution code. This means you shall not look on the internet for code to solve your problems.

Examples of allowable collaboration include discussions and debate of general concepts and solution strategies and help with syntax errors.

The code you can reuse in this course are:

1. You may use any code you develop with the instructor, TAs, or proctors.
2. You may use code (with attribution) from the class slides and the class coding examples.
3. You may share additional test cases and expected results of test cases.

You shall not make use of code you find from other sources including the world wide web. Materials from the web should only be used for educational purposes. Thus, you can read about linked lists and look at examples of linked list code, but you must not copy any code from the web or be looking at any of this code from the web when writing anything you turn in. If you discuss an assignment with another students or look at examples from the web you should employ the World of Warcraft Rule: after a discussion with another student or looking at example code you should do something that has nothing to do with computer science or programming for al least half an hour. Playing World of Warcraft or other similar activity. (Watching a sitcom, reading a book.)

You are also allowed to post short segments of code (3 lines or less) of code that are giving you syntax errors to the class listserv in order to get help on fixing the syntax error.

If you have any doubts about what is allowed ask the instructor.

Plagiarism detection software will be used on assignments to find students who have copied code from one another.

For more information on Scholastic Dishonesty see the University Policy on Scholastic Dishonesty

Religious Holidays: By UT Austin policy, you must notify me of your pending absence at least fourteen days prior to the date of observance of a religious holy day. If you must miss a class, an examination, a work assignment, or a project in order to observe
a religious holy day, you will be given an opportunity to complete the missed work within a reasonable time after the absence.

Students with Disabilities: students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 471-6259, www.utexas.edu/diversity/ddce/ssd/.

To the CS 314 home page