**Term and Credits**

Summer 2018

3 Credits

**Room and Time**

Section 002 - Monday 6:00pm-8:50pm UC151

Section 004 - Tuesday 6:30pm-9:20pm UC149

**Instructor**

Mark Boady

*Electronic Mail Address:*
mwb33@drexel.edu

*Office:* University Crossings 138

*Extention:* 215-895-2347

*Office Hours:*
Monday 4-5PM,
Tuesday 12-1PM,
Thursday 12-1PM

**Teaching Assistant(s)**

Amira Mefteh

*Electronic Mail Address:* am3836@drexel.edu

*Office:* Drexel CLC UC 152

*Office Hours:* Wednesday 6-8pm

Sandesh Bhandari

*Electronic Mail Address:* sb3728@drexel.edu

*Office:* Drexel CLC UC 152

*Office Hours:* Thursday 6-8pm

**Course Description**

Data structures form the basics for the programmer's toolbox. You will become familiar with the basic common data structures, and learn to modify them or create your own. Further, the notion of data abstraction is important from several aspects. You will start down the road of separating interface from implementation, to viewing a problem simply in terms of functional requirements and dependencies (or lack of). On the flip side, we will explore various issues involved in implementing a given interface.

**Course Objective and Goals**

- Understand what an algorithm is.
- Master the ability to analyze the complexity of programs and algorithms. Understand recurrence relations and sums and basic asymptotic analysis.
- Understand algorithms and abstract data types. In particular, understand sets, stacks, queues, priority queues, dictionaries, binary search trees, hash tables, arrays, linked lists, trees, graphs, and heaps.
- Understand what basic operations each data structure supports and why one might choose one over another.
- Understand data abstraction and recursion, both in the context of procedures and of data types.

**Audience and Purpose within Plan of Study**

This is required course for CS BS students and CS Minor Students. It is generally taken sophomore year.

**Prerequisites**

CS265

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

- Students should be able to program in a high level language (C++, Java, Python, etc)
- Familiarity with basic data structures such as vectors and arrays.
- Familiarity with object oriented design principles.

**What Students will be able to do upon Successfully Completing this Course: Statement of Expected Learning**

- Students will be able to analyze data structures.
- Students will understand a set of fundamental algorithms and how to apply them.
- Students will understand basic data structures and how to apply them to different situations.

**Textbook**

Online Textbook from ZyBooks

- Sign in or create an account at https://learn.zybooks.com
- Enter zyBook code
**DREXELCS260BoadySummer2018** - Subscribe

**Grading and Policies**

- Exercises: 20%
- Readings: 10%
- Homeworks: 20%
- Midterm 25%
- 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

**Lectures**

- Lectures will be held once a week.
- Attendance in lecture is required.
- If you need to miss class, please message the Professor to request an exception.

**Exercises**

- Each class with have at least 1 exercise.
- The exercise is due during the class period.
- Some exercises will be individual work.
- Some exercises will be group work.

**Readings**

- Readings are to be completed in ZyBooks.
- No late submissions will be accepted.

**Homeworks**

- Homeworks will be completed in ZyBooks.
- No late submissions will be accepted.

**Exams**

- There will be two in class exams this term.
- A midterm Exam during week 5
- Final Exam during Exam Week (Week 10)
- Due to a holiday, our final exam
**will not**be during finals week.

**Slack Channel**

- This term, we will be using a Slack channel instead of a discussion board.
- Our Slack Space is cs260-summer2018.slack.com
- You will receive an invite link in a course announcement. Email the Professor if you need assistance.

**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

**Topics**

- Arrays
- Trees
- Graphs
- Dictionaries/ Hash Tables
- Algorithm Analysis

**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/

**Tentative Course Schedule**

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

Week | Topic | Reading | Assignment |

1 (June 25, 2018) | Analysis of Algorithms / Binary Search | Week 1 - Due July 1 at 11:59PM | HW1 - Due July 1 at 11:59PM |

2 (July 2, 2018) | Sorting Algorithms | Week 2 - Due July 8 at 11:59PM | HW2 - Due July 8 at 11:59PM |

3 (July 9, 2018) | Linked Lists, Stacks, and Queues | Week 3 - Due July 15 at 11:59PM | HW3 - Due July 15 at 11:59PM |

4 (July 16, 2018) | Hash Tables / Advanced Analysis | Week 4 - Due July 22 at 11:59PM | HW4 - Due July 22 at 11:59PM |

5 (July 23, 2018) | Binary Search Trees, Heaps, and Huffman Codes | ||

6 (July 30, 2018) | Midterm Exam in Class | Week 6 - Due August 5 at 11:59PM | HW5 - Due August 12 at 11:59PM |

7 (August 6, 2018) | Balanced Trees | Week 7 - Due August 12 at 11:59PM | *HW5 Continued* |

8 (August 13, 2018) | Graphs - DFA and MST | Week 8 - Due August 19 at 11:59PM | HW7 - Due August 19 at 11:59PM |

9 (August 20, 2018) | Graphs - BSF, Dijkstra, and Bellman-Ford | HW8 - Due August 26 at 11:59PM | |

10 (August 27, 2018) | Final Exam - In Class | ||

11 (September 3, 2017) | No Class - Happy Labor Day! |