Fall 2009 - CS 163 - Data Structures - Syllabus
Please note that the syllabus will be adjusted during the quarter. I
reserve the right to change it at any time for any reason. You will see on
the Daily Record on the class homepage when a change has been made and are
expected to check the class Daily Record before every class:
Data abstraction with formal specification. Elementary algorithm analysis. Basic concepts of data and its representation
inside a computer. Linear, linked, and orthogonal lists; tree structures. Data structures are implemented as data
abstractions. Sorting and search strategies. Data management. Prerequisite: CS 162.
Prerequisites: CS 162, Introduction to Computer Science II.
Goals: To acquaint students with structures used when programming for the storage and
manipulation of data. The concept of data abstraction and the problem of building implementations
of abstract data types are emphasized. Both pure and stateful implementations of major
structures are presented and the advantages and disadvantages of each are discussed. Structures
include lists of several types, stacks, queues, trees, binary trees, B-trees and graphs.
Recursion and key transformation (hashing) are examined. Students are encouraged to examine
algorithms and to make judgments about the practical and social application of these algorithm
concepts to large scale programming projects; the course stresses the importance of quantitative
methods in designing software.
Upon the successful completion of this course students will be able to:
- Apply data abstraction in programming problems.
- Become proficient at evaluating the benefits and drawbacks of their design in terms of memory and run time efficiency.
- Program using classes and linear linked lists, circular linked lists, doubly linked lists, binary search trees, arrays of linear linked lists.
- Select the proper sorting algorithm for a problem.
- Design solutions to problems requiring complex data structures (combinations of lists, stacks, queues, hash tables, and trees).
- Apply data abstraction.
- Apply both static and dynamic implementations of lists, stacks, queues, hash tables and trees.
- Evaluate the performance tradeoffs between binary search, 2-3, 2-3-4, red-black, B-trees, and AVL trees.
- Build and traverse data structures to manage a simple graph.
- Apply recursion and key transformations.
- Make judgments about the practical and social application of algorithm concepts as they apply to large scale programming projects.
- Programming inn Haskell (8 hours)
- Data abstraction with axiomatic specification (3 hours)
- Elementary algorithm analysis, discuss application of concepts (3 hours)
- Data representation, algorithms for data structures (6 hours)
- Linear lists, linked lists (3 hours)
- Stacks, queues, applications (3 hours)
- Tree structures (6 hours)
- Sorting and search strategies (6 hours)
- Data management, disk files (2 hours)
- Application of social and ethical issues (2 hours)
- Lecture notes and other supplementary material will be posted
on-line via the daily record.
- Many documents will be formatted as Microsoft Word (*.doc) or in
Adobe Portable Document Format (*.pdf). Be sure you can access and
print these kinds of documents. Free resources for these
kinds of documents include Open Office, and Adobe Reader.
The class web-page: http://web.cecs.pdx.edu/~sheard/course/CS163/
is an invaluable resource. Be sure and learn how to use it effectively.
The class webpage maintains a "Daily Record" which catalogs every class activity.
Activities include lectures, reading assigments, writing assignments,
projects, etc. These are catalogued by day, both when they are assigned
and when they are due. You should check the daily record before every
We will use the blackboard system to turn in assignments. Be sure you have access
to the cs163 blackboard site when you login: https://bb.pdx.edu/webct/entryPageIns.dowebct
- PSU Odin account and registration in the course. These will give
you WebCT access, which is required for homework submission. If you donít have an account
you must get one immediately. You can do so online at:
https://www.account.pdx.edu/ After following those three steps you will
need to verify your identity at the help desk in the basement of Smith.
- Access to a computer with internet capability.
- Haskell Implmentation. A running implementation of Haskell. I recommend the Glasgow Haskell Compiler,
version 6.10.4 and use of the GHCI interface. You should get and install the Haskell Platform.
The Hugs interpreter will probably also work, but I would like for all students to use the same version
so we minimize compatibilty problems. I think the GHCI error messages are better.
Grading and Assignments
The course grade will be based upon a number of factors including
short daily homeworks, weekly programming assignments, longer programming projects,
a midterm, class participation (see below), and a final exam.
- 25% Class participation, including
- Attendance (6%)
- Comprehension Activities (quizzes, work-sheets, etc) (6%)
- Class Preparation activities (notes prepared from readings, short homeworks) (6%)
- Class Participation and Discussion (blackboard work, code reviews, team activitites) (7%)
- 20% Weekly programming assignments
- 20% Midterm
- 15% Project (be done as small teams of 2-3 persons)
- 20% Final
Work not turned in, unacceptable work or an unexcused absence from class when
the work was done receives no credit. Excused absences requires that
students make arrangements with the instructor to turn in missed work be turned
in as soon as possible. It is your job to make arrangements with me.
Readiness to learn means that you will come to class with questions
and insights to offer to others and be prepared to discuss the
assigned reading. We will be learning from each other and your
voice is important. Your participation grade will include
attendance, participation in class discussions, participation in
online discussions, and group work in class on smaller design
problems and case studies.
The following constitutes conduct proscribed by Portland State University for which a student or Recognized
Student Organization or group is subject to disciplinary action:
Academic dishonesty. Academic dishonesty is the act of knowingly or intentionally seeking to claim credit
for the work or effort of another person or participation in such acts. This includes, but is not limited to:
(a) cheating, (b) fraud, (c) plagiarism, such as word for word copying, using borrowed words or phrases from
original text into new patterns without attribution, or paraphrasing another writerís ideas; (d) The buying
or selling of all or any portion of course assignments and research papers; (e) Performing academic
assignments (including tests and examinations) for other persons; (f) Unauthorized disclosure or receipt of
academic information; (g) Falsification of research data; and (h) Unauthorized collaboration.
Source: Office of Student
Affairs at Portland State University, Code of Student Conduct and
Responsibility. A copy of the full code can be found at
A copy can be obtained from
The Office of Student Affairs at Smith Memorial Center Room 433.
The Writing Center at Portland State University has prepared
PLAGARISM: A Guide for Students to assist students in understanding
plagiarism and developing strategies on avoiding it. A copy of this
guide is available from Writing Center located in Cramer Hall 188F.
Please read it carefully. Or see
Scholarly work resulting from plagiarism or cheating will
receive no credit and all expectations of student conduct code will
be strictly enforced in class.
If you have a disability and are in need of academic accommodations,
please notify me (the instructor) immediately to arrange needed
support. For more information about the Disability Resource Center,
Back to the class web-page.