Prof. David Wilczynski
Prerequisites. It is expected that you already know how to do "object-based" programming using C++ and Java.
Discrete Mathematics covers
some formal topics that are essential to Computer Science. In particular the
class will focus on:
Chapter 1: Logic and Proofs,
Chapter 2: Basic Structures: Sets, Functions, Sequences,
and Sums
Chapter 4: Induction and Recursion
Chapter 5: Counting: Basics and Pigeonhole
Chapter 8: Relations
Chapter 9: Graphs
Chapter 10: Trees
Chapter 12: Modeling Computation
Other topics may be covered.
Discrete Mathematics and Its Applications, 6th
Edition, by Kenneth Rosen
McGraw Hill, ISBN-13 978-0-07-288008-3 ISBN-10
0-07-288008-2
All reading assignments are given at Lectures. The date shown there is the date a reading should be done by.
Assignments
Programming assignments are graded on thorough testing, documentation, and style, as well as correctness. All work to be submitted for the class is to be done individually unless an assignment specifies otherwise.
Assignments and Programming:
30%
2 midterms:
40% (20% each)
1 final: 30%
A = 92% A- = 90%
B+ = 88% B = 82% B-
= 80%
C+ = 78% C = 72% C-
= 70%
Exams will
be scaled to match these ranges.
Extra credit
may be available on assignments for use in deciding borderline cases.
Below are the course outcomes we expect you to have at the end of the course.
i. An understanding of
propositional and first order logic and how to model problems in them.
ii. An understanding of
mathematical discrete structures such as sets, functions and relations.
iii. An understanding of
the principles of induction and recursion and how they can be used to solve
problems.
iv. An understanding of
countability and the ability to solve counting problems, using as sequences and
summations, pigeonhole, Pascal's triangle, etc.
v. An understanding of
discrete structures such as graphs and
trees and use them for searching or other problems
vi. An understanding of
formal computational models such as finite automata, grammars, etc.
These are the outcomes you are expected to have when you have finished your degree:
a) An ability to apply knowledge of computing and mathematics appropriate to the discipline;
b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution;
c) An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs;
d) An ability to function effectively on teams to accomplish a common goal;
e) An understanding of professional, ethical, legal, security, and social issues and responsibilities;
f) An ability to communicate effectively with a range of audiences;
g) An ability to analyze the local and global impact of computing on individuals, organizations and society;
h) Recognition of the need for, and an ability to engage in, continuing professional development;
i) An ability to use current techniques, skills, and tools necessary for computing practices.
j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices;
k) An ability to apply design and development principles in the construction of software systems of varying complexity.
These outcomes are also posted at on the CSCI website. http://www.cs.usc.edu/current/undergrad/ProgramOutcomes.pdf
Last modified November 23, 2009 by David Wilczynski