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:
"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:
Final Grade Distribution:
Final letter grades will be no worse than the following table.
| A | A- | B+ | B | B- | C+ | C | C- | 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.