Computer Science Department
CS 302 – Data Structures & Algorithms
II
Instructor: Roberta
E. Sabin
Office: Donnelly
Science 127C
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 1-1:50 (in KH006)
Office
Hours: Monday, Wednesday, Friday: 11-11:50
Thursday:
Others
times by appointment. (I am usually here every weekday except Tuesday.)
|
High
thoughts must have high language.
– Aristophanes You
can’t trust code that you did not totally create yourself. (Especially code
from companies that employ people like me.
---Ken
Thompson, 1983 ACM Turing Award Lecture Instead
of this absurd division into sexes they ought to class people as static or
dynamic.
–Evelyn Waugh Good
as it is to inherit a library, it is better to collect one.
-- Augustune Birrell 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 I
have made this letter longer than usual, because I lack the time to make it
short.
–Blaise Pascal |
CS
302 Data Structures &
Algorithms II 3 credits
SYLLABUS
Catalog Description: Prerequisite:
CS301.
A continuation of CS301. More advanced data structures are designed,
analyzed, and created using an object-oriented language. File structures, hashing, and formal methods
are studied. More UNIX programming tools
are introduced.
Text: Folk, Zoellick, and
Riccardi. File Structures, Addison-Wesley, 1998.
Supplemental Reference:
Kernighan and Ritchie, The C Programming Language, Prentice-Hall,
1988.
Supplemental Software:
at
ftp://ftp.aw.com/cseng/authors/riccardi/
Course Objectives:
Upon successful completion of this course,
the student should be able to:
1.
understand
the basic issues in file management and be able to process large files of data
2.
be
able to parse and write programs using standard C including C memory management
3.
further
understand and use object-oriented design in software development and represent class relationships with simple
UML diagrams
4.
have
increased understanding of object-oriented programming and the use of classes
in C++ including template and derived classes
5.
competently
use basic Linux utilities and a Linux-based IDE for program development
6.
have
increased understanding of time efficiency issues as they relate to choices of
algorithms and file management
7.
understand
and be able to use sorting, searching, and recursive algorithms
8.
understand
and implement complex data structures using original C++ code and the Standard
Template Library (STL)
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 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
colleagues. 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:
|
Class No. |
Date |
Major Topics
|
References[1] |
|
1 |
1/12 M |
Intro to the course Going back in time: C |
Syllabus CN |
|
2 |
1/14W |
C language:
memory allocation
|
CN |
|
3 |
1/16 F |
C and C++ file
processing
|
2.1-2.6 |
|
4 |
1/21W |
Files in Unix
and Linux
|
2.7-2.10
|
|
5 |
1/23 F |
File processing in C
(con’t) |
|
|
6 |
1/26 M |
Secondary Storage: Disk and Tape
PA1 due |
3.1-3.3
|
|
7 |
1/28 W |
CDs File management by the
OS |
3.4-3.10 |
|
8 |
1/30 F |
Quiz 1 File Organizations |
4.1 |
|
9 |
2/2 M |
Using Buffers for file processing |
4.2-4.5
|
|
10 |
2/4 W |
Files of records |
5.1-5.6
|
|
11 |
2/6 F |
Compressing data |
6.1-6.2 |
|
12 |
2/9 M |
Sorting and searching in files |
6.3-6.4
|
|
13 |
2/11 W |
Review of elementary file concepts PA2 due |
|
|
14 |
2/13 F |
Test1 |
|
|
15 |
2/16 M |
Indexing of files |
7.1-7.3 |
|
16 |
2/18 W |
Indexing (con’t) |
7.4-7.10 |
|
17 |
2/20 F |
Sorting with Heapsort |
8.1-8.4 |
|
18 |
2/23 M |
External sorting with merging |
8.5-8.8 |
|
19 |
2/25 W |
More on external sorting |
|
|
20 |
2/27 F |
Quiz 2 3/ 17: PA3 due |
|
|
The
class schedule for the second half of the semester will be distributed on
3/8. The
second half of the course will cover several complex abstract data types, STL,
and miscellaneous additional topics. |
|||
|
Exam: Friday,
April 30, |
|||
GRADING
Your final grade will be
determined by the number of points that you earn. Approximately 1000 points will be possible
this semester. They will result from:
Approximately 10
collected assignments and 3
quizzes =
250 points
6 programming
assignments (approximately) =
350 points
2 tests (100 points
each) =
200 points
1 final exam =
200 points
Total = 1000 points
Final letter grades will
be calculated on a scale close to the following:
A = 91 -
100% (905-1000 points)
A- = 88 - 90% (875-904 points)
B+ = 85 - 87% (845-874 points)
B = 81 -
84% (805-844 points)
B-
= 78 - 80% (775-795 points)
C+ = 75 - 77% (745-774 points)
C = 71 -
74% (705-744 points)
C- = 68 - 70% (675-704 points)
D+ = 65 - 67% (645-674 points)
D = 60 -
64% (595-644points)
F = 0 -
59% (594 or fewer points)
1. Tests and quizzes 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. Programming
assignments are normally due at the beginning of the regular class period. 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.
CLASS
PROCEDURES
1. You are expected to have read the reference material listed in the class schedule before the lecture. Both the textbook and the "breadth-first" notes present material in a very concise manner. You will greatly enhance your experience of the lectures by coming to class prepared. I normally distribute many handouts--copies of notes, assignment sheets, etc. In the past, many students have increased their success in this course by keeping notes, programs, tests, and assignments organized. A three-ring binder is recommended (sections for breadth-first topics, class notes, home assignments, and programming assignments may be helpful.)
2.
I
will use Blackboard for
dissemination of class materials. Blackboard will also hold copies of code
snippets, classnotes, programming assignments, weekly assignments, data files,
and important announcements. Normally,
you will submit your programming assignment BOTH in hardcopy and as a file dropped
in the Peanuts’ dropbox.
3.
Regular
attendance is necessary for success in this course. As a point of courtesy, plan to arrive on
time for class. Students are responsible
for material presented and assignments made during absences. Normally, make-up exams are not administered
and LATE ASSIGNMENTS ARE NOT ACCEPTED.
4.
This
is a "hands-on" course.
Therefore, besides reading the texts, attending all 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-nighters” to complete programming assignments. 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 that the Linux Lab (DS130) is usually quiet and not crowded.
5.
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.