Loyola College in Maryland

CS 302.01 - Data Structures & Algorithms II
Spring 2005


Loyola College > Department of Computer Science > CS 302
Lectures | Homework Assignments | Programming Assignments | Examples

News

1/19/05: /cs302 (the directory for the class) is currently only mounted on snoopy. I will have George make the directoy available from the peanuts machines; however, for right now, please log into snoopy to copy class material.

2/6/05: The date of the first midterm has been moved to February 18.

2/20/05: Syllabus has been updated to reflect the current state of the class.

2/25/05: Programming assignment 3 has been posted in draft form. Only the last part has not been finalized. I plan to give you more instructions on how exactly you will gather the data.

4/3/05: PassageProcessor.cpp contained a bug in the retrieval. All one word queries find no relevant documents. The problem is now fixed.

5/8/05: Office Hours during finals: Monday, May 9 from 11 to 2.


Instructor: Dr. Dawn Lawrie
Office: DS 125b
Work Phone: (410)617-2140
Office Hours: M 2-4, W 12-2, or by appointment
e-mail: lawrie<at>cs<dot>loyola<dot>edu

Course Home Page: http://www.cs.loyola.edu/~lawrie/CS302/S05/index.html

Class Meeting: Lecture MWF 9-9:50 in KH 006

Prerequisites: CS 301

Required Text: Sedgewick, Robert Algorithms in C++, Parts 1-5, Addison-Wesley: Boston, MA, 1998.
Supplemental Reference: Kernighan and Ritchie, The C Programming Language, Prentice-Hall, 1988.

Catalog Description:
A continuation of CS301. More advanced data structures are designed, analyzed, and created using an object-oriented language. File structure, access, and processing are studied.* More UNIX-based tools are introduced.
* This is course will spend less time studying file structures then in past versions of this class. (You will not be doing the buffer problem.) Instead we will focus on graphs and their algorithms.

Specific Educational Objectives of the Course:
At the completion of the course, the student will:

Conduct of the Course:

  1. Your success in this course is my number one priority. Should you need extra help, please see me during office hours or make an appointment for a mutually convenient time. Do NOT wait until you are totally lost and have failed a test or quiz. Your success is my first priority. Even if I am busy or seem distracted, please know that I am determined to be available to you for your assistance.
  2. Lectures will be used to discuss material in the text book and to apply it to problems.
  3. Written assignments will be given via problem sets weekly. Problem sets will be graded. All assignments are due at the start of the regular class period. Late homework will NOT be accepted. Assignments that are not print-outs should be submitted on standard size loose-leaf paper. Please be legible and neat. Illegible and/or sloppy assignments will NOT be graded.
  4. Six projects will be completed during the course of the semester. Many of these projects will build on the previous project so keep this in mind as you design and write code. It will be very important to have a working project at the due date. If you do not complete the project to your satisfaction, I will be happy to help fix any remaining errors so you are not struggling with bug fixes when you start working on the next project.
  5. Two midterm exams and a final exam will also be used to evaluate your progress.
  6. Attendance is necessary for success in this course. You are responsible for material presented and assignments disseminated during absences. Normally, make-up exams are not administered and LATE ASSIGNMENTS ARE NOT ACCEPTED. If you will miss a class period, please email me with the reason that you will not be in class.
  7. The class web-site will be used to make announcements and post course materials. Be sure to check it regularly.
  8. This is a "hands-on" course. Therefore, besides reading the text, attending classes, taking good notes, completing assignments and studying, to be successful in this course, you will need to spend a substantial amount of time in the lab or at your computer. Many students find they need five to eight such hours per week. Try to avoid pulling "all-nighter" to complete programming assignments. (I can tell me you do.) No one thinks clearly or uses time effectively when he or she is exhausted. Start planning a programming assignment when it is first distributed. Remember the Linux Lab (DS130) is usually quiet and not crowded.
  9. All assignments are to be completed by the student as an individual unless otherwise noted. Collaboration on algorithm design is encouraged. However, sharing code or answers to exercises is NOT allowed. (See below.)
Academic Integrity:
Loyola College Honor Code Statement:

"The Honor Code states that all students of the Loyola Community have been equally entrusted by their peers to conduct themselves honestly on all academic assignments.

The students of this College understand that having collective and individual responsibility for the ethical welfare of their peers exemplifies a commitment to the community. Students who submit materials that are the products of their own minds demonstrate respect for themselves and the community in which they study.

All outside resources or information should be clearly acknowledged. If there is any doubt or question regarding the use and documentation of outside sources for academic assignments, your instructor should be consulted. Any violations of the Honor Code will be handled by the Honor Council."

The Honor Code as is pertains to this class:
In general, any copying of an assignment, whether electronically or by hand is considered plagiarism. Students submitting non-trivial projects with identical structure will be considered to have acted dishonestly. Such students may be referred to the Honor Council for disciplinary action. At the very least, two or more students presenting assignments identical in all important aspects will share the points from a single grade.

Student Athletes:
If you are a student athlete, please provide me with your travel and game schedule indicating when you will need to miss class to participate in athletic events. While travel for athletics is an excused absence, you will need to make up any missed work.

Learning Disabilities:
To request academic accommodations due to a disability, please contact the Disability Support Services Office at (410)617-2062. If you have a letter from their office indicating that you have a disability which requires academic accommodations, please present the letter to me so we can discuss the accommodations that you might need in this class.

Grading:

  1. Tests are announced. Consult the class schedule.
  2. Normally, a homework assignment is due at the beginning of each class. If an assignment is collected, it is assigned a value of 10-20 points. Generally, half the points are awarded for completeness and half for correctness. Correctness is determined by my checking all or a portion of the assigned exercises.
  3. Programming assignments will be given periodically. Generally 10 days to 2 weeks are provided for the completion of a programming assignment. Late programming assignments are NOT accepted, unless so stated when the assignment is given. Electronic versions of programming assignments are normally due at midnight of the specified day. Hard copy print outs of code are due at the beginning of the following class. See class schedule for dates. 4. Please keep a record of the points you have earned. This will enable you to calculate your current average and correct errors on my part.

Final Grade Distribution:
Final letter grades will be no worse than the following table.

AA-B+BB-C+CC-D+D
93% 90% 87% 83% 80% 77% 73% 70% 67% 60%


Class No. Date Topic Reading Assignment Due
1 1/19 Introduction to the course
Going back in time: C
Syllabus
2 1/21 C language: memory allocation
3 1/24 C and C++ file processing
4 1/26 Binary Files
5 1/28 Pointers
6 1/31 More Pointers PA1 due
7 2/2 Function Pointers
8 2/4 Memory Deallocation
9 2/7 Templates and Object Pointers
10 2/9 Hash Functions Chapter 14, Section 1
11 2/11 Resolving Collisions in Hash Tables Chapter 14, Sections 2-6
12 2/14 Introduction to Graphs Chapter 17, Sections 1-2
13 2/16 Graph Representations Chapter 17, Sections 3-6 PA2 due
14 2/18 Exam 1
15 2/21 Introduction to Graph Algorithms Chapter 17, Sections 7-8
16 2/23 Graph ADT
17 2/25 Graph ADT (Adjacency Matrix)
18 2/28 Graph ADT (Adjacency Lists)
19 3/2 Graph Generators
20 3/4 Shell Scripts
21 3/14 Working with Scripts
22 3/16 Non-trivial Graph Algorithms PA3 due
23 3/18 Depth First Search
24 3/21 DFS Applications
25 3/23 DFS Applications and BFS
26 3/30 Generalized Search and Graph Analysis
27 4/1 Exam 2
28 4/4 Minimum Spanning Trees Reading: 20-20.1
29 4/6 Underlying Principles of MST Algorithms 20.2-20.3 PA 4 due
30 4/8 Kruskal's and Boruvka's Algorithms 20.4-20.5
31 4/11 Comparisons 20.6-20.7
32 4/13 Digraphs and Connectivity 19-19.1
33 4/15 DFS in Digraphs 19.2
34 4/18 Reachability and Tranisitive Closure 19.3
35 4/20 DAGS and Topological Sorting 19.5-19.6 PA 5 due
36 4/22 Shortest Paths 21-21.1
37 4/25 Dijkstra's Algorithms 21.2
38 4/27 All pairs-shortest path 21.3
39 4/30 B+ Tress 16-16.3
40 5/2 Extendible Hashing 16.4

Exams: Friday, February 18th and Friday, April 1st.

FINAL EXAM: Wednesday, May 11th at 9am Room KH006. *If you want to change the date, all students in the class must sign a paper that includes the new day and time. No requests will be considered after the Easter break.