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.