Prerequisites

A heavily proof-based discrete mathematics course, or upper-division proof-based mathematics courses. COT 5405 (analysis of algorithms) recommended, but not required if student has adequate Math background.

(1) If you have not had any proof-based mathematics classes (i.e. a class where all class communications, HW problems, exams etc. are entirely based on mathematical proofs, where you would have encountered more than a hundred proofs during the semester), then you are almost certainly NOT ready for this class. You should strongly reconsider. Unfortunately, the "official" pre-requisites for this class, namely Discrete Mathematics and Data structures/Algorithms are very rarely taught in this manner currently.

(2) On the other hand, even if you have not had the official prereq, if you have had a proof-based class in the Mathematics department OR one of the few proof-based classes in the CISE dept. e.g. CIS4930 Design and Analysis of Algorithms OR COP4533 Algorithms Abstraction and Design, you are probably ready, but it will still require a solid 12 hours per week, including contact hours, on a regular basis since the course proceeds at a rapid pace through different conceptual paradigms and ways of thinking.

Basic Pretest: If you score less than 65\% on this
Basic pre-test you do NOT have the skills needed to take this course. If you nevertheless take this course, you should expect to put in ATLEAST twice as much time to make up for your missing background skills on your own.

If you do score 65\% on the pretest, you still need to acquire solid experience in writing proofs to get anything out of this course. This will not be taught during the course, you will have to acquire it on your own.

You can check your performance using the following
Basic pretest solution file
The pre-test does NOT count in your grade.

Proofs pre-test All communication during lectures and tests will be via formal mathematical proofs. A strong background in Discrete Math and Datastructures/Algorithms, with some maturity in formalizing logical statements in predicate logic (conjunctions, disjunctions, negations, manipulating quantifiers and predicates, implications, converse, contrapositive) thinking in logical steps and using standard proof techniques like induction, contradiction etc for writing proofs -- is a must for this class. This will be assumed, i.e., it will not be taught

If possible, there will be a "proofs" pre-test followed by a discussion of the expected proofs and feedback on your proofs -- on the first day of class so that you can self-assess if this class is for you.