**Term and Credits**

Spring 2018-2019

3 Credits

**Room and Time**

Monday 6:00pm-8:50pm 3675 Market Street Room 1052

Videos lectures will be provided for online section.

**Instructor**

Mark Boady

*Electronic Mail Address:*
mwb33@drexel.edu

*Office:* 3675 Market Street Room 1058

*Extention:* 215-895-2347

*Office Hours:*
Tuesday 2-5PM, Wed 3-4PM

**Teaching Assistant(s)**

Adit Gupta

*Electronic Mail Address:*
ag3338@drexel.edu

*Office:* Drexel CLC (Room 1066 First Floor 3675 Market Street)

*Office Hours:*See CLC Website

https://www.cs.drexel.edu/clc

**Course Description**

Survey of basic mathematics concepts needed for the study of computer science at the graduate level: induction, iteration, recursion; analysis of program running time; graphs and trees; predicate logic; regular expressions, Context Free Grammars, and Turing Machines.

**Course Objective and Goals**

- Learn to analyze the running time of iterative and recursive algorithms.
- Learn to prove properties of algorithms and data structures using induction.
- Gain familiarity with basic data structures and algorithms related to them, such as trees and graphs.
- Learn the limits and applications of regular expressions, context free grammars, and turing machines.
- Learn relationships between languages and automata.
- Learn to use logic to prove properties of algorithms.

**Audience and Purpose within Plan of Study**

This course is for graduate students with little or no prior knowledge of data structures and algorithms. It serves to give such students a firm foundation for future graduate study, and it is a requirement of the Computer Science Minor and Computer Science Post Bachelor Certificate degree programs.

**Prerequisites**

None

**What Students Should Know Prior to this Course**

- Basic Computer Usage Skills.
- Some experience with programming is recommended but not required.
- The following concepts from mathematics will be important in class. You can review the below links for more information.

**What Students will be able to do upon Successfully Completing this Course:**

- Students will be able to analyze algorithms.
- Students will understand a set of fundamental algorithms and how to apply them.
- Students will be able to prove properties of algorithms using induction, proof by contradiction, and predicate logic.
- Students will be able to apply regular expressions and context free grammars to parse strings.
- Students will be able to determine the applications and limits of data structures, algorithms, and languages.

**Textbook**

We will use only free/library resources for this class.

Book of Proof (Second Edition)

Richard Hammack

Paperback: ISBN 978-0-9894721-0-4

Hardcover: ISBN 978-0-9894721-1-1

Available for Free online at: http://www.people.vcu.edu/~rhammack/BookOfProof/

Introduction to Theory of Computation

Anil Maheshwari and Michiel Smid

Available for Free online at: http://cglab.ca/~michiel/TheoryOfComputation/

**Supplemental Texts**

If you want a textbook about the Algorithms we will be studying, I recommend this one. It is not required. I just think its a great resource.

Algorithms (4th Edition)

Robert Sedgewick, Kevin Wayne

ISBN-10: 032157351X

ISBN-13: 860-1400041420

See it on Amazon

**Lectures**

- Prerecorded videos will be posted for each lecture in learning.drexel.edu
- Each Class period will have live lectures and a lab.
- Lectures will be supplemented by recorded videos.

**Labs**

- Students will work alone or in Pairs to complete labs

**Homeworks**

- Homeworks will be completed in a custom autograder
- Homeworks may be submitted an unlimited number of times until the due dates.

**Presentatations**

- You may use any resources to find content for presentations.
- You may work with other students to find content for presentations.
- You must prepare you slides independently.
- You must record your presentation individually.
- Presentations must be uploaded to the learning.drexel.edu as a forum post.

**Reflections**

- You will be assigned 3 other students presentations to watch.
- You will have to provide a short reflection giving your opinions on the topic presented.

**Midterm/Final Exam**

- Tests will be completed through learning.drexel.edu.
- Tests will be posted online for approximately one week.
- A test will have a fixed time limit.
- The answers much be submitted during the time limit.
- The test may be started at any point during the week.

**Slack Channel**

- This term, we will be using a Slack channel instead of a discussion board.
- You must sign up using a Drexel Email Address.
- https://join.slack.com/t/cs520spring2019/signup

**Late Submissions**

- Each student has two "late passes".
- A student may exchange one of their late passes for an one day extention on any assignment.
- Contact the TA/Professor to request one of your late passes be used.
- You may use both late passes of the same assignment to get a 2 day extention.

**Special Circumstances**

- If you have a documented reason why you cannot submit an assignment by the deadline, a special exception may be made. The Professor may also wave the late submission penalty for documented special exceptions.

**Academic Honesty Policy**

The CCI Academic Honesty policy is in effect for this course. Please see the policy at http://drexel.edu/cci/resources/current-students/undergraduate/policies/cs-academic-integrity/.

Academic Honesty Violations **will** be reported to the University. Punishment will be determined by the severity of the incident. Punishments include, but are not limited to,

- Failing grade for class
- Deduction of one letter grade
- Zero on Assignment/Exam Violation took place on

**Grading and Policies**

- In Class Labs 15%
- Presentations 20%
- Homeworks 15%
- Reflections 5%
- Midterm Exam 20%
- Final Exam 25%

Final grades will be determined by your total points weighted according to this distribution. Grades may be curved but are generally computed via the formula below. It may be modified at the instructor's sole discretion, but letter grades will generally not be lower than those shown here.

- [100-97]A+
- (97-93] A
- (93-90]A-
- (90-87]B+
- (87-83] B
- (83-80]B-
- [80-77]C+
- (77-73] C
- (73-70]C-
- (70-67]D+
- (67-60]D
- (60-0]F

**Computer/Software Help**

iCommons: http://drexel.edu/cci/about/our-facilities/rush-building/iCommons/

**University Policies**

In addition to the course policies listed on this syllabus, course assignments or course website, the following University policies are in effect:

- Academic Honesty: http://www.drexel.edu/provost/policies/academic_dishonesty.asp
- Judicial Affairs Academic Integrity: http://drexel.edu/studentlife/community_standards/facultystaff/integrity/
- Official Final Exam Schedule: http://www.drexel.edu/registrar/scheduling/exams/
- Students with Disability Statement: http://drexel.edu/oed/disabilityResources/overview/
- Course Drop Policy: http://www.drexel.edu/provost/policies/course_drop.asp
- The instructor may, at his/her/their discretion, change any part of the course during the term, including assignments, grade brakdowns, due-dates, and the schedule. Such changes will be communicated to students via the course web site Announcements page. This page should be checked regularly and frequently for such changes and announcements. Other announcements, although rare, may include class cancellations and other urgent announcements.
- Drexel Student Learning Priorities: http://www.drexel.edu/provost/irae/assessment/outcomes/dslp/

**Topics**

- Graphs
- Searching
- Sorting
- Proof Methods
- Computational Models: DFA, CFG, Turing Machines

Please see the appropriate assignment webpages for a detailed description of course deliverables.

Week | Topic | Reading | In Class | Homework |

1 (4/1/19) | Binary Numbers, Boolean Logic |
Chapter 2 for Book of Proof Binary Numbers Two's Complement Logic Circuits Binary Addition Number Representations |
Lab 1 and Lab 2 | |

2 (4/8/19) | DFA and Languages |
Chapter 2.1-2.4 of Theory of Computation |
Lab 3 and Lab 4 | |

3 (4/15/19) | NFA and Regular Expressions |
Chapter 2.5-2.9 of Theory of Computation DFA/NFA Simulator |
Lab 5 | Homework 1 - Due April 15, 2019 at 11:59PM |

4 (4/22/19) | Context Free Grammars |
Chapter 3.1-3.3 of Theory of Computation |
Lab 6 | Homework 2 - Due April 22, 2019 at 11:59PM |

5 (4/29/19) | Turing Machines |
Church-Turing Thesis Chapter 4 from Theory of Computation Turing Machine Simulator |
Lab 7 |
Homework 3 - Due April 29, 2019 at 11:59PM Presentation 1 Due April 29, 2019 at 11:59PM |

6 (5/6/19) | Introduction to Algorithms and Induction |
Algorithmic Thinking: The Key for Understanding Computer Science
How to write a Pseudo Code? Linear Search Binary Search Big Oh Notation Complexity Asymptotic Notations |
Lab 8 |
Homework 4 - Due May 6, 2019 at 11:59PM Reflection 1 - Due May 6, 2019 at 11:59PM Midterm - Online |

7 (5/13/19) | Sorting Algorithms |
Merge Sort Quick Sort Insertion Sort Tower of Hanoi |
Lab 9 | Midterm - Due May 15, 2019 at 11:59PM |

8 (5/20/19) | Intro to Trees |
Binary Search Trees |
Lab 10 |
Homework 5 - Due May 20, 2019 at 11:59PM Presentation 2 - Due May 20, 2019 at 11:59PM |

9 (5/27/17) - No Monday Class | Intro to Graphs and Shortest Paths |
Graph Representations Depth First Search A* and Dijkstra Dijkstra |
Lab 11 |
Homework 6 - Due May 27, 2019 at 11:59PM Reflection 2 - Due May 27, 2019 at 11:59PM |

10 (6/3/19) | Induction |
Chapter 10 (Induction) from Book of Proof Minimum Spanning Trees will not be included but you might still find the below links interesting.
Prim's Algorithm Kruskal's Algorithm |
Lab 12 |
Homework 7 - Due June 3, 2019 at 11:59PM Presentation 3 Due June 3, 2019 at 11:59PM |

11 (6/10/19) | Final Online Due June 14th 11:59PM - No In Class Events this week |
Homework 8 - Due June 10, 2019 at 11:59pm Reflection 3 - Due June 10, 2019 at 11:59PM |