Loyola University Maryland

CS 302.01 - Data Structures & Algorithms II
Spring 2010


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

News

January 29, 2010: The due date for Project 1 has been changed to Monday, February 8th.
February 21, 2010:: New Exam Date
Exam Date: Tuesday, March 9
Procedure: Come to 125b (my office) from 9:00 to 11:00 or 1:30 to 3:00 to begin the exam. You will have about 1 hour to take the exam. Test taking times are from 9:00 to 12:00 and 1:30 to 4:00.


Instructor: Dr. Dawn Lawrie
Office: DS 125b
Work Phone: (410)617-2140
Office Hours: MWF 9:30-10: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/S10/index.html

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

Prerequisites: CS 301

Required Text: Muldner, C for java programmers , Addison Wesley, 2000.
Weiss, Data Structures and Algorithm Analysis in C , Ed. 2nd, Addison Wesley, 1997.
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.
    LATE PROGRAMMING ASSISGNMENT POLICY: 2.5% will be deducted for each quarter day the assignment is turned in after the due date/time. The time an assignment is turned in will be based on the electronic version, not the paper copy.
  5. A midterm 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 an "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 University 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 -0.5% per hour after the due date/time. Electronic versions of programming assignments and hard copy print outs of code are due at the beginning of 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/11 Introduction to the course
Designing a Solution
Syllabus
2 1/13 C: an imperative language Muldner: Ch. 1
3 1/15 Allocating Memory, Terminal Output
Strings and Compling in C
Muldner: Ch. 2
4 1/20 Creating a toString function in C Muldner: Ch. 3.8 and 5
5 1/22 Project 1 discussion and Makefiles Muldner: Ch. 9
6 1/25 File I/O Design PA 1
7 1/27 Memory deallocation
8 1/29 Linear Data Structures Weiss: Ch 3
9 2/1 Pointers Muldner: Ch 8
10 2/3 Pointers/Working with gdb
11 2/5 Discuss Project 2 and Working with gdb PA 1
12 2/8 The preprocessor and Function Pointers Muldner: Ch 6 Project 2 Design
13 2/10 Profiler
14 2/12 Linux tools: shell scripts
15 2/15 Linux tools: grep, gawk, sed
16 2/17 Discuss Project 3 and Introduction to Graph Weiss: Ch 9.1
17 2/19 Graph ADT PA 2
18 2/22 Graph ADT (Adjacency Matrix) PA 3 design
19 2/24 Midterm (rescheduled)
20 2/26 Graph ADT (Adjacency Lists)
21 3/8 Graph Generators
21 3/8 Graph Generators
3/9 Midterm
22 3/10 Depth First Search PA 3
23 3/12 Depth First Search PA 4 design
24 3/15 Minimum Spanning Trees
25 3/17 Prim's Algorithm
26 3/19 Prim's Algorithm
27 3/22 Kruskal's and Boruvka's Algorithms
28 3/24 Kruskal's and Boruvka's Algorithms PA 4
29 3/26 DFS Applications PA 5 design
30 3/29 DFS Applications
31 3/31 Hashing Functions
32 4/7 More Hashing
33 4/9 Collision Resolution in Hashing PA 5
34 4/12 AVL Trees PA 6 Design
35 4/14 AVL Trees
36 4/16 Red-Black Trees
37 4/19 Red-Black Trees
38 4/21 Red-Black Trees
39 4/23 Red-Black Trees
40 4/26 Review PA 6

Midterm: Wednesday, February 24 Tuesday, March 9

FINAL EXAM: Wednesday, May 5 at 1PM in SH102