CS 240: Data Structures and Algorithms
James Madison University, Spring 2013

Course Information and Catalog Description

Students learn to implement and analyze elementary data structures and the basic complexity classes of algorithms that use strategies such as greedy algorithms, divide-and- conquer algorithms, and backtracking algorithms. This analysis is especially applied to problems in searching, sorting, and parsing.

Location: HHS 2208
Meeting Time: Section 1, MWF 9:05-9:55AM
Section 2, MWF 10:10-11:00AM
Prerequisites: CS/MATH 227 and a grade of "C" or better in CS 239
Course Web Page: http://w3.cs.jmu.edu/spragunr/CS240/
Required Textbook: Data Structures and Algorithms Using Python. Rance D. Necaise, Wiley, 2011

Instructor Information

Name: Dr. Nathan Sprague
Office: ISAT/CS 226
Office Phone: 568-3312
Email: spragunr@jmu.edu
Office Hours: http://w3.cs.jmu.edu/spragunr/schedule.html

You may use email to contact me. However, I encourage you to use Piazza to ask content related questions. You are welcome to call or stop by my office any time, with the understanding that I may or may not be available outside of my posted office hours.

Course Content and Goals

The focus of this course is on solving computational problems that involve manipulating collections of data. We will study a core set of data abstractions, data structures, and algorithms that provide a foundation for writing efficient programs.

Programming assignments in this course will be implemented using version 2.7 of the Python programming language. We will spend time at the beginning of the semester learning to program in Python. We will continue to develop programming skills such unit testing and documentation throughout the term.

At the conclusion of this course students will be able to:

Preliminary Course Schedule

A detailed schedule, including reading and homework assignments, is available on the course web page. That schedule will be updated throughout the semester and should be checked regularly.

Week(s) Topic
1-3 Introduction to Python
3-4 Complexity Analysis
5 Python List Implementation, Python Unit Testing
6 Linked Lists
7 Queues, Stacks and Recursion
8-11 Searching and Sorting, Recurrence Relations
12-13 Sets, Maps, Hashing
14-16 Trees and Heaps

Methods of Evaluation

Course grades will be based on two midterms and a final exam, in-class activities, homework assignments, programming projects, and quizzes. Assignment specifications and due dates will be posted to the course schedule page. The final grade will be computed as follows:

In-Class Activities and Quizzes 15%
Homework Assignments 15%
Programming Assignments 25%
Two Midterm Exams 30%
Final Exam 15%

In-Class Activities and Quizzes

In-class activities will typically involve breaking into small groups to answer questions or work on programming exercises. Most activities will be preceded by a readiness quiz.

Homework

Homework assignments will include both written work and programming exercises. Written answers should be prepared using a text editor, and will be graded on the basis of both correctness and clarity.

Programming Assignments

There will be approximately five programming assignments over the course of the semester. These must be written in Python. Programs will be graded on correctness, efficiency, documentation, and overall code quality. All submissions must conform to the CS240 Python Style Guide.

Course Policies

Attendance and Participation

Attendance is not required. However, regular attendance and fully engaged participation is expected. Your grade will be partially based on in-class assignments and quizzes, so attendance will affect your grade.

Academic Integrity

It is expected that your work in this course will comply with the provisions of the JMU honor code: http://www.jmu.edu/honor/code.shtml. It is not a violation of the honor code to discuss assignments and solutions with other students at a conceptual level. However, all of the work that you submit must be written by you, based on your own understanding of the material. Representing someone else's work as your own, in any form, constitutes an honor code violation. It is also a violation of the honor code to "render unauthorized assistance to another student by knowingly permitting him or her to see or copy all or a portion of an examination or any work to be submitted for academic credit."

A key component of academic integrity is giving credit where credit is due. If you receive assistance, either from another student or from some other source, you must acknowledge that fact. To that end, all programming and homework assignments submitted for this course must include a statement that acknowledges any assistance you received and must contain the statement: "I certify that this work complies with the JMU Honor Code."

For example, if I were submitting this syllabus for credit, I would include the following statement:

I certify that this work complies with the JMU Honor Code. I would like to acknowledge the assistance of Dr. Chris Fox. Dr. Fox provided me a copy of his CS240 Syllabus, which I have used as a template in preparing this document.
-Nathan Sprague

I will prosecute honor code violations if they come to my attention. If in doubt about what is allowed, ask me.

Missed and Late Assignment Policy

If you are unable to take an exam at the scheduled time because of illness or other problems, you must contact me beforehand to arrange to take the exam at a different time. Failure to make prior arrangements for a missed exam will result in a grade of 0 for the exam.

It will not be possible to receive credit for in-class work or quizzes that are missed due to absence. In recognition of the fact that absences are occasionally unavoidable, I will drop the two lowest scores in this category when calculating your final grade.

Homework and Programming assignments will be due at 9:00AM on the posted due-date. Late assignments lose 20% in value per weekday late (therefore assignments are worth 0 after 5 weekdays).

Unless there are extraordinary circumstances, I will not provide extensions for illnesses or other personal difficulties. Instead, you will have three "late days" which may be applied to any project or homework assignment (with some exceptions for assignments due at the end of the semester or immediately before exams). The use of a late day allows you to extend the deadline for an assignment by one weekday. You may apply all three days to a single assignment or distribute them across multiple assignments.

Adding/Dropping

Students are responsible for adding and dropping courses via MyMadison. The last day to add a course for Spring 2013 is Thursday, January 24, 2013 (signatures required after Tuesday January 15). The last day to drop a course for the Spring 2013 semester with a "W" grade is Friday, March 15th, 2013.

Disability Accommodations

If you need an accommodation based on the impact of a disability, you should contact the Office of Disability Services (Wilson Hall, Room 107, www.jmu.edu/ods, 540-568-6705) if you have not previously done so. Disability Services will provide you with an Access Plan Letter that will verify your need for services and make recommendations for accommodations to be used in the classroom. Once you have presented me with this letter, you and I will sit down and review the course requirements, your disability characteristics, and your requested accommodations to develop an individualized plan, appropriate for this course.

Inclement Weather Policy

This class will operate in accord with JMU's inclement weather policy available at http://www.jmu.edu/JMUpolicy/1309.shtml

Religious Observation Accommodations

I will give reasonable and appropriate accommodations to students requesting them on grounds of religious observation. If you require such accommodations you must notify me at least two weeks in advance.