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
CS 222: Data Structures and Algorithms Lecture: Tuesday, Thursday 12.45-14.30 LH-2 Laboratory: Friday 14.30-16.00 Lab Lecturer: Edwin Kay Office: Building 3, FO-04 Email: [email protected], [email protected] Office Hours: TTh 9.30-10.30. I am readily available at other times. Expectations: We will follow the book fairly closely. You should read assigned readings before class. You should arrive promptly for class. You should not leave the classroom during the lecture. AIM: The main goal of this course is to give students the ability to choose the appropriate data structure and algorithm when solving a programming problem. COURSE DESCRIPTION: This course will cover fundamental abstract data types and their implementations as data structures, such as lists and trees, as well as asymptotic analyses of algorithms involving these data structures. Students will also learn about searching (dictionaries, priority queues, and hashing); sorting (internal and external); graphs and algorithms on graphs (shortest path, minimum spanning trees); and pattern matching. The main goal of this course is to introduce students to the basic data structures needed to efficiently implement common programming problems. Students will also learn to analyze the run-time of the algorithms that manipulate these data structures. OBJECTIVES: At the end of the course the student should be able to: 1. Implement a variety of algorithms in Java. 2. Analyze the complexity of a variety of algorithms. 3. Choose the optimal algorithm for a given problem. Ashesi Learning Goals addressed in this course . Critical Thinking and Quantitative Reasoning: An Ashesi student is able to apply critical thinking and quantitative reasoning to approach complex problems. Many class assignments and practicals assigned in this course will require students to implement and analyse the use of numerous data structures. Further, they will learn to choose the appropriate data structure for solving a given problem. Communication: An Ashesi student is an excellent communicator in a variety of forms. In this course students will be required to provide robust documentation of their code. Also, they will learn to articulate the reasoning for various choices of data structures, and they will carefully describe various algorithms. Curious and Skilled: An Ashesi student is inquisitive and confident, has breadth of knowledge, and has attained a high level of mastery in their chosen field. In this course students will master the design, use, and analysis of data structures and algorithms, essential tools for success in computer science. The students will increase their skill in using the Java programming language for expressing solutions to software problems. Technology: An Ashesi student is an effective and flexible user of technology. In this course the students will diversify their problem solving and programming skills by mastering a variety of algorithms and data structures. Lecture Topics 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Linked Lists Binary Search Trees Searching Recursion Sorting “Big O” notation Asymptotic behavior Hash Tables Stacks, Queues, and Deques Heaps B-trees Graphs Evaluation Attendance……………………………...5% Practical…………………………………5% Assignments…………………………..20% Tests…………………………………...30% Final Exam…………………………….40% Notes: (1) There will be two tests, the first on Friday 4 March, the second on Friday 15 April. “Attendance” includes both your presence and your prompt presence. (2) Much of the time the practical assignments will provide a start on the programming assignments, although there will be some practical exercises as well. References: Data Structures and Algorithm Analysis in Java, Second Edition, by Mark Allen Weiss, 2007, Pearson Addison Wesley, Boston, MA. The Java API can be accessed at http://download.oracle.com/javase/7/docs/api/. You can also download the API and the Java SDK 6 from the “Software and Documentation Folder” of the Data Structures and Algorithms course from last year. I recommend using Dr. Java for editing your Java programs. Google Dr. Java for a download from Rice University. Academic Integrity: See www.lehigh.edu/~ejk0/cheating.html. Replace “Lehigh” with “Ashesi” and “University Committee on Discipline” with “Ashesi Judicial Committee.”