CS340-001: Advanced Data Structures and Algorithm Design Winter 2016 (201610) Instructor Robert J. Hilderman Office: CW308.23, 3rd Floor, College West Voice: (306) 585-4061 Fax: (306) 585-4745 e-Mail: robert.hilderman@uregina.ca WWW: http://www.cs.uregina.ca/~hilder Lectures Location: CL410, 4th Floor, Classroom Building Time: MWF 3:30 – 4:20 PM Office Hours Location: CW308.23, 3rd Floor, College West Time: MWF 10:30 – 11:30 AM (or by appointment) Prerequisites CS210: Data Structures and Abstractions Text Goodrich, M.T. and Tamassia, R. (2014). Algorithm Design and Applications. John Wiley & Sons, Inc. Grade Distribution Assignments: Midterm Exam: Final Exam: Total: 35% 15% 50% 100% Note 1: The assignments will be weighted depending on the degree of difficulty. Note 2: The midterm exam is scheduled for 50 minutes. Note 3: The final exam is scheduled for 180 minutes. Note 4: You must pass the final exam to pass the course. If you fail the final exam, the final grade you receive for the course will be 40%. Note 5: At the instructor’s discretion, the final grade may be adjusted up to +/5%. Policies and Procedures The material discussed in class forms the basis of topics that will be covered on assignments and exams. Feel free to stop the instructor at any time if you need to ask a question or make a comment. If the instructor can’t answer a question when asked, he’ll try to have an answer by the next lecture. To facilitate a learning environment that is respectful to the instructor and other students, and one that is free from distractions, please make every effort to arrive on time. Only use cell phones, tablets, and laptop computers during lectures for work related to CS340, but of course, how you actually use your time in class is up to you. So, if you insist on activities that are not related to CS340, your instructor asks that you at least sit at the back of the room. Click here for something you might find interesting. Sleeping is allowed, but snoring isn’t. If you need to sleep in class, the instructor asks that you at least sit at the back of the room. Conversation between students is generally not necessary during lectures. Occasionally, the instructor may need to send out an email to the whole class. Any email to the whole class will go to the email address associated with your Hercules account (of the form <your_name>@cs.uregina.ca or <your_name>@uregina.ca). However, the email address that you provide in an email to the instructor or in documents submitted for grading may be different, if you prefer. In that way, if the instructor or marker needs to discuss some aspect of your assignment with you, the email address that you provide will be used to contact you. Solutions to the programming problems on the assignments and exams should be written in ISO/ANSI/standard C/C++. Programs of this kind are portable and can be compiled and executed on Hercules (you should all have an account on Hercules), on the Linux machines in CL115, on Apple Macintoshes using the xCode environment in OS X, and on Windows machines using Visual C++ with Microsoft language extensions turned off. Last time I checked, you could turn off Microsoft language extensions using the following steps: (1) open your project in Visual C++, (2) click on Project, (3) scroll down to your project name Properties and click on it, (4) double click on Configuration Properties, (5) double click on C/C++, (6) click on Language, (7) set Disable Language Extensions = Yes, and (8) click the OK button. Program style, formatting, and documentation of program source code should conform to some standard. If you have never developed or adopted a standard for your programs, develop or adopt one and stick to it. Screen shots are a terrible method for capturing the output from a program and will not be accepted for credit. See the instructions for creating a C++ script file on the CS340 home page. The due date and time of assignments will be specified on the assignment sheet. Assignments must be submitted to UR Courses by 3:20 PM on the date due, unless otherwise indicated. Late assignments will be accepted, but there will be penalties. Specifically, if an assignment is not submitted by 3:20 PM on the date due, the maximum possible grade will be reduced to 90%, and for each successive day the assignment is not submitted by 3:20 PM, the maximum possible grade will be reduced to 80% (for one day overdue), then 70% (for two days due), etc. If you are unable to complete an assignment due to a health problem, inform the instructor as soon as is practical. Under some circumstances, a medical certificate may be required to confirm that you were unfit to complete the assignment. For other rare or unusual circumstances, some consideration may be given at the discretion of the instructor. Partial marks may be awarded for an incomplete assignment. For example, if you do not have solutions for all the assigned problems, submit solutions for those that you did complete. For an incomplete assignment where some components in the solution to a programming problem do not work according to the required specifications, include a written description of those components and describe, in detail, the problems encountered and solutions attempted. Your grade will be reduced due to non-working components, but only by some percentage associated with those components. Keep all graded material that is returned to you and do not alter it in any way. If you suspect an error has been made in recording your grade, you may have to provide the instructor with the graded material in order for the error to be resolved. If you have any issues with graded material, provide a detailed, written explanation of the problem and submit it to the instructor. You are required to work alone when completing assignments. While discussion of course material and assignments between you and other students is highly encouraged, as it relates to assignments, it should be of a general nature only. Certainly, the sharing of algorithms, program code, or other written material that is submitted for grading is not allowed. For example, copying the solution (or part of a solution) to a problem on an assignment or exam from someone else is academic misconduct. And knowingly allowing a solution to be copied is also academic misconduct. Generally, submitting any material for grading that you did not create is not allowed. You are encouraged to read Section 5.14 of the 2015-2016 Undergraduate Calendar, where you will find a section on academic misconduct. You are encouraged to report any suspected incidents of academic misconduct to the instructor. All reports will be held in strict confidence. Your continued attendance implies that you have read, understand, and will comply with, the policies and procedures described above. Tentative Lecture Topics (in no particular order) Depth- and breadth-first traversal algorithms String algorithms Graph algorithms Brute-force algorithms Greedy algorithms Divide-and-conquer algorithms Backtracking algorithms Branch-and-bound algorithms Dynamic programming algorithms Randomized algorithms Parallel algorithms Complexity theory Important Dates TBA: Midterm Exam Location: CL410 Time: 3:30 – 4:20 PM Wednesday, April 20, 2016: Final Exam Location: TBA Time: 2:00 – 5:00 PM Other Dates Tuesday, January 19, 2016: Add/No-Record Drop Deadline Note: Last day for adding a course and dropping a course without it showing on your transcript record Monday, February 15, 2016: Statutory Holiday Note: No lectures, labs, or office hours Tuesday, February 16 to Friday, February 19, 2016: Winter Break Note: No lectures, labs, or office hours Tuesday, March 15, 2016: Grade-of-W Drop Deadline Note: Last day for dropping a course and showing a withdrawal on your transcript record Friday, March 25, 2016: Good Friday Note: No lectures, labs, or office hours Tuesday, April 12, 2016: Last Day of Lectures Note: The above dates are unofficial. Please refer to the Section 1.2.1 of the 2015-2016 Undergraduate Calendar for the official record of key dates and deadlines.