Mathematical Foundations of Computer Science
CS 270, Spring 2015

Instructor: Krzysztof Nowak
Office: University Crossings 109
Office Hours: Monday, Wednesday, Friday 12:00 pm - 12:50 pm, University Crossings 109
e-mail: kn33@drexel.edu

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