Algorithms and data structures form the backbone of computing. ... Anany V.
Levitin, Introduction to the Design and Analysis of Algorithms, Third Edition,
Addison.
CSCE350 – Data Structures and Algorithms Summer 2016 – Syllabus Instructor
Lectures
Office hours
Jason O’Kane
[email protected] Swearingen 3A58 803-777-1791
Weekdays 1:15–3:15pm Swearingen 2A14
Weekdays 11:00–11:30am You’re welcome to stop by at other times, or to make an appointment.
Description The official description looks like this: Techniques for representing and processing information, including the use of lists, trees, and graphs; analysis of algorithms; sorting, searching, and hashing techniques. Algorithms and data structures form the backbone of computing. This course covers techniques for designing and analyzing algorithms for a variety of problems. After taking this course, you should be able to: • Understand and apply common algorithm design techniques. • Describe and apply formal analysis measures for algorithms and data structures. • Describe the relevance of abstraction to problem solving. • Analyze and use important data structures such as lists, trees, and graphs. This course is different from many other computing courses, especially those at the lower level, because the primary content of the course is not focused on any specific programming language. (Several programming assignments will use C++, but only because of the need for uniformity, rather than because of any specific features of that language.) Instead, we will study algorithms that are useful across all programming languages. As a result, the things you will learn in this course should still be useful in, say, twenty years, when your favorite programming language is but a faded memory.
Prerequisites By topic: Introductory programming and data structures; Discrete mathematics; Use of simple data structures (queues, stacks, lists, trees) By course: CSCE 146 (Algorithmic Design II); MATH 174 or 374 (Discrete Structures)
Textbook The required textbook is: Anany V. Levitin, Introduction to the Design and Analysis of Algorithms, Third Edition, Addison Wesley, Boston, MA, 2011. We will follow this book fairly closely, and homework problems will be assigned from it. CSCE350 – Summer 2016
Syllabus
1 of 4
Webpage Information about the course, including scheduling information, assignments, and announcements, will be posted at this site: https://cse.sc.edu/˜jokane/teaching/350
Policies • Attendance: I will make every effort to ensure that class attendance is worth your time. Missed tests and quizzes due to unexcused absences will result in a score of zero. In the instructor’s experience, lack of class attendance has correlated strongly with poor grades. • Cheating (short version): Don’t. • Cheating (long version): Academic dishonesty undermines the educational mission of the course and reflects disrespect to your classmates and to your instructor. Therefore, you are expected to practice the highest possible standards of academic integrity. The standard academic penalty for cheating is a failing grade for the course; the absolute minimum penalty is a −50% score on the assignment. This policy includes representing someone else’s work as your own in any form, improper citation of sources, using another student’s work, and any other form of academic misrepresentation. Details on the University cheating policy can be found in the section on “Academic Responsibility” in the Carolina Community Handbook. In the absence of instructions to the contrary, it is permissible to consult Internet resources to complete the assignments in this class, provided that you give adequate citations of every resource you consult. However, it is not permissible to copy code or anything else directly from the web. Representing the work of others as your own is never permissible. When in doubt, ask first. • Collaboration: Assignments should be done independently. It is permissible to discuss the problems at a high level with your classmates, but you should work out the details and compose the complete answers independently. Submission of identical or substantially identical work will be considered strong evidence that cheating has occurred. • Late assignments: Homework assignments cannot be accepted late, because we’ll discuss the solutions on the due date. Programming assignments submitted late will be assessed a penalty of 15% of the maximum score for each day or fraction of a day. Example: An assignment that would normally be scored 95/100, but submitted 2.5 days after the deadline, would earn 95 − ⌈2.5⌉ · 15 = 95 − 45 = 50 points. • Mobile devices: Please silence any mobile devices before coming to class. If your phone rings in class, I reserve the right to answer it for you and take a message. Likewise, if my phone rings during class time, I will allow a student to answer it. • Computing platform: The programming assignments must be done in C++ and will be graded using the department’s Linux platform. To expedite grading, each assignment will have very specific submission instructions, including precise formats for input and output. You will be expected to follow these instructions carefully. • Policy changes: Changes to the syllabus at the instructor’s reasonable discretion, including changes to the evaluation and grading mechanisms, are possible but unlikely.
CSCE350 – Summer 2016
Syllabus
2 of 4
Homework Homework will be assigned after each class period, due at the start of the following class period. Homework grading will be based on a significant good faith attempt to solve the assignment problems correctly. In lieu of submitting solutions on paper, you should use the form linked from the course website to confirm that you have completed each assignment. Because we will discuss the solutions at the start of class, late submissions cannot be accepted. The homework problems will be specifically selected to reinforce the course content, in preparation both for the exams and for life as a computing expert. Taking the homework seriously is strongly correlated with good scores on the exams. In addition, approximately three in-class quizzes will be given, without advance notice. Quiz questions will be based closely on homework questions.
Evaluation Your learning in this course will be evaluated based on homework assignments, approximately three inclass quizzes, approximately three programming assignments, two in-class tests, and a final exam. 7.5% 7.5% 20% 20% 20% 25%
Homework Quizzes Programming assignments Test 1 Test 2 Final Exam
The following table gives upper bounds on the thresholds for determining final grades. The instructor reserves the right to adjust these thresholds downward, but promises not to adjust them upward. A B+ B C+
≥ 90% ≥ 85% ≥ 80% ≥ 75%
C D+ D F
≥ 70% ≥ 65% ≥ 60% < 60%
Keep in mind that I am grading your work, not you as a person. My goal is to ensure that all of the grading for this course is fair and correct. If you believe there’s been a mistake in grading, please bring it to my attention after class or in office hours soon after the exam or assignment is returned. Regrade requests after one week will not be considered. Grades will be posted on the CSE moodle server. It is your responsibility to verify that grades are correctly recorded on this site. Note that many—but certainly not all—students in the past have found this course to be “front-loaded,” in the sense that they found the first one third of the course more challenging than the last two thirds. Your mileage may vary.
CSCE350 – Summer 2016
Syllabus
3 of 4
Important Dates The following dates will change only in unusual circumstances, and generally only by a consensus of the class. Date Wednesday, July 13 Thursday, July 21 Saturday, July 30
CSCE350 – Summer 2016
Syllabus
Event Test 1 Test 2 Final Exam
4 of 4