COS 265: Data Structures & Algorithms
Fall 2024 Course Syllabus
Course: | COS 265 Data Structures and Algorithms |
Lecture: | MWF 8, Nussbaum 101 |
Labs: | Tu 10–12, Euler 218 Tu 12–14, Euler 218 Tu 14–16, Euler 218 |
Mid-term: | Wed 2024.10.09, 08–09, Nussbaum 101 |
Final: | Mon 2024.12.09, 13–15, Nussbaum 101 |
Credits: | 4hrs |
SP/CC/etc.: | none |
Prereqs: | COS 121 |
Prepared: | 2025.05.18 |
Instructor
Dr. Jonathan Denning
Associate Professor, Department Chair
Computer Science and Engineering
Office: | Euler 206 |
Email: | jon.denning@taylor.edu |
Phone: | 765-998-4931 |
Hours: | see contact info or schedule appointment |
Teaching Assistants
The teaching assistants for the course will be listed here soon.
Course Description
- The course description in the course catalog:
-
COS 265 Data Structures and Algorithms, 4 hours
A survey of data structures and algorithms that operate on them, with an emphasis on abstract data types and analysis of computational complexity. Prerequisite: COS 121.
Materials and Resources
There is one required text for the course.
- Algorithms, 4th edition, Robert Sedgewick and Kevin Wayne, Addison-Wesley, 2011. ISBN-13: 978-0-321-57351-3. Amazon. Book Site
We will use IntelliJ as the integrated development environment.
The course has a page on Brightspace.
We will use Piazza extensively for discussion and managing help. Note: You must not publicly post any source code to Piazza; this must be posted privately to the instructors only. You may, however, ask general questions about the algorithm or data structure of the problems. See Piazza FERPA Compliance to see details on how Piazza maintains FERPA compliance.
We will use Plickers. You will receive a Plicker card at the beginning of the coures. You may also use this Plicker Card Viewer on your phone.
Requirements and Objectives
You will spend a considerable amount of time in this course writing Java programs that implement and employ the data structures and algorithms that you will learn through reading and participation in the classroom. At this point in your career, you will have had at least two previous programming-centered courses, and your work in this course should reflect your experience. In particular, your program submissions should:
-
Reflect a solid understanding of the data structures and algorithms employed. Please take time to understand the concepts before starting to code.
-
Use meaningful names for classes, methods, variables, files, and the like.
-
Demonstrate consistency in naming, formatting, and code layout. Leverage the capability of the IDE to help with formatting, indentation, and so on.
-
Include well-written and complete comments, including Javadoc comment blocks for non-trivial methods, classes, and declarations. Conversely, avoid superfluous comments that restate the clear meaning of the code itself.
-
Generate output that is clear, unambiguous, well formatted, and demonstrates the proper behavior and performance of your program.
-
Evidence a high personal standard of excellence in your work.
In his 1974 Turing Award lecture, Donald Knuth, legendary Stanford Computer Scientist and devout Christian, wrote:
“We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
”
As befits the work of those made in the image of God himself, consider your programs to be small works of art that demonstrate your skill, ingenuity, and creativity.
Content Outline and Schedule Summary
The table below shows approximately how much book material we will cover and for how long. This is only a schedule summary. A more detailed and up-to-date schedule is posted on the course Brightspace page. Note: I reserve the right to alter this plan (including material covered and the associated schedule) for any reason.
Chp | Topic | Wks |
---|---|---|
1. | Fundamentals | 4 |
2. | Sorting | 5 |
3. | Searching | 3 |
4. | Graphs | 2 |
Special Topics | 1 |
Learning Outcomes: Computer Science
This course provides you as a Computer Scientist with a significant understanding of key elements of data structures and algorithms that are ubiquitous in computing. At the completion of the course you will:
-
Understand key data structures that occur repeatedly in almost every program ever written, including the list, queue, stack, deque, hash, set, heap, tree, and graph.
-
Possess a deep understanding of algorithms that recur throughout all types of computer programs, including sorting and recursion.
-
Know how to choose the appropriate data structure or algorithm for the problem you are solving.
-
Be able to analyze the complexity of an algorithm and gauge its appropriate use in a given software context.
-
Understand object-oriented programming concepts and techniques more deeply.
-
Have written numerous clear and functional programs in the Java language.
-
Possess a working knowledge of the Unified Modeling Language (UML) and its most important notations.
-
Understand the concepts behind event-driven programming and have experience implementing Graphical User Interface (GUI) code using this paradigm.
-
Have experience using a revision control system to track your changes and collaborate with other software developers.
-
Understand how to use a sophisticated Integrated Development Environment (IDE), including integration with other software tools (e.g., compiler, debugger, and revision control system).
Learning Outcomes: Critical Thinking Skills
One of the additional learning outcomes is the learning, developing, and application of critical thinking skills. These skills will not only you in understanding the data structures and algorithms material or other computer science topics more deeply and fully, but they will also be transferable and applicable to life in general. The critical thinking skills we will cover through this course are: asking good questions, developing sub-goals, consulting with an expert, similar problems / fewer variables, and extreme/edge cases. These skills are motivated by many dispositions, and we will specifically discuss the following dispositions: truthseeking, systematicity, analyticity, inquisitiveness, and cognitive maturity.
In order to evaluate the teaching and learning of the skills listed above, you will fill out "exams" throughout the course. You will receive a participation grade for these exams which does not depend on the quality or quantity of your answers. Additionally, an observer will be sitting in the classes to monitor how often these skills are mentioned and used. In the event that an observer is unable to observe a class, that class will be video recorded. Any video recordings will only be used for the purposes of monitoring, and they will be destroyed in a timely manner.
Learning Outcomes: Workflow Review
The other additional outcome is learning to review other's work.
Your submission will include not just your final code solution but also the entire history of how you arrived at this solution.
The history is recorded using a plug-in for the IntelliJ IDE, which records every change you make to a file in your project.
Note: this plug-in is installed and enabled on all computer systems in Euler 103, 217, and 218.
You will need to download and install IntelliJ Community Edition and the plug-in if you use your own machine.
The plug-in is available on the course
Following the submission deadline of certain assignments, you will be assigned to download, review, and compare other students' programming workflows using a tool that we are developing. Note: each student will receive a randomly generated pseudonym at the beginning of the course, and the workflows will be identified using only these pseudonyms in order to maintain anonymity. We will destroy the connection between the student and their pseudonym following the end of the semester.
Requirements
An important note: in this course, writing code that computes the correct output does not guarantee that you will receive full credit! Some problems require efficient and possibly clever solutions.
One mid-term exam and a final exam will be given. Approximately ten assignments are required.
COS 121 is a prerequisite. According to standard policy, a grade of C- or better must be obtained for this course to meet the major requirement.
Regular checking of the course Brightspace page and your email account (as set in Brightspace) is expected. Updates and information regarding assignments and class activities will be posted on Brightspace and/or distributed through email.
Research Study
Our hypothesis is that reviewing and comparing the collection of recorded workflows with a proper visualization tool is a highly valuable resource for evaluating progress of the individual as well as the class, finding common pitfalls, and identifying struggling and excelling students. Furthermore, we believe that students can greatly benefit from this process, too, as they will be able to compare their workflow to the workflows of others.
We are running a research study to test these hypotheses.
During the course, you will submit your programming workflows using a plug-in that we have developed. Note: the submission of your complete workflow is part of your grade for the class. Your workflow will be anonymized, to the best of our ability, of any personally identifiable information. We require that you follow a set of guidelines (provided on course Brightspace page) in order to help us with this process. Then your workflow will be renamed to a unique and randomly generated identifier or pseudonym that we assign to you at the beginning of the course. You will know what your pseudonym is, and we will keep this relationship only until the end of the course when it will be destroyed.
As we review the workflows, we will improve the reviewing and comparison tools. Some of the assignments may involve analyzing and comparing other students' workflows using these tools.
All that is described above is required of the course. As we believe that this will be highly beneficial, we would like to publish the results in a peer-reviewed article.
During the course, you have the option to participate in the study or not (or change your mind), where participation means that your sanitized workflows and your responses to post-study survey will be published and made available to the public. The informed consent form is on the course Brightspace page. I will remind you to use this form to explicitly state your intention to participate or not throughout the course.
An important note is that you will not be compensated for participating (monetarily, academically, etc.), and you will also not be penalized for not participating (monetarily, academically, etc.). Although we can better support our conclusion with a greater number of subjects, you are free to choose the level of participation in the study. While submitting your workflows is a requirement of the course, the publishing of your workflow is independent of the course, and your decision on whether or not to participate in the publication of the results will not affect your grade.
Extra Credit
You will have several opportunities to receive extra credit throughout the term.
General
Taylor is hosting a Career Fair in October, where approximately 20 companies will come to meet and possibly interview CSE students. Attendance and participation, even as a sophomore, is strongly encouraged, because doing so will kickstart your networking experience, provide you a chance to work on your communication skills, and give you a reason to create/update your résumé.
There are several programming contests this Fall. For example, we typically participate in or host the following programming contests: Taylor CodeCon, CCSC Midwest Conference, and the ACM International Collegiate Contest (usually around the beginning of November).
Assignments adn Projects
Some assignments and projects will have extra credit opportunities. These extra credit problems will be applied directly to the individual assignment/project grade or category of assignment/project, not the final grade.
Performance Assessment
The weighted distribution of deliverables and requirements are shown in the table below. Grading for individual deliverables is described in the following section.
Deliverable | Weight |
---|---|
Projects, Lab Exercises (~11) | 40% |
Mid-term Exam | 20% |
Final Exam | 20% |
Workflow Review, Critical Thinking | 10% |
Attendance, Quizzes, Participation, etc. | 10% |
General Extra Credit | ≤+5% |
We will use Plickers in class to give answers during pop quizzes and to take attendance. You will receive a Plicker card at the beginning of the course. If you lose your card, let me know immediately, and I will reprint your card. Attendance, Quizzes, and Participation is determined by Plicker use as well as your Piazza activity.
General Course Policies
The following are general policies and details for courses that I instruct. Unless otherwise stated above, these policies apply to this course. Please read them carefully.
Scoring and Grading #
Assignments are broken down into individually graded items. Any item to be graded will be scored on the 3-point scale shown below.
3 | A | perfect solution, meets every requirement and expectation, clearly demonstrates thorough understanding |
2 | C | solution is satisfactory, demonstrates understanding but with minor flaws, only partially correct |
1 | D- | solution submitted, but clearly not correct, contains serious flaws |
0 | F | unsatisfactory, nothing of value was submitted, does not satisfy requirements |
A score of 0, 1, and 3 are clearly identifiable; anything not clearly identifiable is scored a 2. If I feel a particular item is more important and therefore should carry more weight, I may use a multiplicative factor (\(n\)) to change the possible scores for that item to be 0, \(n\), \(2n\), and \(3n\).
The reason for using discrete values is to avoid arguments over unimportant issues, to remove (as much as possible) the subjectivity in grading, to allow (as much as possible) room for unit/automatic testing systems, and to reduce the turnaround time for receiving a grade. Furthermore, this scoring can often be more telling than some arbitrary number of points.
I convert an individual item score to a letter grade as follows: 0 maps to an F, 1 to D-, 2 to C (average), and 3 to A. For a final grade for an assignment, I use the following chart with \(T\) is the total points available divided by 18.
A- | \((16T,17T]\) | A | \((17T,18T]\) | ||||
B- | \((13T,14T]\) | B | \((14T,15T]\) | B+ | \((15T,16T]\) | ||
C- | \((10T,11T]\) | C | \((11T,12T]\) | C+ | \((12T,13T]\) | ||
D- | \((4T,6T]\) | D | \((6T,8T]\) | D+ | \((8T,10T]\) | ||
F | \([0T,4T]\) |
Below is an interactive table. For example, letter grades for points (\(T\) above) are given below.
A- | A | ||||||
B- | B | B+ | |||||
C- | C | C+ | |||||
D- | D | D+ | |||||
F |
Note: there will be no rounding up when determining your final score. For example, receiving a 16 out of 18 will always be a B+ and never an A-. I do reserve the right to award a higher grade than strictly earned; outstanding attendance and class participation figure prominently in such decisions.
Exams and final course grade will be scored similarly.
I have based my grading philosophy on an article by Dr. William J. Rapaport.
Late Assignments
As in the world outside academia, time management is a valuable and import skill to master. The assignments for this course are designed to help you learn and master the computer science material. As in the world outside academia, time management is a valuable and important skill. In an effort to help you understand and master the material as well as to help you develop good time management skills, no assignments will receive credit if turned in late. Assignments will have a cut-off set for the due date and time, and only commits with timestamps before the due date and time will be accepted for Git-based assignments.
“Slothfulness casts into a deep sleep, and an idle person will suffer hunger.
”
— Proverbs 19:15
Attendance
Physical attendance is required. I will be in class each day, and I expect you to be there also. In general, I am very understanding about students who must miss class due to a sanctioned Taylor activity, job interview, family emergency, and the like. If possible, let me know in advance if you will not be in class. I will work with you to arrange make-up instruction, quizzes, etc.
Many class periods will include discussion of reading materials and examples. You are responsible for everything that occurs when you are away for any type of absence. I will work with you if you have an excused absence, but you are responsible to communicate (in person during office hours or by e-mail) with me when an absence is excused. Exams and Quizzes which are missed may not be made up unless it is cleared with me PRIOR to class. Any make-up exam or quiz will be taken at an agreed upon time. (No exceptions!) Communication is essential!
Along with a physical presence, it is important to have a mental presence. Come to class prepared to participate in discussions. Readings are expected to be completed by the date they are listed in the schedule. Refer to the Electronics Usage section for more details.
Examples and other materials presented in class may contain errors. Therefore, it is not wise to take notes in class without thinking. Materials recorded but not understood is less valuable than materials understood but not recorded. There should be "real-time" thinking on the part of both the instructor and the student during class. If materials are not understood, a question should be asked. If an error is made, the student should make the instructor and the rest of the class aware of it.
See attached for university-wide policy on excused absences.
Electronics Usage
Research shows that computer/tablet/phone usage during class, even for taking notes, has a negative impact on retention, processing, and performance. Therefore, except for pre-generated materials such as presentations, computer use during lectures is disallowed, even if computers are accessible in the room. Note that this policy only applies to times of lecturing and not during lab time or certain participation activities.
An exception may be granted by writing a 1-page paper arguing why you choose to use an electronic device in the classroom. This paper must present a reasonable argument against studies like the one cited in this recent NPR article and this Business Insider article. Important: the exception comes with the caveat that you must sit where you will not disturb others, and that you may not use the device to check e-mail, engage in social networking, surf the web, play video games, or do any other activity not directly relevant to current classroom activity.
Confidentiality
Students should talk in person or use the LMS (Moodle / Canvas / Blackboard / Brightspace) to communicate sensitive information to the professor (such as grades).
Students may be asked to (or choose to) use external information systems such as Slack, GitHub, Piazza, Ed Discussion, and/or Google applications for this course. Students should not transmit sensitive information using these external communication services. Taylor University has no control over information shared on these external platforms.
Students should not communicate sensitive information over email. Email is nonsecure.
General University and Department Policies
The following are general university or department policies that apply to this course.
Please read them carefully.
Final Exams Policy
“Taylor operates on an academic calendar, which includes finals week as an integral part of each fall and spring term. During that week, each class meets at the time designated in the published exam schedule.
Students must meet for their final examinations at the assigned hours listed in the finals week schedule. Exceptions will be made only because of serious illness or the death of an immediate member of the family (mother, father, brother, sister, grandparent, spouse, or child). Reasons such as plane schedules, availability of flights, and rides leaving early are not acceptable exceptions. Contact the appropriate School dean for requests that qualify as stated above.
Students scheduled to take more than two final exams on the same day may, with written permission from a faculty member, reschedule an exam(s) to maintain a maximum of no more than two exams per day. Students should contact the Registrar's office to begin the rescheduling process. Rescheduling must be approved at least 10 class days prior to the beginning of exam week.
”
Copied from Student Handbook on 2022.08.10.
(Un)Excused Absence Statement
“Class attendance is expected as your presence is an important part of your learning and also your classmates' learning. You may submit an excused absence via the online form. The Excused Absence Form is also available via Quicklinks on the student portal. If you have questions about excused absences, contact Ms. Trina Hartman. The Class Attendance Policy is located in the catalog and outlines attendance expectations, including criteria for excused absences.
”
Updated 2025.01.23.
Academic Resources and Accommodations
See the "Support Services" widget on the Taylor Brightspace homepage for links and full descriptions of support services and additional resources to support your academic work (e.g., Library, Writing Center, Tutoring, AEC, Attendance Policy-Excused Absence, Title 9, Counseling, ADA).
AEC | Any academic need |
Jill Smith | Peer tutoring |
Scott Barrett | Students with disabilities support services |
Writing Center | Help with any part of the writing process |
Zondervan Library email, web |
Student research assistance |
For help with any part of the research process, please email zondervanlibrary@taylor.edu to connect with a librarian or to set up an appointment. Walk-up assistance is available during most of the Library's open hours. See the Library's website for more details on hours and to connect via chat.
Updated 2025.01.23.
Learning Management Systems
The Computer Science and Engineering department uses Brightspace as our Learning Management Systems.
You are responsible to check the appropriate LMS regularly for assignment due dates and other announcements posted to the site. For due dates, the calendar is your friend.
Collaboration
The Internet has fundamentally changed how we work in many dimensions, two of which are in collaboration and in assistance. Sites like stackoverflow.com allow a way for a programmer to get help with almost any programming-related problem. While collaboration and assistance—whether by peer, community, instructor, or AI—can bring about learning and help with troubleshooting, your task as a university student is to learn how to discover, diagnose, and correct bugs on your own. Each assignment and project will state how much collaboration is allowed for the three possible areas listed below.
- understand the problem
- develop a solution
- implement and debug
Note: if there is any ambiguity in the acceptable level of collaboration, check with the instructor; never assume that collaboration is implicitly allowed. No collaboration of any kind—Internet, peer, book, cheat sheets, etc.—is allowed for quizzes and exams unless explicit approval is given.
Honesty and Academic Integrity
As a student at an institution whose goal is to honor Christ in all that is done, I expect you to uphold the strictest standards of academic integrity. You must do your own work, cite others when you present their work, and never misrepresent your academic performance in any way. Violation of these standards stains the reputations of you as a student, Taylor as an institution, and Jesus as our Lord. Such a violation will result in your failing the course and other disciplinary action by the University.
It is important to note that, although collaboration and getting feedback on one's own writing and coding are essential parts of the writing process, having a text or program altered for the writer/coder is not.
- Plagiarism
- In an instructional setting, plagiarism occurs when a person presents or turns in work that includes someone else's ideas, language, or other (not common-knowledge) material without giving appropriate credit to the source.
- Common Knowledge
- any knowledge or facts that could be found in multiple places or as defined by a discipline, department, or faculty member.
Plagiarism will not be tolerated and may result in failing this course, and may also result in further consequences as stipulated in the Taylor catalog.
“Academic dishonesty constitutes a serious violation of academic integrity and scholarship standards at Taylor that can result in substantial penalties, at the sole discretion of the University, including, but not limited to, denial of credit in a course as well as dismissal from the University. Any act that involves misrepresentation regarding the student's academic work or that abridges the rights of other students to fair academic competition is forbidden. Academic dishonesty includes, but is not limited to, cheating on assignments or exams, plagiarizing, submitting the same (or substantially the same) paper in more than one course without prior consent of all instructors concerned, depriving others of necessary academic sources, sabotaging another student's work, and using without attribution a computer algorithm or program, or AI without attribution and prior approval from the professor. In short, a student violates academic integrity when he or she claims credit for any work not his or her own (e.g., words, ideas, answers, data, program codes, music), including having a peer or parent contribute material, or when a student misrepresents any academic performance. All major acts of academic dishonesty, as defined herein, must be reported by the faculty member to their dean and the Office of Student Development. Departments or professors may have discipline- or course-specific policies.
Plagiarism: In an instructional setting, plagiarism occurs when a person presents or turns in work that includes someone else's ideas, language, or other (not common-knowledge) material without giving appropriate credit to the source.
Taylor distinguishes between major and minor plagiarism infractions. Examples of minor infractions include inappropriate or inadequate citing or not crediting ideas from class readings. Examples of major infractions include taking significant portions of text from any source with no attribution or having a peer or AI software help write the paper. Please see the Academic Dishonesty and Plagiarism sections in the student handbook for full descriptions.
Reference to the “Support Services” available within each Brightspace course that refers students to several academic support resources. (Library, Writing Center, Tutoring, AEC, Attendance Policy-Excused Absences, Title 9, Counseling, ADA): Please see the “Support Services” tab in all Blackboard courses for full descriptions of Academic Dishonesty and Plagiarism.
”