CSCI 260: Data Structures and Algorithms
Fall 2022
Course Outline
Professor Gara Pruesse
Vancouver Island University
Prerequisites:
Math 123 and CSCI 161 are prerequisites for this course. If you
do not have the prerequisites,
you will be deregistered.
In rare cases where there is a demonstrated background, the instructor may
waive a prerequisite, but only in cases where the student demonstrates they
have the prerequisite knowledge. These two courses are prerequisites for a good reason!
Course Motivation and overview
This course develops the topics of algorithms, their data structures, and their analysis; it builds on the Abstract Data Types (ADT's) introduced in CSCI 161, and
techniques of efficiency analysis, utilizing Big-O notation introduced in Math 123.
It is assumed the student has a reasonable mastery of C++
or a similar high level language, as the course will involve substantial
work implementing the data structures under discussion. C++ will
be the language of implementation. Students whose previous experience
has been in Java or another imperative language are advised to
familiarize themselves with C++, with memory allocation and pointers
in particular. As well, the student
should have a familiarity with the discrete mathematical concepts
introduced in Math 123, such as graphs, Big-O notation, logarithms and powers,
counting, and logic.
The course will focus on the concepts of abstract data types (ADTs), developing correct
and efficient algorithmic solutions to computational problems, analysis of
time and space efficiency, and proving correctness of algorithms.
Course materials
- Text:
There is no printed text required for the course. Students should take good notes,
and web materials will be posted to the site indicated above.
Students may nevertheless find books useful. A number of Data Structures and Algorithms
books are available for loan from the Computing Science bookcase (outside
office 211 in Building 315).
Also, the following is an excellent auxilliary, and more advanced, text: Cormen, Leiserson, Rivest and Stein's Introduction to Algorithms(ISBN 0-07-013151-1). An earlier edition
(minus author Stein) is in the VIU library.
Two other good texts are the book Algorithms by Robert Sedgewick and Kevin Wayne, and Data Structures, Algorithms, and Applications in C++ by Sartaj Sahni.
-
Web texts
The following text for a similar course
online and freely-available:
Timetable
- Lectures: Mo We 14:30-16:00, Th 16:00-17:00 Bldg 370, Room 111
- Labs in 315/115: Th 12:30-13:30 OR 14:30-15:30.
- Office Hours: Mon 12:00-1:00, We 16:00-17:00
Assessment:
To pass the course, the student must:
-
achieve an average of 50% or greater on the weighted average of the midterms,
submitted material (labs and assignments) and the final exam; and
-
achieve a grade of 50% or greater on the final exam; and
-
attend the labs and submit the lab work, and pass the graded lab assignments.
Note that it is a requirement of Science courses that students attend the labs --
a student will not pass the course if they do not attend the labs. This means all the labs. Furthermore, lab submissions have marks associated with them that form part of their
grade calculations.
There will be three midterms, each worth 15%; the lowest mark will be dropped,
and the total midterm mark will comprise 30% of the course mark. All midterms will be given in tutorial (i.e., in the Thursday class time).
- Midterm 1: October 6
- Midterm 2: October 27
- Midterm 3: November 24
Grade:
-
30% midterms
-
40% final
-
30% submitted assignments including programs
Submitting material
Programs must work on the csci linux platform. Students should submit their
text files containing their code according to the procedure that will be
given in the lab. Git will be used.
Topics to be covered
Throughout the course, we will be using, with increasing sophistication,
methods
of: analyzing problems; devising Abstract Data Types (ADT's) to capture the problem; devising algorithms and data structures to implement solutions to the
ADT's; proving the correctness of the algorithms; and analyzing the time- and space-complexity of the resulting algorithms.
This will
involve mathematical proof techniques, which will be summarily reviewed
in the tutorial.
We will also be developing an understanding and facility with (a) common and
useful data abstraction structures, such as graphs, trees, and lists; and (b)
algorithmic approaches to solve problems.
Specific algorithms and data structures topics to be covered are:
-
Review: logarithms, proof techniques
-
Big Oh notation; Big-Omega, Big-Theta.
-
The Master Theorem
-
Analysis of algorithms: straight-line code, loops, recursion
-
Algorithm correctness; proofs of, using mathematical induction.
-
Abstract Data Types
-
Dictionary ADT
-
Hashing
-
Binary Search Trees and balancing techniques
-
B-Trees
-
Divide and Conquer Algorithms and their analysis
-
Searching and sorting algorithms
-
Graph representations
-
Graph traversal algorithms: breadth-first and depth-first search
-
Shortest paths algorithms: Dijkstra
-
Dynamic Programming
-
Greedy Algorithms
-
Union-Find algorithms
See the week by week topics schedule, which will also provide links to web materials.
Attendance:
Students are expected to attend scheduled lectures, laboratories, field trips, seminars, examinations, practica and work experience. The University reserves the right to cancel registration in any course or program because of lack of attendance (where attendance is deemed by the Department to be important).
VIU reserves the right to cancel any student’s registration in a course if the student does not attend the first scheduled session of a course and does not notify the instructor or area secretary.
Absenteeism
Students are responsible for all material presented and discussed in lecture, in addition to assigned readings and homework problem. It is entirely the students' responsibility to recover any information or announcements presented in lectures from which they were absent by speaking to their fellow students.
Students who are absent should contact their instructors as soon as possible and report to their instructors again on return to classes. Extended absence from courses or program should be discussed with each instructor or program coordinator involved. Students are responsible for contacting their instructors, either directly or through the assistance of staff in the office of the appropriate Dean, as soon as an extended absence becomes apparent.
Specific regulations exist for absences due to illness, death in the family, religious observances, and VIU official sporting teams. In cases of religious observance and sporting events, discussion on the impact of your absence with your instructor need to occur at least two-weeks in advance of the absence.
Absence Due to ...
Attendance
Policy 96.05
Academic Integrity Statement
It is expected that students will know and abide by the VIU's policy on Student Academic Code of Conduct (Policy 96.01)
Standards of Academic Integrity
Include, but are not limited to:
-
independently producing work submitted under their own name;
-
all graded work needs to be written independently, unless expressly instructed to collaborate.
-
properly and appropriately referencing all work;
-
identifying all collaborators in work;
-
completing examinations without giving or receiving assistance, excepting those students requiring assistance due to a documented accessibility issue;
-
the use of tutorial services, including online sites, to solve graded work is strictly prohibited.
-
the use of online sites and apps for solving mathematical problems on graded work is strictly prohibited.
-
respecting the integrity of examination materials and/or the examination process; and respecting the integrity of computer security systems, software copyrights and file privacy of others.
Any academic misconduct will be dealt with in
accordance with policies in effect at VIU (96.01) and may result in a final grade of F,
a report to the Dean and a permanent record in the student’s academic file. Multiple records may result in suspension from the University.
Academic Integrity
Student Academic Code of Conduct
Policy 96.01
Lab & Lecture Pass Requirement
Students will receive a single, final grade assessing their performance in the lab and lecture components combined. Students must achieve separate passing grades in the laboratory component and in the lecture component of the course in order to be able to earn an overall passing grade in the course.
As per Policy 95.05, if all laboratory grades are known prior to the final examination, students who have not obtained a grade of at least D may not be permitted to write the examination.
Laboratory Work
Policy 95.05
Gara Pruesse's Homepage
Computing Science Homepage
Vancouver Island University Homepage