CS 135 Discrete Structures - Fall 2010

Instructor:
Dave Naumann with office hour: Tues 2:00-3:00 and by appointment; pipeline ID dnaumann

Teaching Assistant:
Bao Yifei, pipeline ID ybao, hours Wed 4-5 and Thurs 4-5 in Burchard 127

Prerequisite:
There is no course prerequisite, but some programming experience will be helpful.

Meetings:
Tues (in B430) and Thurs (in P116) 11:00-12:15, and labs Fri 11:00-1:00 (BC 320) and Mon 1:00-3:00 (BC 210)

Required textbooks:
Discrete Mathematics and Its Applications, 6th edition 2007, by Kenneth Rosen, ISBN: 0072880082

The Little Schemer - 4th Edition, by Daniel P. Friedman and Matthias Felleisen, ISBN 0-262-56099-2

Software:
We will use DrScheme which is free and available for many platforms. During the first lab session you will download it.

Mailing list:
cs135

You must follow this link and sign up: I will not be using the WebCT mailing list (but WebCT will be used for homework assignment and submission). If you want to use a non-Stevens email address, please let me know as otherwise I assume such requests are spam.

Catalog description:
The aim of this course is to integrate knowledge of basic mathematics with the problems involving specification, design, and computation. By the end of the course, the student should be able to: use sets, functions, lists, and relations in the specification and design of problems; use properties of arithmetic, modular arithmetic (sum, product, exponentiation), prime numbers, greatest common divisor, factoring, Fermat's little theorem; use binary, decimal, and base-b notation systems and translation methods; use induction to design and verify recursive programs; and implement in Scheme all algorithms considered during the course.

Outline:
This outline is subject to change and will be updated during the semester as necessary.

We'll cover roughly chapters 1-4, and 8, in the Rosen textbook. Section numbers with dots, like 1.1, refer to Rosen; readings in the Little Schemer are written like LS2 for chapt 2.

Homework is due Sunday midnight (i.e., 12am Monday), unless otherwise announced.

week topic reading assignment
1 predicate logic xx-xxii, 1.1-1.3 (in Rosen) sect 1.1(exercises 10 and 12), 1.2(10,16,18,22)
2 Scheme (no lect tues) 1.4 (in Rosen), LS chapt 1 and 2 (little schemer) 1.4(6,10,18)
3 proofs 1.5-1.7 (thru p90) 1.5(4a,c,e; 14c), 1.6(6,10), 1.7(18) Use line-numbered proof style for these (like example 15 on p83)
4 sets, functions 2.1-2.3 2.1(2a,2b,5), 2.2(12,16a), 2.3(10,16) For proofs, try to use calculational style.
5 sequences, induction 2.4, LS ch 2 review 2.2(22), 2.3(12,22), 2.4(2), hw21feb10.pdf
6 induction, recursion 4.1, LS chapt 3 4.1(4,6,18a-e,20)
7 strong induction 4.2, 4.3, LS chapt 4 hw7mar10.pdf
8 recursive algorithms 3.1 and 3.2, skim 4.4 LS chapt 5
9 asymptotic growth and algorithms NO LECTURE TUES 23 March hw29mar10.pdf
10 relations 8.1-8.3, LS chapt 7, and Tautology Club (thanks to Arthur Erb for this) 8.1(2,4,30,32), 8.3(2,6,8)
11 relations and graphs 8.4-8.5, optionally LS chapt 8 8.4(16,18), 8.5(2,6,16,20,22,24)
12 integers, division, primes 3.4-3.5 3.4(4,8,16,20), 3.5(4abcd,10,24)
13 integer algorithms, number theory 3.6 & review for test 3.6(20)
14 number theory: cryptography; applications of graphs 3.7 extra credit: 3.7(2abcd,6)

Policies:
You, your instructor, and the TA are bound by the Stevens Honor Code.

Students are responsible for reading and understanding the course policies in these web pages and for announcements made in class and in the course email list.

Use of notebook computers is mandatory in labs.

During lecture, texting and many uses of notebook computers are distracting to the user and to others. Therefore they are disallowed during lecture. This policy is, however, open to discussion and negotiation.

The course score is a weighted average of the following categories.

NOTE: originally the weights were 15% for second exam and 35% for final; changed at end of semester as explained in email from instructor.

Letter grades are assigned on the usual basis: A = 90-100 B+ = 86-90 B = 80-86 C+ = 76-80 C = 70-76 D+ = 66-70 D = 60-66 F = 0-60

Labs are ``closed'': the assignment is given, completed, and graded during the lab session. Group work is at the discretion of the TA.

There are no make-ups for labs or exams. The only possible exceptions are in the case of death in the student's immediate family or near-death experience of the student; advance notice is required.

There may be short, unannounced quizzes in class, which count in the ``homework'' grade category. The purpose is to motivate attendance and to help both you and your instructor gauge your progress. There won't be make-ups, but in calculating your homework average we'll adjust the score to have an effect like dropping your lowest score.

This is a course on discrete math, not on Scheme. We will use a study a small, subset of the language in order to (a) develop skill in pure functional programming and (b) focus on the math. There will be about 10 homework assignments, often involving small Scheme programs. Homework will be accepted up to 24 hours late, at a penalty of 40% grade reduction.

Except when groups are explicitly allowed, work must be done individually. You are encouraged to discuss the problems with your classmates but you must not share details of the solutions. If you are unsure whether you have shared too much, discuss the situation with the TA or instructor; it is your obligation to avoid even the appearance of cheating.

Outcomes:
These are the official ones, which are only slightly revised from here

  1. [sets] Be familiar with sets, functions and relations (requirements, math-stat)
  2. [design] Be able to use sets, functions, and relations in the specification of problems and design of their solutions (requirements)
  3. [lists] Be familiar with lists and list operations, and their manipulation in Scheme (environments)
  4. [modular] Be familiar with properties of modular arithmetic (math-stat)
  5. [primes] Be familiar with primes, relative primality, the Euclidean gcd algorithm and the Chinese Remainder theorem (math-stat)
  6. [number names] Be able to make use of various representations of integers, including the binary and base-B systems (math-stat)
  7. [induction] Be able to use induction to design and verify recursive Scheme programs (software, problem solving)
  8. [Scheme] Be able to implement all algorithms discussed in Scheme (software)





naumann 2010-05-17