Syllabus
Click on this link to open the Printable Syllabus in a new browser window/tab (Note: The printable syllabus is in plain text format)
Data Structures and Algorithms CMPS 223 - Spring 2010 Dr. Melissa Danforth Office: Sci III 338, 654-3180 Office Hours: MWF 12:45-1:40pm and 4:30-5:15pm (or by appointment) Email: melissa@cs.csub.edu Course web site: http://www.cs.csub.edu/~mdanfor/ under Teaching menu Course meets MWF 1:45 - 2:55pm and T 12:20 - 2:50pm in Sci III 311 Course Description Builds on the foundation provided by the CMPS 221-222 sequence to introduce the fundamental concepts of data structures and the algorithms that proceed from them within the framework of object-oriented programming methodology. Topics include: recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), and the basics of algorithmic analysis. Prerequisite: CS222 Textbook: ADTs, Data Structures and Problem Solving with C++, 2nd edition. Larry Nyhoff. Publisher: Prentice Hall, 2005. ISBN: 0-13-140909-3. Review Material from 221/222: Chapter 2 Introduction to Abstract Data Types Chapter 3 Data Structures and Abstract Data Types Chapter 4 More about OOP and ADTs -- Classes Chapter 5 Standard C++ Input/Output and String Class Chapter 9 ADT Implementations: Templates and Standard Containers Chapter 10 ADT Implementation: Recursion, Algorithm Analysis... Chapter 14 OOP and ADTs Some of the chapters of Nyhoff have a mixture of review and new material. Material Covered: Chapter 1 Software Development Chapter 2.1 A First Look at ADTs and Implementations Chapter 3.1 Data Structures, Abstract Data Types and Implementations Chapter 3.6 Procedural Programming Chapter 4.1 Procedural vs Object-Oriented Programming Chapter 9.1 The Evolution of Reusability and Genericity Chapter 14.1 A Brief History and Overview of OOP and ADTs Chapter 10.4 Algorithm Efficiency Chapter 6 Lists Chapter 7 Stacks Chapter 8 Queues Chapter 9.7 Other Standard Containers -- deque, stack and queue Chapter 9.8 Bitsets and Valarrays Chapter 10.5 Standard Algorithms in C++ Chapter 11 More Linking Up with Linked Lists Chapter 12 Searching: Binary Trees and Hash Tables Chapter 13 Sorting Chapter 15 Trees Chapter 16 Graphs and Digraphs Attendance: Students are responsible for their own attendance. The topics covered in lecture will be listed on the course website. Lab attendance is not required but is strongly encouraged. Academic Integrity Policy: Homeworks and labs may be worked on and discussed in groups. If the assignment is a group assignment, the group can turn in one assignment for the entire group. If the assignment is an individual assignment, each student must turn in their own code; no direct copying is allowed. Refer to the Academic Integrity policy printed in the campus catalog and class schedule. Computer Lab: The walk-in computer lab in Sci III 324 is available for use by students in this course outside of class time on a first come, first serve basis. Grading: Labs/Homework 40% Midterm 30% Final 30% Labs: Lab assignments will be posted on the course website. Labs are worth 10 points and usually involving writing a short programs. The labs are due on the day after the lab. Partial credit will be given for incomplete labs. Late labs will not be accepted. The lowest lab grade will not be counted towards the overall lab grade. Homework: Homework assignments and due dates will be posted on the course website. Homeworks are worth 20 points and consist of implementing and using certain data structures. Plan to spend 10 - 15 hours per homework assignment. Programs which do not compile may be given partial credit depending on the severity of the error. Late Policy for Homework: If there is no late policy posted on the homework assignment, then the homework may be turned in up to three days late. Saturday and Sunday combined count as only one day late (e.g. if the assignment is due Friday and you turn it in Sunday, it will be marked as one day late). If there is a late policy posted on the assignment, then that policy will apply for that particular assignment. Late homework will be marked down 10% for each day it is late. Labs/Homework Submission: Assignments are submitted by emailing the instructor all assignment code files from the Computer Science department server. Do not use RunnerMail or any other email method. If you believe you submitted the assignment on time but the instructor has not received the email, contact the instructor. Midterm: Tuesday April 27, 2010 during the lab timeblock. Final: Friday June 11, 2010 at 2:00 - 4:30pm