Loyola College in Maryland

CS 302.01 - Data Structures & Algorithms II
Spring 2008


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

News


Instructor: Dr. Dawn Lawrie
Office: DS 125b
Work Phone: (410)617-2140
Office Hours: MW 2-3:30, or by appointment (use email)
e-mail: lawrie<at>cs<dot>loyola<dot>edu

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

Class Meeting: Lecture MWF 1-1:50 in SH 102

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.

Other Resources

Catalog Description:
An introduction to the study of algorithms, problem solving using imperative programming, and the GNU/Linux programming environment. Tools and techniques for problem-solving using imperative programming, including issues such as memory allocation and pointer variables, are used to develop a better understanding of data abstraction in software development. Done using UNIX software development tools with an emphasis on graph algorithms, software testing, and empirical analysis.

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 visit me in my office.
  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. 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. Approximately six projects will be completed during the course of the semester. Some 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 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 HOMEWORKS 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 when 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.) It is acceptable to ask another student for help fixing a bug. Sometimes a fresh set of eyes is all that is needed.
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. Homwork will be collected and you will be given credit if it is done.
  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 receive a penalty of -20% per class meeting. Electronic versions of programming assignments and hard copy print outs of code are due at the beginning of the following class. See class schedule for dates.

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/14 Introduction to the course
C: an imperative language
Syllabus
2 1/16 Pointers
3 1/18 Memory Allocation & Deallocation
4 1/23 Structs and Design
5 1/25 Linear Data Structures
6 1/28 File processing Design PA 1
7 1/30 Binary Files
8 2/1 Function Pointers
9 2/4 Working with gdb PA 1
10 2/6 Linux tools: shell scripts
11 2/8 Linux tools: grep, awk, sed
12 2/11 Hash Functions Chapter 14, Section 1
13 2/13 Resolving Collisions in Hash Tables Chapter 14, Sections 2-6
14 2/15 Exam 1
15 2/18 Introduction to Graphs Chapter 17, Sections 1-2
16 2/20 Graph Representations Chapter 17, Sections 3-6
17 2/22 Introduction to Graph Algorithms Chapter 17, Sections 7-8
18 2/25 Graph ADT
19 2/27 Graph ADT (Adjacency Matrix)
20 2/29 Graph ADT (Adjacency Lists)
21 3/10 Graph Generators
22 3/12 Non-trivial Graph Algorithms
23 3/14 Depth First Search
24 3/17 DFS Applications
25 3/19 DFS Applications and BFS
26 3/26 Exam 2
27 3/27 Generalized Search and Graph Analysis
28 3/31 Minimum Spanning Trees 20-20.1
29 4/2 Underlying Principles of MST Algorithms 20.2-20.3
30 4/4 Kruskal's and Boruvka's Algorithms 20.4-20.5
31 4/7 Comparisons 20.6-20.7
32 4/9 Digraphs and Connectivity 19-19.1
33 4/11 DFS in Digraphs 19.2
34 4/14 Reachability and Tranisitive Closure 19.3
35 4/16 DAGS and Topological Sorting 19.5-19.6
36 4/18 Shortest Paths 21-21.1
37 4/21 Dijkstra's Algorithms 21.2
38 4/23 All pairs-shortest path 21.3
39 4/25 Balanced Tress 13-13.2
40 4/28 Red-Black Trees 13.4

Exams: Friday, February 15th and Wednesday, March 26th.

FINAL EXAM: Take-home exam. It will be distributed Monday, April 28 and due Monday, May 5 at 4 PM. This will be an individual exam. You may not consult with your classmate or the web beyond the course website. You may use notes, the text, and other material provided by the insturctor during the course of the semester.