CS 240: Algorithms and Data Structures
James Madison University, Fall 2020

Course Information and Catalog Description

Location: Fully Online
Meeting Time: Section 1, MWF 9:05-9:55AM
Section 2, MWF 10:10-11:00AM
Prerequisites: Grades of "C-" or better in CS 227/MATH 227 or MATH 245, MATH 231 or equivalent, and CS 159.
Required Textbook: We will be using an interactive electronic textbook developed by the OpenDSA project. The book will be made available through Canvas.

Instructor Information

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

Questions related to course content should be asked through Piazza. The advantage of Piazza is that I can address common questions in one location, rather than answer the same question multiple times via email. I also encourage you to respond to each others' questions on Piazza; this provides everyone with more timely responses and provides a learning benefit to you as well. You may use email if you need to contact me directly.

My office hours this semester will be entirely online through Zoom. The meeting link will be made available through Canvas. If you need to meet with me outside of my posted hours, email me to make an appointment.

Course Content and Goals

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

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

Course Schedule

A detailed schedule including readings and other assignments will be made available on the course web page. Posted readings should be completed before the start of class. The schedule will be updated throughout the semester and should be checked regularly.

Course Structure and Grading

This course will make use of a (mostly) synchronous online format. The exact schedule will vary somewhat from week to week, but a typical week will be organized as follows:

Monday Class Wednesday Class Friday
Synchronous Zoom Meetings Involving:
  • Lecture
  • Peer-Instruction Quizzes
  • In-Class Activities
Synchronous Zoom Meetings Involving:
  • Lecture
  • Peer-Instruction Quizzes
  • In-Class Activities
Lab or Group Activity (possibly asynchronous)
Before Wednesday Class Before Friday Weekend
Muddiest point submission, OpenDSA readings Read Friday lab description
  • OpenDSA Readings
  • Submit Lab
  • Mastery Quiz

Synchronous Meetings

This course will involve synchronous online instruction. That means you are expected to (virtually) attend class at the posted time. You will need the ability to participate fully in a video meeting. This includes a space where you can speak and be heard without excessive background noise, sufficient Internet connectivity to send and receive video, and the ability to display written work (such as a camera on a cell phone or a movable web cam).

Synchronous class periods will involve a mix of lecture, quizzes and group work. My hope is to create an environment that is as close as possible to being together in the classroom, collaboratively engaging with course content. Most classes will involve a graded interactive component.

Camera Use

In general, I will expect you to have your camera on during class. There are several reasons for this: While I expect you to have your camera on when possible, there is no requirement that you keep your camera on at all times. I understand that there may be times when camera use may be inconvenient or inappropriate. If you have concerns about ever appearing on camera during class, please contact me so that we can discuss the situation.

Recording Class Sessions

I will be recording most class sessions. These will be posted to YouTube as "unlisted" videos and will be taken down at the end of the semester. Please let me know as soon as possible if you have concerns about being recorded. In the interest of privacy, it is prohibited to take screen shots during class sessions or to redistribute class videos.

Reading Quizzes and OpenDSA Exercises

Most assigned readings will include embedded quizzes or exercises. These will usually allow as many attempts as necessary for you to complete all questions correctly. These exercises should always be attempted before the start of class. If you are stuck on an exercise, you are free to postpone completing it until you have had a chance to ask questions in class. Exercises will have a final cutoff date approximately one week after the original deadline. No submissions will be accepted after that cutoff date.

It is important that you keep up with the readings in this course. You should not expect that every important point from the reading will be discussed in class.

Peer Instruction and In-Class Activities

Peer Instruction combines short lectures with multiple-choice questions that target common misconceptions. You will respond to each question twice. The first response is ungraded, and will be followed by a short discussion with your peers. You will then respond again individually for a grade (2 points just for answering, 3 points if your answer is correct) and we will discuss the results.

Other in-class activities will involve breaking up into small groups to answer questions or to work on programming exercises.

It will not be possible to receive credit for in-class work that is missed due to absence. In recognition of the fact that absences are occasionally unavoidable, I will drop 10% of the grades in this category when calculating your final score.

Muddiest Points

Each week I will ask you to submit a "muddiest point" reflection highlighting concepts that were unclear from the reading or lecture.

Lab Activities

Most weeks will include a programming lab focusing on that week's concepts. Each lab implementation is due by 11:00 PM Sunday for full credit. Late submissions will be accepted until 11:00 PM the following Thursday for a 50% grade reduction. Your lowest two lab grades will be dropped

All submissions should conform to the CS240 Style Guide.

Mastery Quizzes

Each week will end with a short quiz that should take approximately 20 minutes. You will have up to two attempts for each quiz. Part of the quizzes will be completed through Canvas, while the remainder will involve hand-written work. You will submit the hand-written work by taking a picture or scanning your paper and submitting a PDF to Canvas. Each quiz will have a 30-minute limit, though they should take less time than that. Each week, you have the option to retake the previous week's quiz. The higher score between the two attempts will be kept. Your lowest grade in this category will be dropped.

Final Assessment

The final assessment will consist of an extended programming lab and a mastery quiz. The programming portion must be completed prior to the class's designated Final Exam time, and the quiz portion will take place during this designated time.

Grade Calculation

The final course grade will be calculated according to the following distribution:

Reading quizzes and OpenDSA exercises 10%
Class Participation 15%
Muddiest Point Submissions 5%
Lab Activities 20%
Mastery Quizzes 40%
Final Assessment 10%

Letter grades will be assigned on the scale A=90-100, B=80-89, C=70-79, D=60-69, F=0-59, with potential minor adjustments after considering the overall performance of the class and actual distribution of numeric scores. I will use "+" and "-" grades at my discretion. I do not assign WP or WF grades except under extraordinary circumstances.

Course Policies

Attendance and Participation

Regular attendance and fully engaged participation is expected. Your grade will be partially based on in-class assignments, so attendance will affect your grade.

Academic Integrity

Your work in this course must 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." In the context of this course, this portion of the Honor Code means:

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 assignments submitted for this course must include a statement that acknowledges any assistance you received and must contain the statement: "This work complies with the JMU Honor Code."

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

This work complies with the JMU Honor Code. I would like to acknowledge the assistance of Chris Fox and Michael Kirkpatrick. Portions of this document were copied directly from their syllabi.
-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

Except for the exceptions described above, late assignments will not be accepted.

Adding/Dropping

Students are responsible for adding and dropping courses via MyMadison. Please consult the registrar's page of dates and deadlines for exact deadlines.

Disability Accommodations

If you need an accommodation based on the impact of a disability, you should contact the Office of Disability Services (Student Success Center, Room 1202, 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.

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.