CS 222/420 Winter 1999
SYLLABUS
January 13, 1999
Instructor: Jeffrey Horn, email:
jhorn@nmu.edu
office: 161D West Science Building
phone: 227-1607
Office Hours: Mon.
Wed.
Fri.
3 - 6 pm
3 - 6 pm
12 - 2 pm, other times by appointment
Textbook: Data Abstraction and Problem Solving with C++ (Walls
and Mirrors) by Carrano, Helman, and Veroff (2nd Edition)
Recommended: (a practical introduction to) Software Design
with C++ by Steven P. Reiss, or any C++ reference book
Classroom: West Science 283
Meeting Times: 10am MWF
Prerequisites: CS 122 Computer Science II , and MA 240 (or CS
220 for the CS 420 folks)
Our web page: http://euclid.nmu.edu/~jeffhorn/Classes/CS222
(I will use the web page EXTENSIVELY, posting
everything I can up there as soon as possible. This includes all
electronic forms of handouts, assignments, solutions, sample tests, etc.
Also I will post announcements, links to interesting, topic-related sites,
etc. So please check our page regularly! At the very least,
once a week.)
TOPICS:
OVERVIEW AND REVIEW
-
definitions of abstract versus concrete concepts
-
ADT versus DT versus data object,
-
algorithm versus program, and
-
pseudocode versus programming language
-
Intro. to analysis (growth rates, counting basic operations,
etc.)
-
Review of basic data structures (arrays, stacks, lists)
-
Review of basic algorithms (sorting, searching, recursion)
SEARCHING
-
Linear, Binary, Stochastic versus Enumeration
-
Analysis of search algorithms
ADVANCED SORTING
-
Analysis of n^2 and n(lg n) sorters (mergesort, quicksort,
heapsort, etc.)
-
Heaps
-
Hashing
GRAPH PROBLEMS AND ALGORITHMS
- execution time, clock time
NUMBER PROBLEMS AND ALGORITHMS
***********************************************************************************
BELOW IS FOR CS 420
***********************************************************************************
MODELS OF COMPUTATION
-
Turing machines
-
The Complexity Hierarchy
-
Undecidability, NP-Hard versus, NP-Complete
-
Canonical problems (e.g., Boolean satisfiability)
ADVANCED DATA STRUCTURES AND ALGORITHMS
-
AVL Trees, B Trees, Splay Trees, Priority Queues, etc.
ADVANCED ANALYSIS
-
rigorous upper and lower bounds, avg. case analysis
-
Algorithm Design Techniques (e.g. divide-and-conquer, dynamic
programming, formalized recursion, loop invariants)
PARALLEL AND DISTRIBUTED ALGORITHMS
GRADING:
10% Written homeworks.
45% Programs.
10 % Quizes
10 % Mid-Term Exam
15% Final exam, comprehensive.
10% Instructor's discretion
COMPUTING FACILITIES:
One of the goals of this course is exposure to the Unix
operating system and program development environment. Toward that
end, we will use the PCs running Linux (free Unix for the Intel processors)
in our PC Lab (WS 162). Everyone should feel free to use any development
environment (e.g., Code Warrior on a Mac) that they wish, but I will only
provide "support" for the Unix-based C++ compilers (e.g., gcc). These
machines have a GUI (the Unix X windows environment) but we will use mostly
a text based interface (e.g., the command line, simple text editors such
as "pico" or "vi", etc.), so that program development can be done via a
simple terminal emulation from anywhere on the internet by remotely logging
in to the PCs in WS 162. This will allow you to access the UNIX programming
environment outside of lab hours (generally 8am-5pm M-F).
We might also use the program Mathematica (mma) from
Wolfram Research, for run-time analysis and graphing. This software
also runs on the Linux machines.
NOTE: If you have a
need for disability-related accommodations or services, please inform the
Coordinator of Disability Services in the Disability Services Office
at 405 Cohodas (227-1550). Reasonable and effective accommodations
and services will be provided to students if requests are made in
a timely manner, with appropriate documentation, in accordance with
federal, state, and University guidelines.