Course email address:
cs367-2@cs.wisc.edu
Course home page:
http://www.cs.wisc.edu/~cs367-2/cs367.html
INSTRUCTOR:
Yannis Ioannidis
Office: 7357 Computer Sciences
Office hours: Tuesday 8:45-9:30 am / Thursday 8:45-9:30 am
Office phone: 263-7764
Email address:
yannis@cs.wisc.edu
Home page:
http://www.cs.wisc.edu/~yannis/yannis.html
Chin Tang Chin
Office: 3310 Computer Sciences
Office hours: Monday 9:30-10:30am / Tuesday 2:30-3:30pm / Friday 9:30-10:30am
Office phone: 262-1721
Email address:
cchin@cs.wisc.edu
Home page:
http://www.cs.wisc.edu/~cchin/cchin.html
Wei Zhang
Office: 1343 Computer Sciences
Office hours: Wednesday 10:00-11:00am / Thursday 9:00-10:00am / Sunday 3:00-4:00pm
Office phone: 262-5596
Email address:
weiz@cs.wisc.edu
Home page:
http://www.cs.wisc.edu/~weiz/weiz.html
Lecture Information
Lecture: 9:30 - 10:45 Tuesday and Thursday
1325 Computer Sciences and Statistics
The C++ Language
CS 367 will be taught using the C++ programming
language, and you will be required to do your programming assignments
in C++.
We didn't choose C++ just to make your life more difficult.
Most people who become fluent in C++ think it is far superior to C or
Pascal; the use of C++ is growing tremendously in the field and the
odds are that if you ever have to write another program after this
course ends, you will be able to write it in C++. (The same statement
is not true about Pascal. C is also widely available, but after an
initial startup period you will be more productive in C++ than in C.)
If you go on to take more computer science courses, with few exceptions
you will be required to use C++ in those courses.
Text
The text book for this course is
Data Abstraction and Problem Solving with C++: Walls and Mirrors
by Frank M. Carrano (ISBN # 0-8053-1226-9).
This is a well-written text that covers most
(but not all) of the material in this course.
It also includes a lot about C++, so a separate text for the language is not
necessary.
For my lectures I will often (but not always) be following
CS 367 Lecture Notes - Fall 1993
by David J. DeWitt.
These notes are actually considerably more complete that simple lecture
notes, but they are still short of a true text book (there is
very little narrative text, no exercises, etc.)
As a recommended additional source, you may want to purchase these notes, which
are available from the DoIT documentation desk near the Dayton Street entrance
of the Computer Sciences building (1210 W. Dayton St).
If this is the first experience with Unix for you, you will need some information about activating your account, logging in, creating, editing, and manipulating files, and compiling, running, and debugging programs. The handout CS 1000, available from the DoIT information desk (where the DeWitt notes are available), contains all the key information. You will find it invaluable. See also the help section below.
As I mentioned above, the lectures will often follow the DeWitt notes, although
I may supplement them with a few handouts during the course
of the semester.
Nonetheless,
You are responsible for all material covered in lecture!
The exams will be based on
the lecture material, reading assignments in the notes, and
the course assignments.
Grading
There will be one or two evening exams during the course of the semester,
a final exam and five programming assignments.
The exams will determine 50% of the final grade
(with approximately equal weight for each one), and the programming
assignments will count for 10% each.
Exams
TOPIC DEWITT'S NOTES WALLS AND MIRRORS =========================================================================== Introduction, Administration 1-42 (general familiarity) Basic stuff of C++ lecture #2 101-135, App A, App C --------------------------------------------------------------------------- Functions lecture #3 App A Pointers lecture #4 141-150, App A --------------------------------------------------------------------------- Records & dynamic storage lecture #5 141-150, App A Lists lecture #6 150-177 --------------------------------------------------------------------------- Lists lecture #6 150-177 Binary Search and O notation 83- 86, 393-405 --------------------------------------------------------------------------- Advanced Lists lecture #7 177-189 Advanced Lists lecture #7 177-189 --------------------------------------------------------------------------- Stacks lecture #8 249-295 Queues lecture #9 307-344 --------------------------------------------------------------------------- Hashing lecture #10 591-608 Hashing lecture #10 591-608 --------------------------------------------------------------------------- Recursion (Evening Exam) lecture #11 50- 93, 203-238 Trees lecture #12 439-468, 501-502 --------------------------------------------------------------------------- Trees lecture #12 439-468, 501-502 Binary Trees - Sort & Search lecture #13 468-500 --------------------------------------------------------------------------- AVL Trees 587-590 AVL Trees 587-590 --------------------------------------------------------------------------- Graphs lecture #16 620-646 Graphs lecture #16 620-646 --------------------------------------------------------------------------- Graphs lecture #16 620-646 Graphs lecture #16 620-646 --------------------------------------------------------------------------- Sorting lecture #17 405-432 THANKSGIVING --------------------------------------------------------------------------- Sorting lecture #17 405-432 Sorting lecture #17 405-432 --------------------------------------------------------------------------- To be announced
Assignments must be done in C++ on the designated machines. These are in the machine rooms on the first floor of the CS building. I encourage you to use these machines.
If you prefer to use a home computer, you may do so, with certain restrictions: You must have a C++ compiler on your home machine; you must log on to your university account often to read email and get copies of data files; finally, we will require that you turn in your C++ program electronically (via email) so if you work at home you must make provisions to download your programs to your university account and to make sure that they compile and run with the g++ compiler on the SPARCstations.
I often use electronic mail to notify students of changes in
assignments, hints for programs, etc.
I assume that you will read all
electronic mail that I send.
Late Policy
No late assignment will be accepted.
Assignments must be turned in exactly when they are due.
In order to avoid lateness caused by machine loads, coincident due
dates for several classes, etc., simply be sure to get started right away on
each assignment.
Things are certain to go wrong now and then, so don't wait until the
last minute to start.
Any exceptions must be approved by me, and you will need a very good excuse.
If you get into trouble, see me as soon as possible.
Cheating
The Computer Science department takes a very hard line
stance on cheating.
You are welcome to
communicate with each other on design of algorithms and data
structures, but
there is to be no sharing of code.
You are also expected to learn, understand, and obey the
Computer Systems Lab Policies
governing your computer accounts.
Help
If you are having problems with the course work or programs,
please let me know as early in the semester as possible.
int top; // index of last element added to stackYou should use comments to explain parameters as well as local variables.
for (;;) { edit your program // %vi program.c compile your program // %g++ -Wall -g program.c if (there are compilation errors) continue; run your program // %a.out < inputfile > outputfile look at your output // %vi outputfile // or %more outputfile if (there are no errors) break; if (you are too tired to continue) { print a listing to take home // pr program.c inputfile outputfile | lpr goto home } debug the program // gdb a.out // run // ... // quit } you're done! turn in the result // submission instruction to be given out later