CSIS 310 - Data Structures

Course Description

An introduction to the concepts of information organization, and manipulation. The course covers basic sequential structures such as lists, 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.

Instructor

Dr. David M. Hansen

Texts

Required
  • Mark Allen Weis Data Structures and Algorithm Analysis in Java 3rd Ed. (texbook is shared with CSIS430)

  • Bailey, Duane A. Java Structures 2.645 Ed.. (Available online only; no hardcopy available)

Recommended (not available from bookstore - but also online)

Objectives

Students will:
  • understand how to build and use basic data structures including:
    • Lists
    • Stacks
    • Queues
    • Trees
    • Graphs
    • Priority Queues
    • Dictionaries (maps)
    • be introduced to basic computational complexity and algorithm analysis as applied to data structures
    • be able to choose, implement, and use data structures appropriate to a given problem
    • be capable of using these basic data structures to build more complex data structures and complete programs to solve specific problems

By the end of this class I hope you'll find that

  1. you never worked harder,
  2. never learned more, and
  3. can't wait for more.

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.
-- Linus Torvalds

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 acquire the language skills necessary for this course with a minimum level of instruction.

The course will include regular homework and programming assignments (please see my comments on collaboration and programming). Assignments are due before 11:59pm on the due date; there will be NO CREDIT given for late assignments (without an excused absence) - turn in as much as you can.

Reading assignments should be completed before the lecture covering the material. 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.

The Vision Statement of the Computer Science and Information Systems majors states that our students are distinctive by: "Bringing a Christ-centered worldview to our increasingly technological world." As one step towards the fulfillment of this objective, each semester, we will identify an influential Christian writing to be read and reflected upon by students in our classes throughout the term. This will be treated as an official component of every course and will be uniquely integrated and assessed at our discretion, generally as a component of the quiz grade. See the semester's reading schedule. In addition, regular meetings will be scheduled throughout the semester that can be attended for Chapel credit.

It is my hope that students will not view this as one more task to complete, but as a catalyst for continued discussion ultimately leading to a deeper walk with Christ.

The chief end of man is to glorify God, and enjoy Him forever.
(Westminster Confession)

If you have specific physical, psychiatric, or learning disabilities and require accommodations, please contact the Disability Services Office as early as possible so that your learning needs may be appropriately met. You will need to provide current documentation of your disability to the Disability Services Office. For more information, go to ds.georgefox.edu or contact Rick Muthiah, Dean of the Center for Teaching and Learning (ext. 2314)

Grading

Grading Scale

The final grade will be based on:

Tentative Schedule

Week DateTopic Reading
Weiss Bailey Foundations of CS
1 8/28 Introduction      
8/30 What to Expect Examples & Rubric
9/1 Abstraction & Encapsulation   1  
2 9/4 Art of Programming     1.1-1.3, 1.5
9/6 Java Programming   Appendix B  
9/8 Java Review - Classes & Instances   1  
3 9/11 Java Review - Inheritance   4  
9/13 Serve Day Matthew 25:40
9/15 Java Review - Potpourri      
4 9/18 Robust Programming via Assertions & Exceptions   2 2
9/20 Testing JUnit
9/22 Arrays     6.1-6.5
5 9/25 ArrayList & Vector 1.5-1.6 3.1-3.5  
9/27 Introduction to Algorithm Analysis & Recursion 1.1-1.3; 2.1-2.3 5.1-5.2  
9/29 Amortized Analysis 2.4   3.1-3.3
6 10/2 Complexity Categories & Big-Oh   5.3 3.4-3.6
10/4 Exam I
10/6 Mid-Semester Break Matthew 11:28
7 10/9 Abstraction & Interfaces   7  
10/11 Iteration 3.1-3.3   2.2
10/13 Implementing Iteration   8.1-8.2  
8 10/16 Abstract List 3.1-3.2 9.1-9.3 6.1-6.3
10/18 List Implementations 3.3-3.5 9.4-9.7 6.4
10/20 List Analysis   9.8-9.9  
9 10/23 Search 2.4.4 11.1-11.2 6.5
10/25 Sorting 7.1-7.3, 7.6-7.7 6 2.8
10/27 Stack 3.6.1-3.6.2 10.1 6.6
10 10/30 Stack Applications 3.6.3   6.7
11/1 Queue 3.7 10.2 6.8
11/3 Deque   10.4 6.11
11 11/6 Abstract Tree 4.1   5.1-5.5, 9.6-9.7
11/8 Exam II
11/10 Binary Tree 4.1.2 11.1-11.6 5.6
12 11/13 Binary Search Tree 4.3 14.1 5.7-5.8
11/15 Priority Queue 6.1-6.2, 6.4 13.1-13.3 5.9
11/17 Heap 6.3, 6.9 13.4-13.7 5.10
13 11/20 Optimal Search 5.1-5.3 15.1-15.3 7.1-7.5
11/22 Hashing 5.4-5.6, 5.9 15.4-15.7 7.6
11/24 Thanksgiving Psalm 111
14 11/27 Abstract Graph   16.1 9.1-9.2
11/29 Graph Implementations 9.1 16.2-16.4 9.3-9.4
12/1 Graph Algorithms 9.5 16.5-16.6 9.5-9.9
15 12/4 TBD      
12/6 Java Collections Java API
12/8 Review      



This page was last updated .
For questions or comments about this page, please email the webmaster.