Computer Science Department
CS 301 – Data Structures & Algorithms I
Instructor: Roberta E. Sabin
Office: Donnelly Science 125E
![]()
Telephone: (410) 617-2562
FAX : (410) 617-2157
E-mail: res@loyola.edu
Black Board Course Website:
http://www.loyola.edu/blackboard/index.html
Visit the CS Department WebSite: http://www.cs.loyola.edu
Class Meets: MWF 11-11:50 (in MH040)
Office Hours: Monday, Wednesday, Friday: 10-10:50
Other times by appointment or stop by.
(I am usually here on MWF 8-8:50 and 12-12:50. I am frequently in my office until 3 or 4 on
MWF.)
|
One must learn by doing the
thing, for though you think you know it, you have no certainty until you
try,
--Sophocles, 5th century B.C. In programming, it is not
enough to be inventive and ingenious. One also needs to be disciplined and
controlled in order not be become entangled in one's own complexities. --Harlan D.
Mills, Forward to Programming Proverbs by Henry Ledgard The price to be paid for
reliability is simplicity.
-- C. A. R. Hoare Communicating what the code
is supposed to do is more important than having it work right because someone
is going to have to change it later. --Carl
Powell, Analytical Engine has no
pretensions whatever to originate anything.
It can do whatever we know how to order it to perform. -- |
CS301 Data Structures & Algorithms I 3
credits
COURSE
INFORMATION
Catalog
Description:
Prerequisite: CS202. Elementary data structures are designed and built
using an object-oriented approach and language. Associated algorithms are
analyzed for efficiency. Introduces a UNIX-based platform for programming.
Text: Carrano, Frank M. and Janet
J. Prichard, Data Abstraction and Problem
Solving with Java, Addison-Wesley, 20056 (2nd edition).
Supplemental Material:
Textbook materials for
students: http://www.aw-bc.com/cssupport/Carrano.html
Java documentation (from Sun): http://java.sun.com/j2se/1.5.0/docs/api/index.html
Linux commands (from Linux in a Nutshell): http://www.linuxdevcenter.com/linux/cmd/
jGrasp download site and documentation: http://www.eng.auburn.edu/grasp/
Java tutorial: http://chortle.ccsu.ctstateu.edu/CS151/cs151java.html
(slow, methodical, and very comprehensive)
There are many, many additional resources on
the Web relating to algorithms and data structures.
Course
Objectives:
Upon successful completion of this course, you should
be able to:
1.
understand the
importance of the choice of data structures and the effect of those choices on
program efficiency
2.
understand
efficiency measures and judge the big-O efficiency of simple algorithms
3.
design data
structures as objects and implement them in Java
4.
understand and
use both top-down design and object-oriented design in software development
5.
use a Linux-based
platform for writing, debugging, and testing software
6.
write
well-designed, efficient, well-documented code in Java
What you can expect of me: You can expect that I will come to class prepared
and ready to help you learn. You can
expect me to be enthusiastic (easy--since I LOVE computer science and
teaching!), be knowledgeable, and keep the class moving. You can expect me to
be available during my office hours and at other times that you arrange to see
me. Expect me to return graded work
promptly. You can expect me to treat you
respectfully.
What I
expect of you: I expect you to come to every class prepared to
contribute to class—computing is an active sport. You CANNOT learn it in the passive mode. This
means that you should have completed the assignment, done the reading, and
determined what you need help in understanding.
You contribute to class by intelligently questioning the instructor and
offering further explanation to me and your classmates. I expect you to take
responsibility for learning computer science—you won’t be sorry. Further, I expect you to treat every other
member of the class (including me) with respect.
Course
Outline of Class Lectures: (notice
that tests and quizzes are shown)
|
Class No. |
Date |
Topics
|
Reference (text) |
|
1 |
1/17 W |
Intro to the course Review of software
engineering principles Introduction to Linux |
Syllabus 2.1 |
|
2 |
1/19 F |
Software engineering principles |
2.2-2.3 |
|
3 |
1/23 M |
Discussion of PA1 |
|
|
4 |
1/25 W |
Simple recursion |
3.1-3.2
|
|
5 |
1/27 F |
Multiple recursive calls |
3.3-3.4 |
|
6 |
1/30 M |
ADT List |
4.1-4.2 |
|
7 |
2/1 W |
Implementing ADTs PA1 due |
4.3 |
|
8 |
2/3 F |
Linked List review Quiz 1 |
5.1-5.2 |
|
9 |
2/6 M |
Operations with linked
lists |
5.2-5.3 |
|
10 |
2/8 W |
Variations on linked lists |
5.4
|
|
11 |
2/10 F |
The Java Collections
Framework |
5.5 |
|
12 |
2/13 M |
Using recursion:
backtracking |
6.1 |
|
13 |
2/15 W |
Grammars and recursion PA2 due |
6.2 |
|
14 |
2/17 F |
Mathematical expression of
efficiency of recursion |
6.3 |
|
15 |
2/20 M |
Discussion of PA3 Quiz 2 |
|
|
16 |
2/22 W |
ADT Stack |
7.1-7.2 |
|
17 |
2/24 F |
Implementing stacks |
7.3-7.4 |
|
18 |
2/27 M |
Stack applications |
7.4-7.5 |
|
19 |
3/1 W |
Connection between stacks
and recursion PA3 due |
7.6 |
|
20 |
3/3 F |
TEST 1 |
|
|
Spring Break March 6-10 |
|||
|
21 |
3/13 M |
Stack Applications: postfix
evaluation and conversion Graph traversal using a
stack and using recursion |
7.4 7.5 |
|
22 |
3/15 W |
PA3 due Connection
between stacks and recursion |
7.6 |
|
23 |
3/17 F |
ADT Queue
Linked list
implementation
|
8.1 8.3 |
|
24 |
3/20 M |
Array-based implementation of a Queue
|
8.5
|
|
25 |
3/22 W |
PA4 due Simulations: time-driven
vs. event driven |
8.5 |
|
26 |
3/24 F |
Simulations (con’t) Quiz 3 |
|
|
27 |
3/27 M |
Advanced Java: Inheritance |
9.1 |