Syllabus CS 301: Data Structures Spring 2015 Meeting Times Instructor Graders Text Lect: 12:00-12:50 M, Tu, Wed, HB 116 Labs: 12:00-12:50 Th, HB 203 Dr. Razvan Andonie, HB 219-B, Office hours Projects 1-3: Brandon Edwards, edwardsbra@cwu.edu Projects 4-5: Nathan Bloom, bloomn@cwu.edu William J. Collins Data Structures and The Java Collections Framework, Wiley, 2011. Objectives This course explores data structures, algorithms for manipulating them, and the practical problems of implementing those structures in real programming languages and environments. Attention is paid to the analysis of algorithms to characterize their worst and average case requirements for running time and memory. Perhaps more than any other course, CS 301 should expand the students! tool box of basic techniques for manipulating data at both the conceptual and the concrete level. At the conceptual level, the student will see a broad selection of standard practices and approaches used in program design. At the concrete level, the student will begin what should be a career-long practice of accumulating useful, reusable code units. The basic organization of this course will proceed through the classic data structures and Java-based containers, exploring the use and implementation of each in turn. Motivating problems will be drawn from a variety of application areas. One of the distinctive features of this course is its emphasis on the Java Collections Framework, part of the java.util package. The collection classes implement most of the data structures studied, such as resizable array class, a linked-list class, a balanced binary-search-tree class, and a hash-map class. Learning Outcomes On completion of this course, the student will have: Applied complexity measures to basic algorithms. The student will be able to give a general description of how these complexity measures are obtained. A basic understanding of an abstract data type. The student will be able to demonstrate the association between ADT concepts and basic Java constructs. Applied ADT, both user defined and from the Java Collections Framework, in various applications. Grading
Exams (2-20% each) 40% Lab Projects 60% Grade Distribution 95-100 A 90-94 A- 87-89 B+ 83-86 B 80-82 B- 77-79 C+ 73-76 C 70-72 C- 67-69 D+ 63-66 D 60-62 D- 0-59 F If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered. Lectures, Projects, and Software The slides for lectures and the lab projects can be found in the shared directory on Neve. Be prepared to spend about 10 hours for each project. Available in Hebeler Labs are J2SE Development Kit (JDK) and NetBeans IDE from Sun Microsystems. NetBeans is an open source ntegrated development environment (IDE) for writing, compiling, testing, and debugging J2SE and J2EE applications. Using the Java software at home: Download the JDK with Netbeans! (Java SE Development Kit and NetBeans IDE Cobundle for Windows). Resources Book Resources from the author. (source code from the text, applets, Errata, lab experiments). The Source for Java Technology: jguru, Code Conventions for the JavaTM Programming Language, Training and Tutorials, NetBeans IDE Quick Start Guide and Video Tour, Java!s Collections. Course Schedule Date Topic Readings 3/31 Introduction Syllabus 4/1 Introduction to Java Ch. 0 4/6 Object-Oriented Concepts Ch. 1 4/7 Additional Features of Java Ch. 2
4/8 Additional Features of Java Ch. 2 4/13 Analysis of Algorithms Ch. 3 4/14 Analysis of Algorithms Ch. 3 4/15 4/20 4/21 4/22 4/27 Analysis of Algorithms, HW1 (due next class) Analysis of Algorithms - Exercises The Java Collections Framework Faculty Development Day / Study Day for Students The Java Collections Framework Ch. 3 Ch. 3 Ch. 4 No classes Ch. 4 4/28 Recursion Ch. 5 4/29 Recursion Ch. 5 5/4 Midterm Exam (closed book) Ch. 1-5 5/5 Array-Based Lists Ch. 6 5/6 Array-Based Lists Ch. 6 5/11 Linked Lists Ch. 7 5/12 Linked Lists Ch. 7 5/13 Linked Lists Ch. 7 5/18 Linked Lists Ch. 7 5/19 Stacks Ch. 8 5/20 Stacks: Postfixed and Prefixed Notations Ch. 8 5/25 Memorial Day No classes 5/26 Queues: Simulation Application Ch. 8 5/27 Binary Trees Ch. 9 6/1 Binary Trees Ch. 9 6/2 Methods of Mathematical Proofs Appendix 2.5 and Methods of Proof 6/3 Review Ch. 1-9
6/8 Final Exam (closed book): noon! 1:30 Ch. 1-9 Laboratory Schedule Date Topic Item Due 4/2 Introduce Project 0 (not graded) 4/9 Introduce Project 1 Project 0 due at the beginning 4/16 Project 1 4/23 Introduce Project 2. Read: http://netbeans.org/kb/docs /java/junit-intro.html Project 1 due at the beginning 4/30 Introduce Project 3 Project 2 due at the beginning 5/7 Project 3 5/14 Introduce Project 4 5/21 Introduce Project 5 5/28 Project 5 Project 3 due at the beginning Project 4 due at the beginning Project 5 due at the end of this class 6/4 Discuss Project Honor Code: All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. The following text should appear on all assignments:!i pledge that I have neither given nor received help from anyone other than the instructor for all program components included here.! First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment, an incident letter will be placed on file in the Computer Science Department, and the matter referred to the Computer Science Department Chair. Class Attendance: Class attendance is expected and recorded. ADA Statement: Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.
Caveat: The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.