CS 520: Computer Science Foundations

Course Syllabus

Professor: Dario Salvucci
Email: salvucci   @   cs.drexel.edu
Office: University Crossings 100D
Office Hours: Please email for an appointment


This course emphasizes analytic problem-solving and introduction of mathematical material necessary for later courses in algorithms, compiler theory, and artificial intelligence. The course includes topics such as logic, theorem-proving, language operations, context-free grammars and languages, recurrence relations, and analysis of algorithms.

Goals and Objectives

The course aims to provide students with the mathematical tools and techniques necessary for describing and analyzing algorithms, programs, and software systems. Material in this course should be helpful in other Computer Science topics and courses such as algorithms and data structures, programming languages and compilers, computer architecture, artificial intelligence, concurrent programming, and software engineering.

The course objectives are:


The course is intended for students who have not had a previous course in the mathematical foundations of Computer Science -- for example, students who may have entered the Computer Science graduate program after earning a degree in a different discipline. Thus, the course is considered a "pre-core" course in the Computer Science graduate program, and M.S. students in Computer Science require department permission to enroll in and receive credit for the course.


The required textbook is Foundations in Computer Science by Aho & Ullman, Computer Science Press (W. H. Freeman), 1994 ISBN: 0-7167-8284-7. This is an old but classic textbook and remains one of the best around for the material in this course. Unfortunately, the book is no longer in print; fortunately, the authors have made it freely available on their web site.


Lectures will be recorded each week on Monday evenings, 6-9pm. Any students interested in "attending" these lectures live can join the Wimba classroom linked from the course BB/Learn site. All lectures are recorded and will remain available for the duration of the course. Lecture slides will also be posted on the course web site.


Assignments aim to provide practice in the covered topics and to evaluate student learning for these topics. Completed assignments will be submitted electronically through BB/Learn. All work must be yours and yours alone. Assignments turned in up to one day late incur a 50% penalty; assignments turned in more than one day late cannot be accepted and receive a score of 0.


We will have a final exam at the end of the term. The exam tests knowledge and skills developed in lectures, readings, and assignments.


All aspects of this course are important for developing an understanding of and appreciation for the mathematical foundations of computer science. The grading breakdown will be as follows:


The instructor will disseminate important announcements by email through the course mailing list, and also post these announcements on the course web site. Also, the web site contains a timeline with links to all information (lecture slides, assignments, etc.) relevant to the course.