Home CPSC 340

CPSC 340: Data Structures and Algorithms

Prerequisite:CPSC 225, CPSC 284, and a grade of C or better in CPSC 240.
Instructor:Ian Finlayson
Office:Farmer 043
Office Hours:TBA

Course Description

Continued study of data modeling and incorporation of abstract data types including linked lists, stacks, queues, heaps, trees, and graphs. Study of advanced sorting and searching techniques. Provides experience in the use of algorithm analysis. Continued study of program design, coding, debugging, testing, and documentation in an object-oriented higher level language.


Course Goals & Objectives


Course Materials and Structure

This class will be taught as an online, asynchronous course. The class material will be divided into ten weeks. Each week contains some number of lessons, and a lab exercise. During the week you will view the lesson videos, and then complete the lab exercise for it.

The class will also require you to complete a number of programming assignments. There will be five of these over the course of summer term, so you will have about two weeks for each one. They will require a little more work than the lab exercises and ask you to use the skills you're learning to tackle a larger problem.

Although this is an asynchronous online course, you will have an opportunity to interact with your fellow students. This will take place on the Canvas discussion boards. Each week I will post a discussion board question. These will ask you to reflect on course material, or do a short reading and respond to it. To earn credit for the weekly discussion board, you will need to thoughtfully respond to the prompt and also leave at least one comment on a fellow student's post.

I will send announcements to the class each week introducing the material for that week. I will also keep you updated on due dates for the assignments.

There is no textbook required for this class. All course materials will be provided online on this website.


Office Hours

Office hours this semester will be virtual. I will respond to questions over Canvas and email quickly during my office hours. If you would like to set up an appointment over Zoom, please let me know.

I also encourage you to post questions on the course material to the discussions section of our Canvas course. That way, all students in the class can see both the question and the answer.


Getting Help

You can access the quizzes by logging into https://canvas.umw.edu/ using your UMW account credentials. If you need technical assistance at any time during the course or to report a problem with Canvas you can:


Grading Policy

Your grade will be determined as follows:

The grading scale used for this course is as follows:

There is a 10% per day late penalty on assignments that are not turned in on time. Final grades will not be rounded up, and no extra credit opportunities will be given on an individual basis.

This course is focused on building data structures and writing algorithms ourselves. As such, some assignments will prohibit the use of certain built-in Java data structures such as ArrayList, Hashtable, etc. Use of these will result in loss of points on those assignments.


Honor Policy

Students are expected to conduct themselves in a manner consistent with the letter and spirit of the UMW Honor Constitution, as well as the CPSC department honor policy. For this class in particular:

For labs, collaboration is OK. The goal of the labs is to ensure you understand the concepts we are going over.

For projects, your work must be your own. You may discuss the project with others, but the code in your project must be entirely written by you. It is an honor code violation to copy code from someone else either by copy and paste or by transcription, or to copy from the web.

For exams, you must not copy off of another student, or the web.

If you have any questions or need clarification, please don't hesitate to contact me!


Disability Statement

The Office of Disability Services has been designated by the University as the primary office to guide, counsel, and assist students with disabilities. If you already receive services through the Office of Disability Services and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodations needs. Please bring your accommodation letter with you to the appointment. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise. If you have not contacted the Office of Disability Services and need accommodations, I will be happy to refer you. The office will require appropriate documentation of disability. Their phone number is 540-654-1266. The office is located in Seacobeck Hall.


Title IX Statement

The University of Mary Washington faculty are committed to supporting students and upholding the University's Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a "Responsible Employee" of the University, I must report to UMW's Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the below confidential resources. They can connect you with support services and help you explore your options. You may also seek assistance from UMW's Title IX Coordinator. Please visit http://diversity.umw.edu/title-ix/ to view UMW's Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.


Recording Statement

Classroom activities in this course may be recorded by student's enrolled in the course for the personal, educational use of that student or for all students presently enrolled in the class only, and may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the course instructor. All students are advised that classroom activities may be taped by students for this purpose. Distribution or sale of class recordings is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of copyright law. This policy is consistent with UMW's Policy on Recording Class and Distribution of Course Materials.


Class Schedule

WeekTopicNotesLab ExerciseAssignment Due
Week 1Course Introduction and ArrayLists
  1. Introduction to data structures and algorithms
  2. Arrays as a data structure
  3. Understanding memory
  4. Creating an Araylist
  5. Generics
Lab 1: Setup and DynamicList Methods
Week 2Linked Lists
  1. Linked Lists
  2. Linked Lists Continued
  3. Doubly Linked Lists
  4. Doubly Linked Lists Continued
Lab 2: Linked Lists vs. Array Lists Grayscale Image Converter
Week 3Stacks and Queues
  1. Stacks
  2. Stacks Continued
  3. Queues
  4. Queues Continued
Lab 3: Matching Parenthesis
Week 4Algorithm Analysis
  1. Algorithm Analysis
  2. Algorithm Analysis Part 2
  3. Algorithm Analysis Part 3
Lab 4: Big-O Exercise Playlist Manager
Week 5Hash Tables
  1. Hash Tables
  2. Hash Tables Continued
Lab 5: Hash Functions
Week 6Recursion
  1. Recursion
  2. Recursion Part 2
  3. Recursion Part 3
Lab 6: Recursive Powers Simple Sentiment Analysis
Week 7Searching and Sorting
  1. Search Algorithms
  2. Bubble Sort
  3. Merge Sort
Lab 7: Sort Comparison
Week 8Binary Search Trees
  1. Binary Trees
  2. Binary Search Trees
  3. Binary Search Tree Removal
  4. Binary Search Tree Analysis
Lab 8: Binary Search Tree Count Spell Checker
Week 9Heaps
  1. Heaps
  2. Heap Operations
Lab 9: Heapsort
Week 10Graphs
  1. Graphs
  2. Dijkstra's Algorithm
  3. Prim's Algorithm
  4. The Travelling Salesman Problem
Lab 10: Complete Graphs Course Scheduler

Copyright © 2024 Ian Finlayson | Licensed under a Attribution-NonCommercial 4.0 International License.