Syllabus: CS 202 - Data Structures and
Discrete Mathematics II, Fall Semester, 2002
Prof. Robert H. Sloan, http://www.cs.uic.edu/~sloan
1132 SEO, Phone 6-2369
August 22, 2002
Class: Monday, Tuesday, Wednesday, Friday 1:00--1:50, LC F6.
Professor's Email: sloan@uic.edu .
Professor's office hours: Monday, 10:00--12:00 and by appointment.
TA: Hosung Leo Kim
Email: hkim@cs.uic.edu
Office hours: Tuesday & Thursday 4:30-6:00, 1310 SEO
TA mailbox: 905 SEO
1 Course Topics
This course will be a combination of the theoretical and the applied, with relatively more applied material, since I understand that much discrete mathematics was covered in Spring 2002. Nevertheless, we will have a blend of discrete mathematics, data structures, and some C++ hacking.
1.1 Static versus dynamic versus stack memory, and theirimplications for the "Big Three" (copy constructor, destructor,and operator =) in C++.
1.2 Intermediate and advanced trees
1.3 Hashing
1.4 Heaps and heap sort; priority queues.
1.5 Sorting
1.6 Graph theory.
1.7 Graph Data structures.
1.8 Throughout: A little advanced C++ programming.
1.9 If time allows:
2 Prerequisites
The prerequisite is a grade of C or better in CS 201.
3 Textbook
Required: We will continue to use Data Structures Algorithm Analysis in C++, 2nd Edition, by Mark Weiss, which you should own from 201,and we will also continue to used the discrete math text (for graph theory).
Optional: The C++ FAQs.This is for those of you looking for all the gory details that aprofessional software engineer would really want to know to do a job,but we will mostly ignore in class.
4 Grading
There will be three to seven major programming assignments, which willcount for 25--30 of the grade.
There will be one midterm counting about the same as themajor programs, and a final counting for about 40 of the grade.
There will probably a problem set on graph theory.
It will be worth perhaps 5 of the grade.
Late homework will not be accepted, because solutions will oftenbe given on the day the problem sets are due.
They will receive a grade of 0.
This policy is subject to change at any time for any reason.
4.1 Two easy ways to fail
You must pass the final to pass this course.
If you have grades under 35/100 on more than two of themajor programs, you will automatically fail this course.
5 Programming and such
All programs must be turned in on the CS department system, and mustmake, compile and run on that system with one of the C++ compilers(either CC or g++ unless something changes).
If you develop your programs at home, plan on being completelyfinished two days ahead of time, to give yourself time to port theprogram over to our system.
I suggest you find out what "switch" to set on your home compiler toforce strict ANSI compliance, and set that switch when you developyour programs.
Program grades: If a program does not compile , then you will getan automatic grade of zero.
This does not mean that if your program isn't perfectyou get a zero! In fact, we intend to be fairly generous with partial credit onprograms. We just insist that before we spend time grading the program, you mustget it to the point where there are no compiler errors left.
("Warning" messages from the compiler will not necessarily affectyour grade, and certainly won't cause you to get a 0.Ideal programming style means getting no compiler warnings, but thecompiler is pretty paranoid and it's completely reasonable to have code thattriggers certain warning messages.)
Coding style and documentation counts!
6 Rules and regulations
Statute of limitations
No grading questions or complaints---no matter how justified---will belistened to more than one week after the item in question has beenreturned.
Incompletes
The UIC Undergraduate catalog states that in addition toneeding excellent justification for an incomplete, a student mustalso have been "making satisfactory progress in the course."
Therefore, no matter how good your excuse, I will not grant you anincomplete if you have less than a C average at the time you ask foran incomplete.
Academic Integrity
All work you turn in must be entirely your own.You may discuss general strategies for programs with other students inthe class, but you must do 100 of the coding by yourself.
Similarly, you may discuss the math problems with other students---infact, I encourage you to do so---but
you are expected to write up your solutions by yourself. If you do work on the math problems with other students, please put the names of your group at the top of your problem set.
The minimum penalty for any form of cheating will be an E for thecourse (not just the program or test!), and the maximum penalty isexpulsion from the University.
I will be checking for copied programming assignments using a qualityautomated tool.
You are responsible for protecting your own code. This includesmaking sure not to throw out print outs in the computer lab as well askeeping your files protected.Failure to protect your own code will also be treated as acheating/copying violation. In industry, if you are the person whose carelessness causes yourcompany to loose vital intellectual property that has been protectedthrough trade secret, I guarantee you that you will be harshly treated.
7 First reading assignment
Review (I hope!) on C++:Weiss, Sections 1.5 and 1.7.
Review on basic trees: Weiss, 4.1--4.2.
New material on binary search trees (we won't get to this for a coupleof lectures): Weiss, 4.3.