CPSC 2380 Data Structures and Algorithms Spring 2014 Department of Computer Science University of Arkansas at Little Rock 2801 South University Avenue Little Rock, Arkansas 72204-1099 Class Hours: Tuesday and Thursday, 4:30 PM 5:45 PM Classroom: EIT 325 Instructor: Dr. Chia-Chu Chiang Office: EIT 570 Office Hours: Tuesday 2:00 3:00 PM, Wednesday 11:00 AM 12:00 PM, Thursday 2:00 3:00 PM, Other hours by appointment Telephone: (501) 569-8142 Fax: (501) 569-8144 E-mail: cxchiang@ualr.edu Course Descriptions A systematic study of the main data structures of computer science: arrays, stacks, queues, linked lists, trees, graphs, hash tables. Implementation and analysis of the algorithms and programming techniques for searching, sorting, inserting into, and deleting from these structures; efficiency considerations. Successful completion of this course requires a grade of C or greater. Three hours lecture per week. Three credit hours. Course Objectives Upon successful completion of this course, students should be able to design a logical solution to a variety of problems in which data structures (lists, stacks, queues, hash tables, trees, and graphs) and algorithms play a central role implement the data structures and algorithms in C++ apply both static and dynamic implementations of lists, stacks, queues, hash tables, trees, and graphs evaluate the benefits and drawbacks of data structures and algorithms in terms of memory and run time efficiency. evaluate the performance tradeoffs of various data structures and algorithms apply applications of data structures and algorithms to large industrial programming projects master the theoretical underpinnings of data structures and algorithms at graduation convey technical material in writing Prerequisites CPSC 2376 (Programming II) or CPSC 2377 (Introduction to Game Programming) - 1 -
Text Data Structures & Algorithms in C++, 2 nd Ed., 2011 By Michael T. Goodrich, Roberto Tamassia, and David M. Mount John Wiley & Sons, Inc. References Problem Solving with C++, 2008, 7 th Edition By Walter Savitch Addison-Wesley OR other Texts for CPSC 1375: Programming I and CPSC 2376: Programming II Course Outline Chapter 1 A++ Primer 1.1 Basic C++ Programming Elements 1.2 Expressions 1.3 Control Flow 1.4 Functions 1.5 Classes 1.6 C++ Program and File Organization 1.7 Writing a C++ Program Chapter 2 Object-Oriented Design 2.1 Goals, Principles. and Patterns 2.2 Inheritance and Polymorphism 2.3 Templates 2.4 Exceptions Chapter 3 Arrays, Linked Lists, and Recursion 3.1 Using Arrays 3.2 Singly Linked Lists 3.3 Doubly Linked Lists 3.4 Circularly Linked Lists and List Reversal 3.5 Recursion - 2 -
Chapter 4 Analysis Tools 4.1 The Seven Functions Used in This Book 4.2 Analysis of Algorithms 4.3 Simple Justification Techniques Chapter 5 Stacks, Queues, and Dequeues 5.1 Stacks 5.2 Queues 5.3 Double-Ended Queues Chapter 6 List and Iterator ADTS 6.1 Vectors 6.2 Lists Chapter 7 Trees 7.1 General Trees 7.2 Tree Traversal Algorithms 7.3 Binary Trees Chapter 9 Hash Tables, Maps, and Skip Lists 9.2 Hash Tables Chapter 10 Search Trees 10.1 Binary Search Trees Chapter 11 Sorting, Sets, and Selection 11.1 Merge-Sort 11.2 Quick-Sort 11.3 Studying Sorting through an Algorithmic Lens Chapter 13 Graph Algorithms 13.1 Graphs 13.2 Data Structures for Graphs 13.3 Graph Traversals 13.4 Directed Graphs Grading Projects in C++ 30% Assignments 10% Midterm Exam 30% Final (Comprehensive) 30% 90-100% A 80-89% B 70-79% C 60-69% D < 60% F Exams All of the exams will be closed book and note exams. No make-up exams will be given except for documented illness or personal emergency. To be eligible for make-up, you must notify the instructor prior to the time of the exam and provide documentation for the situation when arranging the make-up. - 3 -
Tentative Schedule Week Tuesday Lecture Thursday Lecture 1 1/14/2014 Chapter 1 1/16/2014 Chapter 1 2 1/21/2014 Chapter 2 1/23/2014 Chapter 2 3 1/28/2014 Chapter 3 1/30/2014 Chapter 3 4 2/4/2014 Chapter 3 2/6/2014 Chapter 4 5 2/11/2014 Chapter 4 2/13/2014 Chapter 5 6 2/18/2014 Chapter 5 2/20/2014 Chapter 5 7 2/25/2014 Chapter 6 2/27/2014 Chapter 6 8 3/4/2014 Chapter 6 3/6/2014 MIDTERM 9 3/11/2014 Chapter 7 3/13/2014 Chapter 7 10 3/18/2014 Chapter 7 3/20/2014 Chapter 9 11 3/25/2014 Spring Break 3/27/2014 Spring Break 12 4/1/2014 Chapter 9 4/3/2014 Chapter 10 13 4/8/2014 Chapter 10 4/10/2014 Chapter 10 14 4/15/2014 Chapter 11 4/17/2014 Chapter 11 15 4/22/2014 Chapter 11 4/24/2014 Chapter 13 16 4/29/2014 Chapter 13 5/1/2014 Chapter 13 17 5/6/2014 Consultation Day Last Day to Drop an individual Class 3/11/2014 by 5 P.M. Last Day to Withdraw from All Classes 5/5/2014 by 5 P.M. Last Day of Classes 5/5/2014 Consultation Day 5/6/2014 Final on 5/8/2014 4:00 PM 6:00 PM Policy The Department of Computer Science expects all students to adhere to UALR s policy on Academic Honesty. In particular, a solution to an assignment or exam must be your own work. You are encouraged to discuss the assignment with your instructor, and even your classmates. However, anything you turn in for grading must be your own work. Students with Disabilities Your success in this class is important to me, and it is the policy and practice of the University of Arkansas at Little Rock to create inclusive learning environments consistent with federal and state law. If you have a documented disability (or need to have a disability documented), and need an accommodation, please contact me privately as soon as possible, so that we can discuss with the Disability Resource Center (DRC) how to meet your specific needs and the requirements of the course. The DRC offers resources and coordinates reasonable accommodations for students with disabilities. Reasonable accommodations are established through an interactive process among you, your instructor(s) and the DRC. Thus, if you have a disability, please contact me and/or the DRC, at 501-569-3143 (V/TTY) or 501-683-7629 (VP). For more information, please visit the DRC website at www.ualr.edu/disability. Class Blackboard Site http://blackboard.ualr.edu Program Outcome, Course Outcome, and Performance Criteria - 4 -
O5: Be capable of problem solving. (CO5) Students will be able to formulate a logical solution to a variety of problems in which data and data structures play a central role. - Understand the requirements of the problems - Choose appropriate strategy to analyze the problems such as problem decomposition and abstractions - Be able to make intelligent design choices as to how best to represent data for various purposes - Use appropriate logic and computer syntax for solution development code should be correct, concise, and clear O6: Be capable of formulating algorithmic solutions to a wide variety of problems normally encountered in real-world computing and also in academe. (CO6) Students will be able to think clearly and logically in formulating programmed solutions to a variety of problems in which data and data structures play a central role. - Identify inputs and outputs - Identify variables, types, and data structures - Identify the process, decision, and loops - Develop a high-level algorithm with appropriate data structures including arrays, stacks, queues, linked lists, trees, graphs, hash tables - Understand and Be able to analyze competing implementation ideas for data structures such as procedural vs. object-orientation, self-design vs. library structures, static vs. dynamic memory allocation, etc. - Understand and Be able to analyze competing implementation ideas for algorithms such as iteration vs. recursion, memory efficiency vs. time efficiency, etc. O7: Be capable of expressing their algorithms in at least one of several of the most important computer languages currently in use in academic and local computing environments. (CO7) Students will be able to apply object-oriented programming concepts to problem solutions in C/C++. - Use C/C++ language constructs for expressing an algorithmic solution - Be able to read, write, and modify programs in C/C++ O8: Have a sufficient overview of the main subject areas of computer science, so that they can make intelligent decisions as to their future consideration of graduate education. (CO8) Students will understand program correctness, applications of programs to various subject areas, and intelligent-making and problem-solving. - Develop understanding of general concepts of data structures - Recognize the trade-offs of using various data structures - Be able to choose an appropriate data structure such as stack, queue, binary tree, or graph required to solve a problem - Be able to understand and analyze the advantages and disadvantages of various competing ideas for how to represent data - Be able to develop algorithms with data structures for problem solving - State in big-o notation memory usage and running times associated with the algorithms discussed - Promote correctness at all levels of program development - Develop practical programming skills O9: Have mastery of the theoretical underpinnings of computer science at graduation. (CO9) Students will be able to write well-disciplined code. - Be able to choose appropriate data structures including stack, queue, binary tree, or graph required to solve a problem - Be able to develop programs sufficiently well in the areas of computer architecture, software engineering, networking, compiler writing, databases, and operating systems O11: Be capable of conveying technical material in writing and through interacting with an audience in an oral presentation. (CO11) Students will be able to write well-organized, clear, correct, concise code for manipulating data and data structures. - Write reasonably helpful comments in programs - Write readable code (There are no oral presentations in this course.) - 5 -
- 6 -