Instructor: Todd Dole
Semester: Fall 2025
Meeting Times: MWF 11:00-11:50 AM
First Day of Class: August 25
Location: Abilene Hall 204
Contact: todd.dole@hsutx.edu, Phone 325-670-1502, Office AH100
Monday: 1:00-4:30
Tuesday: 12:45-2:45
Wednesday: 2:00-4:30
Friday: 1:00-3:00
Other times by appointment.
Final Exams will be held from December 8-11.
Required Textbook: Data Structures & Algorithms in Java (Sixth Edition) by Goodrich et al.
The textbook is required. I strongly recommend you purchase a permanent copy to keep and reference throughout your career.
Additional Reference: Introduction to Algorithms (Third Edition) by Cormen, Leiserson, Rivest and Stein.
This book, referred to as CLRS, is considered the gold standard reference for algorithms. While we won't require readings from it, we will at times reference the book.
For each data structure and algorithm discussed, we will address/derive computational complexity. Topics include:
| Date | Topic | Notes/Lab | |
|---|---|---|---|
| Aug 25 | Introduction to the Course | ||
| Aug 27 | Analysis of Algorithms: Big-Oh, Theta | ||
| Aug 29 | Review of Recursion | Lab 1 Assigned | |
| Sep 1 | Labor Day (No Class) | ||
| Sep 3 | Generic Classes in Java | ||
| Sep 5 | Binary Search Trees: Insert, Search, Delete | Lab 2 Assigned | |
| Sep 8 | Binary Search Trees: Max, Min | Lab 1 Due | |
| Sep 10 | Hashing: Chaining | ||
| Sep 12 | Hashing: Open-Addressing | Lab 1 Final Version Due. Lab 2 Due, Lab 3 Assigned | |
| Sep 15 | Hashing: Insert, Search, Delete, Max, Min | Lab 2 Final Version Due | |
| Sep 17 | Balanced Trees: Red-Black Trees | Lab 3 Due, Lab 4 Assigned | |
| Sep 22 | Balanced Trees: Other Balanced Trees | ||
| Sep 24 | Priority Queues / Heaps | Lab 3 Final Version Due | |
| Sep 26 | Heaps: Insert, Delete, Extract-Min/Max | Lab 4 Due, Lab 5 Assigned | |
| Sep 29 | Intro to Graphs: Representations of Graphs | ||
| Oct 1 | Graph Algorithms: BFS | Lab 4 Final Version Due | |
| Oct 3 | Exam 1 | Covering topics from August 25 to October 1 | |
| Oct 6 | Graph Algorithms: DFS | ||
| Oct 8 | Dijkstra's Shortest Path | ||
| Oct 10 | Graph Algorithms: Euler and Hamiltonian Cycles | Lab 5 Due, Lab 6 Assigned | |
| Oct 13 | MST/Prims | Lab 5 Final Version Due | |
| Oct 15 | Multi-threaded Programming: Mechanics in Java | Lab 6 Due, Lab 7 Assigned | |
| Oct 17 | Fall Break (No Class) | ||
| Oct 20 | Multi-threaded Programming: Semaphores | ||
| Oct 22 | Multi-threaded Programming: Monitors | Lab 6 Final Version Due | |
| Oct 24 | Multi-threaded Programming: Readers-Writers Problem | Lab 7 Due, Lab 8 Assigned | |
| Oct 27 | Multi-threaded Programming: Producer-Consumer Problem | ||
| Oct 29 | Sorting: Quicksort | Lab 7 Final Version Due | |
| Oct 31 | Sorting: Heapsort | Lab 8 Due, Lab 9 Assigned | |
| Nov 3 | Sorting: Merge Sort | ||
| Nov 5 | Sorting: Radix Sort | Lab 8 Final Version Due | |
| Nov 7 | Sorting: Counting Sort | Lab 9 Due, Lab 10 Assigned | |
| Nov 10 | Sorting Concepts: Stable Sorts | ||
| Nov 12 | Exam 2 | Covering topics from August 25 to November 10 | |
| Nov 14 | Sorting Concepts: Comparison Sorts | Lab 9 Final Version Due, Lab 10 Due, Lab 11 Assigned | |
| Nov 17 | Sorting Concepts: Complexity Limits for Sorting | ||
| Nov 19 | Bit Manipulation Operators | Lab 10 Final Version Due | |
| Nov 21 | Applications to Sets | Lab 11 Due | |
| Nov 24 | Review | ||
| Nov 26-28 | Thanksgiving Break (No Class) | ||
| Dec 1 | Project Presentations | ||
| Dec 3 | Project Presentations | Lab 11 Final Version Due | |
| Dec 5 | Project Presentations | All Revised Lab Work and Peer Reviews Due | |
| Dec 8-11 | Final Exams |
Your grade in the course will be earned / calculated as follows:
A: 90-100
B: 80-89
C: 70-79
D: 60-69
F: 0-59
Lab Assignments will generally be assigned each Friday, and will be due the following Friday before class begins.
Following completion of the lab assignments, we will take time on Fridays to conduct peer reviews of students' lab work. This will take different formats from week to week, but students should be prepared to give a brief presentation of the code that you wrote, explain how it works and why you made the design choices you made, and answer questions about the code. In some cases, this will be to the entire class, with Mr. Dole facilitating a discussion. In other cases students will work in smaller groups with a provided grading rubric to review each others' code. Not every student's code will be reviewed every week, but you should come prepared every Friday.
Note that students who cannot adequately explain their own code during peer review will be deemed to have plagiarized, receive a zero for the assignment, and potentially addressed as an academic integrity violation.
A final, revised version of the lab assignment may then be submitted by the following Wednesday (twelve days after originally assigned) before class time. Students who wish to incorporate feedback from peer reviews (not simply copy other students' code) and improve a lab assignment may do so. This gives us an opportunity to help one another learn, improve as computer scientists, and demonstrate that improved knowledge.
Grading for each lab assignment will consider the original submission, the final submission as well as points given for feedback to other students through the peer review process. No more than 50% of the week's points will be awarded if a student fails to turn in an adequate original lab assignment sufficient to be peer-reviewed (something resembling a reasonable working solution.) If the first version is a reasonable solution, but the final version is improved (or even greatly approved) students will be graded on the final version.
Note that the intent is for you to learn from each other and incorporate ideas from one another's solution. However, copying code is forbidden, whether via cut and paste or screenshotting the code and then typing it yourself. (Simply changing variable names slightly is not sufficient either.)
Students may be absent for one Friday lab/peer review session without penalty (but the lab turn in deadlines will still apply.) Additional absences will require the work to be made up outside of class. Contact Mr. Dole to work out specifics.
Violations of academic integrity have been described to some degree in other sections of this syllabus. Cases of suspected academic dishonesty will be handled in accordance with university policies outlined in Undergraduate Catalog and in the Student Handbook. The current catalog prescribes that “no student who has violated the Academic Integrity Policy will be allowed to graduate from Hardin-Simmons University with honors.” Penalties will be assigned at the discretion of the instructor and typically range from failure on the assignment to failure of the course. A general rule-of-thumb is that a first offense (if not too major) will result in a zero on the assignment and a second offense will result in an F for the course. The current catalog states that an F earned in this way cannot be replaced by retaking the course.
There is an acceptable time and place to use large language models such as ChatGPT or Microsoft Copilot. These tools may be used to help you learn, to answer questions you have about the algorithms or data structures we will cover, or to give you very broad help on lab assignments. However, it is never acceptable in this course to turn in work generated by AI, except for specific assignments which will be clearly designated by the instructor. This course is foundational to a career in the world of computer science. The goal of all lab assignments is for you to learn the material and skill necessary to succeed in the field. These are skills that in many cases you may have to demonstrate from memory in job interviews. Do not cut take shortcuts by having AI do the work for you. Students deemed to have turned in work generated by AI will be in violation of the Academic Integrity provisions listed above, with the same penalties.
All exams are comprehensive. The final exam will take place at the scheduled time during finals week. Exams will never be collaborative in nature so receiving any form of assistance from anyone other than the instructor is a violation of the academic integrity policy. You may only use study aids during the exam if they are expressly allowed by the instructor for that particular exam.
An individual with a disability is defined by the Americans with Disabilities Act (ADA) as a “person who has a physical or mental impairment that substantially limits one or more major life activities.” Any student with a documented disability may choose to seek accommodations. Eligible students seeking accommodation should contact the Director of Undergraduate Advising and Disabilities as soon as possible in the academic term (preferably during the first two weeks of a long semester) for which they are seeking accommodations. The director will prepare letters to appropriate faculty members concerning specific, reasonable academic adjustments for the student. The student is responsible for delivering accommodation letters and conferring with faculty members. Please refer to the most recent version of the Undergraduate Catalog for the complete policy. (Carol Krueger, Director of Undergraduate Advising and Disabilities, Office: Sandefer Memorial, 1st floor Academic Advising Center, Phone: 670-5867, Email: disabilityservices@hsutx.edu)
Peer-to-peer academic support (tutoring) is available for all undergraduate HSU students. The Academic Center for Enrichment (ACE) is open for virtual tutoring sessions via Zoom. To access instructions or make an appointment, open the ACE course on your Canvas dashboard. For additional information regarding academic support, contact the Advising Center at 325-670-1480 or tutoring@hsutx.edu.
In addition, all full or part-time students are eligible to receive free, confidential, and voluntary counseling services at HSU. Services include consultation, evaluation, counseling, and crisis support services for students facing issues impacting their overall well-being. To obtain any of these services, students may call The Office of Counseling Services at (325) 671-2272, email counseling@hsutx.edu, or begin the intake process by completing our online forms at https://www.hsutx.edu/intake.
The instructor may occasionally use email to communicate with the class as a whole or with individuals. When contacting you for this course the instructor will use your HSU email account. You are expected to check your HSU email account at least once per day and you will be held responsible for any content distributed in this way.
Regarding class attendance, the Undergraduate Catalog states:
Accordingly, absence from more than 25 percent of class meetings and/or laboratory sessions scheduled for a course (including absences because of athletic participation) is regarded as excessive, and a grade of F may be assigned as deemed appropriate by the professor.