Syllabus

 

Course: CS 336H: Analysis of Programs – Honors Section

Time: Tu-Th 9:30-11

 

Instructor: A. K. Cline

Office: Taylor 3.104 A

Office Hours: Th 11-12, W 2-3, and by appointment

Web Site: TBA

Email: cline@cs.utexas.edu

 

Assistant: Selim Erdogan

Office: TBA

Office Hours: TBA

Web Site: TBA

Email: selim@cs.utexas.edu

 

Prerequisite:            CS 313H or PHL 313K and consent of the instructor

 

Purpose: To teach students how to argue rationally about programs.

 

Topics:

 

1. Combinatorics

            A. Permutations and Combinations

            B. Rudimentary Combinatorial Probability

 

2. Cardinality

            A. Countable and uncountable infinities

            B. The Cantor diagonalization             argument

 

3. Asymptotic Dominance

            A. f = O(g) and f = o(g)

 

4. Program Verification

            A. Assertions and Hoare triples

            B. Axioms for sequential

                        composition, assignment, branching

            C. Verification of loop-free programs

            D. Loops and invariants

            E. Total correctness

 

Grading:

 Exam 1: 20%

 Exam 2: 20%

 Final Exam: 40%

 Homework: 20%


Comments:

 

1. Good homework cannot make up for poor exams nor good exams for poor homework. To do well in the course grade, students must have good homework and exams.

 

2. There will be approximately three homework problems assigned at every class.  These will be due at the beginning of the following class. Solutions for each problem set will be distributed.

 

3. There will be no regular text for the class although notes will be distributed on occasion. It is very important that students attend each class.

 

4. It is expected that every student will contribute to the class.

 

5. An excellent summary of expectations is found at

http://www.cs.utexas.edu/users/ear/CodeOfConduct.html

 

Homework Specifications

 

1.      Your solutions must be legible. If your writing is not legible, use a word processor.

 

2.      Do not employ any pictures.  Pictures can have value for presenting overall ideas about proofs - they cannot substitute for the text of the proof. 

 

3.      Every sentence - even those using mathematical notation - must be readable. There must be clear subjects and verbs - not just random phrases.

 

4.      Every claim you make must follow from the hypothesis or from the previous claims.  When you believe you have completed a solution, test yourself by reading it and ensuring that it is clear how the claims follow one another one-by-one.

 

5.     Criticize your own solutions.  You should be learning not only how to create solutions but how to recognize correct ones. If you wonder about having too much or too little detail, err always on the side of too much detail.

 

6.     If you realize that your logic has gaps, admit that.  Put comments about such omissions or possible errors in boxes.