Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CpSc 2120 – Section 2 Syllabus — Fall 2016 9:30 am – 10:45 am, TTh, 119 McAdams Course URL: http://www.cs.clemson.edu/~srimani/2120_F16/index.html Instructor: Pradip K Srimani 121 McAdams Hall 656-5886, [email protected] Teaching Assistant: Xuebo Song Office Hours: 11 am – 1 pm TTh (Instructor) Or by appointments Objectives & Outcomes: The objective in this class is for students to become familiar with Data Structures and algorithm design and analysis concepts. The student who completes this course: Will understand the fundamental data structures used in computer programs and their applications. Will be familiar with fundamental algorithm design techniques and the interaction between data structures and algorithms.. Will develop skills to analyze and evaluate the performance of algorithm implementations; be familiar with basic mathematical tools. Will understand the issues involved in implementing algorithms and data structures in code. Catalog Description CPSC 2120 Algorithms and Data Structures 4(3) Study of data structures and algorithms fundamental to computer science; abstract data-type concepts; measures of program running time and time complexity; algorithm analysis and design techniques. Preq: CPSC 1020 with a C or better or CPSC 1070 with a C or better. Coreq: CPSC 2121. Recommended Textbooks: We will not use a specific textbook in class. Some Useful Books: 1. “Data Structures and Algorithm Analysis in C++”, M. A. Weiss, (4th Edition), Pearson. 2. “Data Abstraction & Problem Solving with C++”, F.M. Carrano and T.M. Henry, Pearson 3. “C Programming: A Modern Approach”, K. N. King, W. W. Norton & Company. Useful Readings: C & pointers, Beej’s Guide to C, and Simple Makefiles, C++ Tutorial Schedule: Click here to view a tentative course schedule; will include additional reading materials. (This will be updated continually; check often) Tentative Outline of Topics: • Algorithm Design Techniques. Divide and conquer, “sort and scan”, dynamic programming, greedy algorithms. • Analysis Techniques. Induction, recurrences, basic analysis of randomized algorithms, amortization, modular arithmetic, mathematical tricks. • Sorting and Selection. Insertion sort, bubble sort, merge sort, (randomized) quicksort, • • • • • • • • heap sort, counting sort, radix sort, bucket sort, stable in-place sorting, lower bounds on comparison-based sorting. Fundamental Data Structures. Arrays, linked lists, stacks, and queues. Hashing. Strategies for collision resolution, applications of hashing (e.g., in security, data mining, and information retrieval), distributed hash tables, universal hashing. Binary Search Trees and Related Structures. BST balancing mechanisms, B-trees, skip lists, representing sequences in BSTs, higher-dimensional search structures. Priority Queues. Binary heaps, applications in more advanced algorithms (e.g., shortest paths, scheduling, sweep lines). Optimization. Greedy algorithms, dynamic programming, brief introduction to other classes of optimization problems, iterative refinement. String Matching. Hashing approaches, suffix arrays and suffix trees. Graph Algorithms. Depth-first and breadth-first search, shortest paths (Dijkstra’s algorithm, the Bellman-Ford algorithm, the Floyd-Warshall algorithm), minimum spanning trees, the traveling salesman problem, graph clustering and centrality problems. Advanced Topics. Public-key cryptography, PageRank and recommendation systems, overview of data mining and machine learning, cache-oblivious data structures. Tentative Grading (subject to change): The final grade for the course will be computed based upon the following distribution (tentative): Labs — 15% Homeworks — 15% In-class quizzes — 10% 2 Tests — 30% Comprehensive Final Exam — 30% Final letter grades are not assigned according to an absolute scale. Based on final numeric scores, the instructor will draw cutoffs between letter grades as deemed appropriate. Grade Appeal: Any grade challenges regarding exams, quizzes, exercises, or programs must be emailed to the instructor, with detailed justifications, within one week of the date the grades are posted. Attendance Attendance in Lecture is expected, but not required; Lab attendance each week is mandatory. You are responsible for any material covered in class. You are responsible for any announcements, assignments or assignment modifications that are announced in class whether you are present or not. This also applies to arriving late to class or leaving early. We will have unannounced quizzes during class; 5 to 10 quizzes are expected during the semester. No make-up quizz will be given. Projects We will do 3-4 projects during the semester in C on UNIX platforms. Several of these will involve concurrent processes and/or threads. All projects will be individual projects (as opposed to team projects). Unless an individual assignment indicates otherwise, you may not collaborate on a project. You should be reasonably proficient in using C and pointers on unix platforms; programming help may not be available. Deadlines Work is due at the specified deadline. Late work will not be accepted. If a project (homework, programming assignment, etc.) is only partially completed you should submit what you have by the deadline. You should expect very little to no credit for projects that still generate syntax errors. Instructor Late: If the instructor is late for class, students are expected to wait for 15 minutes before they leave. Cancellation of Class: If classes are cancelled by the university on the day of a scheduled test, we will reschedule the test. Academic Integrity As members of the Clemson University Community, we have inherited Thomas Green Clemson's vision of this institution as a "high seminary of learning". Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form. Read the university academic integrity statement. Unless otherwise specified in an assignment, you are expected to work independently on projects and labs. If you are in doubt about the type of help you may give or receive on a project: ASK! Additional Resources: 1. ACM. The Clemson student chapter of the Association for Computing Machinery (ACM) offers occasional tutorial sessions on basic topics like “how to use Linux” and “command-line tools”. Please feel encouraged to take advantage of these if needed. 2. Tutoring. Free, drop-in tutoring is available for this class through the Academic Success Center. For details on policies and drop-in session information, please see the ASC website at http://www.clemson.edu/asc. 3. Clemson Fall Semester 2016 Academic Calendar Aug. 15, M New Student Convocation Aug 15-16, M-Tu Late enrollment Aug 16, Tu University Convocation Aug 17, W Classes begin Aug 23, Tu Last day to register or add a class or declare Audit Aug 30, Tu Last day to drop a class or withdraw from the University without a W grade Sep 6, Tu Last day to apply for December graduation Oct 7, F Last day for instructors to issue midterm evaluations Oct 21, F Last day to drop a class or withdraw from the University without final grades Nov 7-8, M-Tu Fall break Nov 9, W Registration for spring and summer terms begins Nov 23-25 W-F Thanksgiving holidays Dec 1-2, Th-F Classes meet; exams permitted in labs only Dec 5-9, M-F Examinations Dec 12, M 9:00 A.M.—Deadline to submit candidate grades Dec 14, W 9:00 A.M.—Deadline to submit other grades Dec 14, W Candidates for graduation may access grades Dec 15, Th Graduation