CSCI 2100 Data Structures
This section of the course (Spring 2017) meets Monday, Wednesday, and Friday from 10:00AM-10:50AM in Ritter Hall 202, plus a lab every Tuesday, 10-10:50AM, in Ritter 115.
In this course, a follow-up to our introductory programming course CSCI 1300, students will learn how to utilize data structures in their programs to make their code more efficient in terms of speed and memory usage. They will also learn how to implement many of the most important data structures, and the trade-offs involved in different implementation decisions.
The course prerequisite is a C- or better in CSCI 1300 (Introduction to Object-Oriented Programming) and a passing grade or concurrent enrollment in MATH 1660.
- Why Data Structures?
- C++ Crash Course for Python programmers
- Introduction to analysis of algorithms, big-O
- Linear data structures: lists, stacks, queues
- Binary trees, binary search, heaps, priority queues, Huffman coding
- General tree implementations
- Dictionaries and hashing
- Graph implementations and algorithms: traversals, Dijkstra, topological sort
- Tries, DAWGs, suffix trees, applications to predictive text
Student Learning OutcomesAfter successfully completing this course, students will be able to:
- demonstrate the inner workings of fundamental data structures such as stacks, queues, vectors, linked lists, heaps, trees, and graphs
- implement generic versions of any of these data structures, using low-level programming concepts such as pointers and dynamic memory management
- select an appropriate data structure and use it to solve a given programming problem, understanding any tradeoffs involved
- analyze the asymptotic time and space efficiency of data structure operations using standard notations
We'll be using Data Structures and Algorithm Analysis in C++ (3rd ed.) by Clifford A. Shaffer, which is available for free from the author's web site. If you're like me and prefer a print version and/or you want to support free/open culture, you can buy a copy from Amazon (published by Dover) for only about $20. Over the last few years, the book has evolved into a more general open source platform for learning data structures called OpenDSA; we'll occasionally make use of these online exercises and interactive visualizations as we progress through the book.
For the first couple of weeks of the semester we will provide a "crash course" on C++ for students already familiar with object-oriented concepts and the Python programming language. The Python to C++ Transition Guide by Drs. Goldwasser and Letscher will be a useful reference.
Homework and Exams
I will give a number of in-class quizzes (roughly one every two weeks) throughout the semester; dates TBA, depending on our progress through the course material. The quizzes are usually true/false, multiple choice, and some short answer, and only take about 10 minutes at the beginning of class. I'll drop your lowest quiz score, but I will not allow you to make up quizzes that you miss because of absence or if you arrive late for class. Together the quizzes make up 40% of your final grade.
You will also be asked to write some code for a small project that you'll turn in for a grade near the end of the semester; this accounts for 15% of your final grade.
There will be a 50 minute midterm exam in class on Wednesday, March 8th, worth 20% of your final grade.
Last but not least, there is a final exam scheduled for Wednesday, May 10th from 12:00-1:50PM; it is comprehensive and is worth 25% of your final grade.
ACADEMIC INTEGRITY AND HONESTY
Students are expected to be honest in their academic work. The University reserves the right to penalize any student whose academic conduct at any time is, in its judgment, detrimental to the University. Such conduct shall include cases of plagiarism, collusion, cheating, giving or receiving or offering or soliciting information in examinations, or the use of previously prepared material in examinations or quizzes. Violations should be reported to your course instructor, who will investigate and adjudicate them according to the policy on academic honesty of the College of Arts and Sciences. If the charges are found to be true, the student may be liable for academic or disciplinary probation, suspension, or expulsion by the University. Students should review the College of Arts and Sciences policy on Academic Honesty.
STUDENTS WITH SPECIAL NEEDS-DISABILITY SERVICES
In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. Students who think they might benefit from these resources can find out more about:
- Course-level support (e.g., faculty member, departmental resources, etc.) by asking your course instructor.
- University-level support (e.g., tutoring/writing services, Disability Services) by visiting the Student Success Center (BSC 331) or by going to http://www.slu.edu/success.
Students who believe that, due to a disability, they could benefit from academic accommodations are encouraged to contact Disability Services at 314-977-8885 or visit the Student Success Center. Confidentiality will be observed in all inquiries. Course instructors support student accommodation requests when an approved letter from Disability Services has been received and when students discuss these accommodations with the instructor after receipt of the approved letter.