Instructor
Dr. Jingnan Xie
Email: jingnan.xie@millersville.edu
Course Description
This course is a systematic study of data structures and their algorithms, organized around the unifying concept of data and code abstraction. Emphasis is placed on ADT-based and object-oriented design, incremental development and testing, and comparison of data structure implementations. Topics include abstract data types (ADTs), objects, algorithm design and analysis, trees, sorting, searching, hash tables, and graphs. This course includes a laboratory component and is currently taught using C++.
Prerequisites: Grade of C- or better in both CSCI 140 and CSCI 162.
Course Outcomes
- Implement elementary data structures such as linked lists, stacks, queues, and binary trees.
- Apply advanced data structures, such as hash tables, balanced search trees, and graphs, to solve problems.
- Perform simple algorithm complexity analyses.
- Formulate divide-and-conquer algorithms using recursion.
- Describe the importance and key points of a professional code of ethics.
Textbook & Resources
Course Policies
Responses: Emails will be answered within 24 weekday hours.
Announcements: Important materials and updates will be posted on D2L.
Lecture & Labs: Attendance is expected. Labs must be completed before leaving the lab period.
Exams and Homework: All exams and assignments must be attempted to pass. Homework and lab grading turnaround is one week. Late submissions are not accepted except for grace days.
Expectations: Be prepared, participate actively, ask questions, adhere to academic honesty guidelines.
Grading Policy
- Attendance: 5%
- Two Midterm Exams: 30%
- Final Exam: 35%
- Laboratory and Homework Assignments: 30%
- Active participation bonus: up to 2%
Grades are rounded to nearest grade. Students must attempt all exams, homework, and lab assignments to pass. The average of the three exams must be at least 70% to earn C- or above.
Grade scale:
≥ 93 A, ≥ 90 A-, ≥ 87 B+, ≥ 83 B, ≥ 80 B-, ≥ 77 C+, ≥ 73 C, ≥ 70 C-, ≥ 67 D+, ≥ 63 D, ≥ 60 D-, < 60 F
Weekly Topics & Handouts
| Week | Topic | Handouts / Links |
|---|---|---|
| 1,2 | Introduction to C++ & ADTs | Handout |
| 2,3 | Vector: Concept & Implementation | Handout |
| 4,5 | Linked List: Concept & Implementation | Handout |
| 6 | Exam 1 | |
| 7 | Stacks & Queues | Handout |
| 7,8 | Binary Search Trees (BST) & Set Implementation | Handout |
| 9 | Balanced BST & AVL Trees | Handout |
| 10 | Hash Table | Handout |
| 11 | Exam 2 | |
| 12 | Sorting Algorithms: Divide & Conquer, Quick Sort, Merge Sort | Handout |
| 13 | Heap Sort & Priority Queue | Handout |
| 13 | Radix Sort | Handout |
| 14 | Graphs: DFS & BFS | Handout |
| 14 | Graphs: Topological Sorting & Applications | Handout |
| 15 | Final Exam |