CSIS 310 Data Structures

Course Description

An introduction to the concepts of information organization and manipulation. The course covers basic sequential structures such as array-backed lists, singly- and doubly-linked lists, stacks, and queues, and moves on to more complex data structures such as trees, graphs, priority queues, and dictionaries. Programming projects are completed in one or more high-level languages.


Brian R. Snider
Office hours: Wood-Mar 222 (see schedule)





Students will:

Course Organization

This course will be programming intensive. Though many data structures are now provided by libraries or programming languages themselves, we will implement many of these structures in this course to gain programming experience and an understanding of basic programming principles. The data structures studied here form the fundamental building blocks used in developing complex programs.

I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

Programming assignments will be carried out in a prescribed high-level language. Instruction in the use of this language will be provided, but the focus of this course will not be on a particular programming language, but on language-independent data structures. You are assumed to have previous experience with one or more high-level languages and will be expected to independently acquire the language skills necessary for this course with a minimum level of instruction.

The course will include regular homework and/or programming assignments. There will be no credit given for late assignments (without an excused absence)—turn in as much as you can. Unless otherwise specified, no handwritten work will be accepted.

Reading should be completed before the lecture covering the material per the provided schedule. Not all reading material will be covered in the lectures, but you will be responsible for the material on homework and exams. Quizzes over the assigned reading may be given at any time.

Collaboration and Academic Integrity

See the GFU CS/IS/Cyber policies for collaboration and discussion of collaboration and academic integrity. Most students would be surprised at how easy it is to detect collaboration or other academic integrity violations such as plagiarism in programming—please do not test us! Remember: you always have willing and legal collaborators in the faculty. We encourage you visit office hours, ask questions in class, and use the class mailing list for assistance.

Unless otherwise specified (e.g., for a group assignment or project), you are expected to do your own work. This also applies to the use of online resources (e.g., StackOverflow, ChatGPT). Put simply: if you are representing someone else's work as your own, you are being dishonest. Any suspected incidents of academic integrity violations will be investigated and reported to the Academic Affairs Office as they arise.

Almost all of life is filled with collaboration (i.e., people working together). Yet in our academic system, we artificially limit collaboration. These limits are designed to force you to learn fundamental principles and build specific skills. It is very artificial, and you'll find that collaboration is a valuable skill in the working world. While some of you may be tempted to collaborate too much, others will collaborate too little. When appropriate, it's a good idea to make use of others—the purpose here is to learn. Be sure to make the most of this opportunity but do it earnestly and with integrity.

University Resources

If you have specific physical, psychiatric, or learning disabilities and require accommodations, please contact Disability & Accessibility Services as early as possible so that your learning needs can be appropriately met. For more information, go to georgefox.edu/das or contact das@georgefox.edu).

My desire as a professor is for this course to be welcoming to, accessible to, and usable by everyone, including students who are English-language learners, have a variety of learning preferences, have disabilities, or are new to online learning systems. Be sure to let me know immediately if you encounter a required element or resource in the course that is not accessible to you. Also, let me know of changes I can make to the course so that it is more welcoming to, accessible to, or usable by students who take this course in the future.

The Academic Resource Center (ARC) on the Newberg campus provides all undergraduate students with free writing consultation, academic coaching, and learning strategy review (e.g., techniques to improve reading, note-taking, study, time management). The ARC offers in-person appointments; if necessary, Zoom appointments can be arranged by request. The ARC, located on the first floor of the Murdock Library, is open from 1:00–10:00 p.m., Monday through Thursday, and 12:00–4:00 p.m. on Friday. To schedule an appointment, go to the online schedule at web.penjiapp.com/schools/george-fox, call 503-554-2327, email the_arc@georgefox.edu, or stop by the ARC. Visit arc.georgefox.edu for information about ARC Consultants' areas of study, instructions for scheduling an appointment, learning tips, and a list of other tutoring options on campus.

Health and Safety Considerations

Please review the entirety of the university's official COVID-19 web page for the most up-to-date community guidance.


Grading Scale

The final course grade will be based on:

Graded course activities will be posted to Canvas. Take care to read the specifications carefully and proceed as directed. Failure to pay attention to detail will often result in few to zero points being awarded on a given activity.

Grades will be updated as often as possible; you are encouraged to use the "What-If" functionality to calculate your total grade by entering hypothetical scores for various items.

Note that some graded activities in this course will be submitted via GitLab.

Tentative Schedule

Week 1 · 8/29


Week 1 · 8/31



Week 1 · 9/2

Abstraction & Encapsulation

Bailey: Ch. 1

Week 2 · 9/5

Art of Programming

FoCSCh. 1.1–1.3, 1.5

Week 2 · 9/7

Java Programming

Bailey: Appx. B

Week 2 · 9/9

Java Review: Classes & Instances

Bailey: Ch. 1

Week 3 · 9/12

Java Review: Inheritance; Generics; Javadoc

Bailey: Ch. 4

Week 3 · 9/14

Serve Day—no classes

Week 3 · 9/16

Robust Programming: Assertions & Exceptions

Bailey: Ch. 2
FoCSCh. 2

Week 4 · 9/19

Robust Programming: Unit Testing


Week 4 · 9/21


FoCSCh. 6.1–6.5

Week 4 · 9/23

ArrayList & Vector

Weiss: Ch. 1.5–1.6
Bailey: Ch. 3.1–3.5

Week 5 · 9/26

Introduction to Algorithm Analysis

Weiss: Ch. 1.1–1.3, 2.1–2.3
Bailey: Ch. 5.1–5.2

Week 5 · 9/28

Amortized Analysis

Weiss: Ch. 2.4
FoCSCh. 3.1–3.3

Week 5 · 9/30

Complexity Categories & Big-Oh Notation

Bailey: Ch. 5.3
FoCSCh. 3.4–3.6

Week 6 · 10/3

Midterm exam review

Week 6 · 10/5

Midterm exam

Weiss: Ch. 1–2
Bailey: Ch. 1–5
FoCS: Ch. 1–3
Misc: *

Week 6 · 10/7

Mid-semester break—no classes

Week 7 · 10/10

Midterm exam post mortem

Week 7 · 10/12

Abstraction & Interfaces

Bailey: Ch. 7

Week 7 · 10/14


Weiss: Ch. 3.1–3.3
Bailey: Ch. 8.1–8.2
FoCSCh. 2.2

Week 8 · 10/17

Abstract List

Weiss: Ch. 3.1–3.2
Bailey: Ch. 9.1–9.3
FoCSCh. 6.1–6.3

Week 8 · 10/19

List: Implementations

Weiss: Ch. 3.3–3.5
Bailey: Ch. 9.4–9.7
FoCSCh. 6.4

Week 8 · 10/21

List: Analysis

Bailey: Ch. 9.8–9.9

Week 9 · 10/24


Weiss: Ch. 2.4.4
Bailey: Ch. 11.1–11.2
FoCSCh. 6.5

Week 9 · 10/26


Weiss: Ch. 7.1–7.3, 7.6–7.7
Bailey: Ch. 6
FoCSCh. 2.8

Week 9 · 10/28


Weiss: Ch. 3.6.1–3.6.2
Bailey: Ch. 10.1
FoCSCh. 6.6

Week 10 · 10/31

Stack: Applications

Weiss: Ch. 3.6.3
FoCSCh. 6.7

Week 10 · 11/2


Weiss: Ch. 3.7
Bailey: Ch. 10.2
FoCSCh. 6.8

Week 10 · 11/4


Bailey: Ch. 10.4
FoCSCh. 6.11

Week 11 · 11/7

Midterm exam review

Week 11 · 11/9

Midterm exam

Weiss: Ch. 1–3, 7
Bailey: Ch. 1–10
FoCS: Ch. 1–3, 6
Misc: *

Week 11 · 11/11

Midterm exam post mortem

Week 12 · 11/14

Abstract Tree

Weiss: Ch. 4.1
FoCSCh. 5.1–5.5, 9.6–9.7

Week 12 · 11/16

Binary Tree

Weiss: Ch. 4.1.2
Bailey: Ch. 12.1, 12.4, 12.6–12.7
FoCSCh. 5.1–5.6

Week 12 · 11/18

Priority Queue; Heap

Weiss: Ch. 6.1–6.4; 6.9
Bailey: Ch. 13.1–13.7
FoCSCh. 5.9–5.10

Week 13 · 11/21

Map & Optimal Search

Weiss: Ch. 5.1–5.3
Bailey: Ch. 15.1–15.3
FoCSCh. 7.1–7.5

Week 13 · 11/23


Weiss: Ch. 5.4–5.6, 5.9
Bailey: Ch. 15.4–15.7
FoCSCh. 7.1–7.6

Week 13 · 11/25

Thanksgiving break—no classes

Week 14 · 11/28

Abstract Graph

Bailey: Ch. 16.1
FoCSCh. 9.1–9.2

Week 14 · 11/30

Graph: Implementations

Weiss: Ch. 9.1
Bailey: Ch. 16.2–16.4
FoCSCh. 9.3–9.4

Week 14 · 12/2

Graph: Algorithms

Weiss: Ch. 9.5
Bailey: Ch. 16.5–16.6
FoCSCh. 9.5–9.9

Week 15 · 12/5–12/9

Selected Topics

Week 16 · TBD

Final exam

Weiss: *
Bailey: *
FoCS: *
Misc: *

This page was last modified on 2022-08-24 at 16:58:51.

Copyright © 2015–2023 George Fox University. All rights reserved.