CS271: Discrete Methods in Computer Science (Spring 2011)

Most recent message posted: 05/11/2011

Administrativa

The grading scale is given here. These are not curves or class percentages, but your percentages. For instance, if the weighted average percentage of your grades is 55%, then you get at least a B. Since I have not taught this class before, if I find that the exams were a bit too demanding, the grading scale may become a little nicer. It will not become tougher.

p Grade
80%A+
72%A
66%A-
60%B+
54%B
49%B-
44%C+
39%C
34%C-
29%D

Homework will be assigned roughly once per week, and graded. Of all assignments, the worst one will be dropped in calculating your grades. Homeworks are due in class on the date specified. Each student can submit up to 3 homeworks up to one day late. Late submissions should be made to a TA or instructor in office hours, no later than office hours on the day after the due date. Submissions more than one day late will not be accepted. Once 3 homeworks have been submitted late, subsequent late submissions will not be accepted.

Homeworks will from time to time contain "chocolate problems". Chocolate problems do not affect your grade in the course. They are intended to be significantly more challenging, for students looking for a challenge. Chocolate problems will be marked with a number of chocolate bars. Solutions that are (mostly) correct will lead to the solvers getting that number of chocolate bars. Contrary to regular homework problems, chocolate problems can be solved in groups of up to 3 students (who will then share the chocolate). Chocolate problem submissions should be on separate sheets of paper, as they will be graded by the instructor, not the TAs/grader. Feel free to mark your preferred type of chocolate with your submission.


Course Overview, Syllabus, Textbook, Prerequisites

The course covers the fundmantals of discrete mathematics as they relate to computer science. Many of the problems computer scientists are most frequently called upon to solve involve discrete structures such as trees, graphs, and - even more fundamentally - natural numbers. Furthermore, since execution of programs necessarily proceeds in discrete time steps, to truly understand what it means for a computer program to solve a problem correctly and efficiently, it is necessary to have a solid understanding of the tools used in program analysis. The topics that will be covered in depth in this class are:

While each of these topics is important in its own right, the main goal of the class is to familiarize students with a mathematical mindset in thinking about problems, and the precision and clarity of thinking promoted by proving mathematical statements.

The textbook is

The textbook is required. Many homework problems will be assigned from the textbook. While the class will not always follow the order or presentation style of the textbook, the textbook is very encyclopedic and will be an excellent source of additional information.

The (rough) syllabus for the course is as follows. Topics may be added or removed depending on available time:

  1. A brief look ahead: Graphs and Trees (Chapters 9 and 10) and Algorithms and their Correctness (Chapters 4.4-4.5). [1 lecture]
  2. A review of the basics: sets, sequences, functions, sums, products, and algorithms (Chapters 2 and 3.1). [1 lecture]
  3. Propositional Logic, First-Order Logic and Basic Proof Techniques (Chapter 1). [ca 4 lectures]
  4. More Proof Techniques: Induction and Pigeon Hole Principle (Chapters 4 and 5.2). [ca 4 lectures]
  5. Counting and Basic Discrete Probability (Chapters 5 and 6). [ca 5 lectures]
  6. Graphs and Trees, revisited in detail (Chapters 9 and 10). [ca 5 lectures]
  7. Number Theory, big-Oh notation, runtime analysis (Chapter 3). [ca 4 lectures]

Academic Integrity, Collaboration

All students are expected to maintain the utmost level of academic integrity. Any attempts to cheat will lead to appropriate sanctions. Please consult the USC Student Conduct Code (general overview) for details on what is and is not appropriate, and for the possible consequences of infractions.

Homeworks should be solved mostly individually. Asking classmates for small hints is ok. For bigger hints, ask the TA or instructor. Substantial collaboration, in particular in writing up solutions or during (rare) programming assignment, is not appropriate. Nor is of course copying classmates' solutions. It is also never appropriate to search for solutions online and try to pass them off as your own work.


Messages