Class meetings
Section 1: MWF 3:00 pm - 3:50 pm, DXLPLZ GL 20
Section 2: MWF 9:00 am - 9:50 am, PEARL 302
Prerequisites: familiarity with C constructs such as recursive functions,
structures and pointers, basic programming courses (CS 171, CS 172 or
equivalent)
On one hand the course presents basic mathematical structures and methods, which play a fundamental role in Computer Science. On the other hand it deals with three working methodologies of computing: theory, abstraction, design, and discusses conceptual and formal models and computational efficiency. It covers iteration, induction, recursion, the tree data model, finite automata, grammars, propositional and predicate calculi. The main goal of the course is to give computer science majors solid foundations for further study. The emphasis on abstraction and encapsulation provides a ground for subsequent courses oriented towards object-oriented programming. The course puts a strong stress on developing problem solving skills of students.
Required Text
Alfred V. Aho, Jeffrey D. Ullman, Foundations of Computer Science, C
Edition, Computer Science Press, New York, 1995.
http://infolab.stanford.edu/~ullman/focs.html
Reference Texts
David Gries, Fred B. Schneider, A Logical Approach to Discrete
Math, Texts and Monographs in Computer Science, Springer, New York, 1997.
Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language,
Prentice Hall, Englewood Cliffs, New Jersey, 1988 (Second Edition).
Robert Sedgewick, Algorithms in C++, Addison-Wesley, 1998 (Third
Edition).
Stephen Simpson, Mathematical Logic, Lecture notes at PSU.
http://www.personal.psu.edu/t20/notes/logic.pdf
Syllabus
Week 1: Iteration, Induction, Recursion, Proofs of Properties of
Programs
Week 2: Quiz 1, Merge Sort, Trees as Data Structures,
Recursions on Trees
Week 3: Quiz 2, Structural Induction, Binary Search Trees,
Efficiency of Binary Search Tree Operations
Week 4: Quiz 3, Partially Ordered Trees, Heap Sort, Review 1
Week 5: Test 1, Patterns, Automata and Regular Expressions
Week 6: Quiz 4, Transitions from Regular Expressions to Automata and
from Automata to Regular Expressions, Grammars, Parse Trees
Week 7: Quiz 5, Parsing Algorithm, Grammars versus Regular Expressions,
Review 2
Week 8: Test 2, Propositional Logic
Week 9: Proofs in Propositional Logic, Predicates, Logical Expressions and
Quantifiers of Predicate Logic
Week 10: Quiz 6, Interpretations, Tautologies and Proofs of Predicate
Logic, Truth and Provability, Review 3
Week 11: Test 3, Final Exam
Course Objectives
To be able to provide and use recursive definitions of patterns and
data structures
To use induction and other proof techniques to prove properties of algorithms,
data structures and programs
To use regular expressions and grammars to describe patterns and languages
To construct and use finite machines to accept patterns and to apply grammars
to recognize languages and construct parse trees
To use logic to describe the state of systems and use logical deduction to
prove properties of systems
Course Grade and Exams
We will have six quizzes (group work, individual submission; on Mondays, weeks
2-4, 6-7, 10), three in class tests (individual work; on Mondays, weeks 5, 8,
11), seven homework assignments (individual work; due on Mondays, weeks 3-5,
7-8, 10-11) and the final exam (individual work; during week 11). Final exam
will be comprehensive. The final grade will be computed with the following
weights: quizzes count for 15%, tests for 30%, homework assignments for 20%,
the final exam for 30%, and the attendance for 5%.
Course Website
http://www.cs.drexel.edu/~knowak/cs270_spring_2015/cs_270_links.htm