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.
Students will:
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.
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.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.
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 in programming—please do not test us! Remember: you always have willing and legal collaborators in the faculty.
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 but intensional for your own benefit. The only way for you to learn is by doing the work.
To be clear, do not:
I may require an oral defense for any assignment at my discretion. This is a brief meeting where you explain and defend your submitted work. This process mirrors the business world, where professionals routinely present and defend their analyses to supervisors and clients, and ensures your work represents authentic learning. If required, you must schedule and complete your defense within 72 hours of notification to receive a non-failing grade; without the defense, you will receive a zero on the assignment. If the work product is a group submission, all team members must be present at the meeting. Routine scheduling conflicts (work, other classes, social commitments) do not qualify for extensions. Be prepared to summarize your arguments, explain your methodology, defend your conclusions with evidence, and answer questions about your work and your problem solving process. You should be ready to articulate and defend the rationale behind your work.
Besides EYS, I am always available to discuss the Christian faith if you have any questions or doubts. Send me an email, come by my office hours, or talk to my after class, Christ is the reason I am at GFU, I always have time to talk about faith.
The final course grade will be based on:
Week 1 · MonIntroduction
|
Week 1 · WedExpectations
Misc: Examples |
Week 1 · FriAbstraction & Encapsulation
Reading: Ch. 1 |
Week 2 · MonArt of Programming
|
Week 2 · WedJava Programming
Reading: Appx. B |
Week 2 · FriJava Review: Classes & Instances
Reading: Ch. 1 |
Week 3 · MonJava Review: Inheritance; Generics; Javadoc
Reading: Ch. 4 |
Week 3 · WedServe Day—no classes
|
Week 3 · FriRobust Programming: Assertions & Exceptions
Reading: Ch. 2 |
Week 4 · MonRobust Programming: Unit Testing
Misc: JUnit |
Week 4 · WedArrays
|
Week 4 · FriArrayList & Vector
Reading: Ch. 3.1–3.5 |
Week 5 · MonIntroduction to Algorithm Analysis
Reading: Ch. 5.1–5.2 |
Week 5 · WedComplexity Categories & Big-Oh Notation
Reading: Ch. 5.3 |
Week 5 · FriAmortized Analysis
|
Week 6 · MonMidterm exam review
|
Week 6 · WedMidterm exam
Reading: Ch. 1–5 |
Week 6 · FriMidterm exam post mortem
|
Week 7 · MonAbstraction & Interfaces
Reading: Ch. 7 |
Week 7 · WedIteration
Reading: Ch. 8.1–8.2 |
Week 7 · FriMid-semester break—no classes
|
Week 8 · MonAbstract List
Reading: Ch. 9.1–9.3 |
Week 8 · WedList: Implementations
Reading: Ch. 9.4–9.7 |
Week 8 · FriList: Analysis
Reading: Ch. 9.8–9.9 |
Week 9 · MonSearching
Reading: Ch. 11.1–11.2 |
Week 9 · WedSorting: Insertion, Selection, Merge Sort
Reading: Ch. 6.1–6.4 |
Week 9 · FriSorting: Quick Sort
Reading: Ch. 6.5, 6.7 |
Week 10 · MonStack
Reading: Ch. 10.1 |
Week 10 · WedQueue
Reading: Ch. 10.2 |
Week 10 · FriDeque
Reading: Ch. 10.4 |
Week 11 · MonMidterm exam review
|
Week 11 · WedMidterm exam
Reading: Ch. 6–11 |
Week 11 · FriMidterm exam post mortem
|
Week 12 · MonAbstract Tree
Reading: Ch. 12.1 |
Week 12 · WedBinary Tree
Reading: Ch. 12.4, 12.7 |
Week 12 · FriBinary Tree: Traversals
Reading: Ch. 12.6 |
Week 13 · MonPriority Queue; Heap
Reading: Ch. 13.1, 13.3 |
Week 13 · WedBinary Min-Heap
Reading: Ch. 13.4 |
Week 13 · FriThanksgiving break—no classes
|
Week 14 · MonHeap: Analysis
Reading: Ch. 13.4 |
Week 14 · WedAbstract Graph
Reading: Ch. 16.1 |
Week 14 · FriDirected Graph: Implementations
Reading: Ch. 16.2–16.3 |
Week 15 · MonMaps & Hashing
Reading: Ch. 15.1–15.4 |
Week 15 · WedDirected Graph: Analysis
Reading: Ch. 16.4–16.5 |
Week 15 · FriFinal exam review
|
Week 16 · TBDFinal exam
Reading: Ch. 12–16 |
This page was last modified on 2026-09-27 at 21:40:03.
George Fox University · 414 N Meridian St · Newberg, Oregon 97132 · 503-538-8383
Copyright © 2018–2026 George Fox University. All rights reserved.