COMP 218.00 Data Structures Fall 2025

Instructor: James Skon
Office: Chalmers 428
Phone: 740-427-5369
Department: Computing

Class Location: Chalmers 320
Meeting Times: Tuesday & Thursday, 1:10–2:30 PM

Office Hours

Times: Monday,Wednesday,Friday 9:00–11:00 AM (Chalmers 428)
Appointments: [Book Meeting Link]
Walk-ins welcome, but students with appointments will be given priority.

Class tutor: Wisdom Akanwe
MSSC Hours: MSSC Sunday 7:00-8:30pm and Tuesdays, Thursdays 7:00-8:00pm.

Course Description and Learning Objectives

The main goal of this course is to learn basics of fundamental data structures used in computer science and practice using them to solve problems. These include: stacks, queues, lists, heaps, hash tables, trees, and graphs. We will also examine a number of searching and sorting algorithms. Both array-based and linked implementations are analyzed where appropriate. You will also learn how to use the pre-written classes contained in the Standard Template Library (STL). An introduction to analysis of algorithms and the big-O notation will be given. Analysis of major algorithms will be discussed. Another important learning goal in this course is to practice software engineering principles and write programs with good user interface. Good programming practices are emphasized. We will cover most of the chapters in the textbook. We will be using pair programming so that you practice software development as a team in a collaborative way. This is often a necessary and highly valued skill. Many real life software development projects are collaborative.
Prerequisite: COMP 118 or equivalent, proficiency in C++.

Course Resources

  • Textbook: Data Structures Using C++, 2nd Edition, D. S. Malik. [PDF Link]
  • Test source code: [Link]
  • Programming Environment:
    • Replit.com: Web-based IDE, no installation required, but may be slow on the free tier.
    • Visual Studio Code: A local IDE requiring installation. C++ developer tools must be installed. [Windows (C++), MacOS. (If the “code.” command does not work: Link).]
  • GitHub:
    • GitHub: Sign up with your Kenyon email using a name-identifiable username.
    • Assignments will be distributed via GitHub Classroom.
    • Join using this link: [GitHub Intro Assignment]
    • Clone to either Replit or your local VS Code environment.
  • Moodle: All assignments and quizzes must be submitted via Moodle.

Prepare Programming Environment

Visual Studio with C++

Follow the instructions here: VS Code Setup with C++
Get the Hello World Program Running.

Artificial Intelligence (AI) Use Policy

The purpose of this course is for students to develop a solid understanding of data structures and to gain hands-on experience programming in C++. To achieve this, it is essential that students practice writing code themselves. Therefore, the use of AI tools (such as ChatGPT, GitHub Copilot, or similar) is restricted as follows:

Permitted Use:

Students may use AI tools only when explicitly directed to do so as part of a specific assignment. For example, assignments may instruct students to:

  • Use AI to generate test data
  • Use AI to create test programs that evaluate student-written classes
  • Use AI to review code they have written and tested, for suggestions or feedback

These cases are clearly described within the assignment instructions.

Prohibited Use:

Unless explicitly permitted, students may not use AI tools or online code repositories (e.g., StackOverflow, GitHub, Reddit, etc.) to:

  • Generate or complete code for assignments
  • Solve programming problems
  • Rewrite or improve assignment solutions before submission

All submitted code must reflect the student’s own work and understanding. Submitting AI-generated or copied solutions is considered academic dishonesty.

Rationale:

This course is focused on teaching students how to think critically about code, design data structures, and implement algorithms themselves. The learning objective is not to delegate these tasks to AI, but to develop the skills to do them independently.

Consequences:

Use of AI tools or online sources beyond what is explicitly allowed will be treated as a violation of the college’s Academic Honesty Policy.

If you are unsure whether a particular use of AI is permitted, ask the instructor before using it.


Grading and Evaluation Criteria


Final grades will be determined based on the performance in the following components.

ComponentPercentage
Quizzes20%
Weekly Labs in Pairs45%
Midterm Exam10%
Final Exam25%
100%

Assessments

Quizzes:

  • Short (10-minute) quizzes at the start of most classes
  • Based on reading for the day
  • Bring a laptop to every class.
  • Lowest n quiz scores dropped.
  • No makeup quizzes except in documented long-term situations.

Labs:

  • Weekly pair programming projects.
  • Some labs contain multiple programs.
  • Labs are the most heavily weighted aspect of the course.

Exams:

  • Midterm: March 2
  • Final Exam: December 18, 6:30–9:30 PM (Moodle test)
  • Includes both a traditional test and a programming component.

Participation and Engagement

Active participation is expected. Legitimate absences (illness, religious observances, college athletics) must be communicated in advance.

After each assignment, 2–3 students may be randomly selected to explain their code in class. Participation includes:

  • Attendance
  • In-class engagement
  • Contribution to Moodle discussions
  • Ability to explain submitted code

Programming Assignment Grading Criteria

  • Correctness: Meets the assignment requirements, handles all inputs.
  • Design: Modular code with appropriate use of functions/classes.
  • User Interface: Clear, intuitive, and reusable.
  • Style & Documentation: Readable code with good naming, comments, and formatting.
  • Efficiency: Time and space-efficient solutions expected.

Programs that fail to compile: max 50%.
Programs with runtime errors: max 75%.

Late Policy

Late submissions are only accepted with prior permission via a [Request Form].

  • One Week Extension: Request at least 1 week in advance.
  • Three-Day Extension: Request at least 3 days in advance.
  • 24-Hour Extension: Request up until the due date.

Do not modify submissions after the due date without permission.


Academic Honesty

All work must reflect your own understanding. Pair programming must follow course guidelines. Violations will be handled in accordance with the college’s academic honesty policy. [Policy Link]


Study Tips

  • Read textbook sections before class.
  • Take notes on confusing concepts and ask in class.
  • Participate actively during class and in Moodle forums.
  • Start labs early and follow pair programming practices.
  • Seek help early during office hours or tutoring.

It is expected that you read all the sections to be covered BEFORE the class and come to class prepared to discuss the topics.

File for labs:

Here are files needed for labs: Link

Check this page regularly for updates . This is a tentative schedule to be updated as needed.

DateSlidesExamplesSection/Topic/Reading AssignmentQuizDue
Aug 28Intro
Ch1
Introduction, Logistics, A quick review, Chp 1: Software Engineering Principles
Will AI take our jobs?
Introduction to GitHub
Sign up for GitHub
SSH Key Setup
Simpler C++ and VS Code on Windows
C++ and VS Code on Windows
C++ and VS Code on Mac
Lab 0 – Get First Program running
Sept 2Intro
Pairs
Ch1
SelectionSort Lab 1
Chp 1: Run Time Analysis, and Big-O notation
Install g++, make and git all at once on Windows
Survey
GitHub
Sept 4Ch1
Big-O

Clock
Point
Chp 1 and 2: OOPS concepts, Introduction to C++ Classes
UML UML Class Diagram
Google Diagrams
UML How To
UML Diagrams
UML Association vs Aggregation vs Composition
Google Classrrom setup
1Lab 0
Sept 9Ch2Complex
Shapes
Box Template
Makefiles
Chp 2: Operator Overloading. Inheritance and Templates.
Activity
Lab2
2
Sept 11Ch3randompointsChp 3: PointersPointer example.
Pointer Activity
Template Activity
Lab 1 
Sept 16More pointers
FunctionPointer
FunctionObjectPointer
Object pointers
Object pointers with inheritance
Practice with Big-O notation.
Notes
More on Pointers
3
Sept 18Animals
ArrayType
ArrayShapes
Chp 3: Array based lists, Virtual functions and abstract classes
Lab 3
4Lab2
Sept 23Ch4, Ch13ArrayListAnimal
Vector (ex)
STL Containers
VectorShapes
List (more)
Queue (more) (ex)
deque (more) (ex)
set (ex)
map (ex)
UniqueSubStrings
Ch 4 and 13: Introduction to STL, vector, deque, set, maps, iterators
Queue
Deque
Sets
Lab 4
5
Sept 25STLBFS, Shortest Path Search
Map Iterator
CampusMap
STL algorithms
CountWebpageWords
AlgorithmsDemo (US States)
Chp 4 and 13: Iterators, Algorithms, and practice
Web Words Activity
6
Sept 30Ch5Linked Lists
Virtual Functions
Linked List Activity
Chp 5: Intro to Linked Lists
Lab 5 
LeetCode
7Lab 3
Oct 2Doubly Linked Lists
Linked List Activity
Animations
Linked Lists continued. Douby linked lists.
Doubly Linked List
Oct 7Doubly Linked Lists
Circular Linked Lists
Recursion Activity
Recursion POGIL1
Peirce Lines
LL finished and LL variations (circular linked lists etc.). Intro to Recursion.8
Midterm Break
Oct 14Ch 6Pair Example
Recursion POGIL 2
PascalTriangle
Chp 6: Recursion. Some video lessons on recursion from Scmp 118. Part1Part2
Memoization
9Lab 4
Oct 16Study GuideMidterm Exam
Oct 21Reverse String
Expression Evaluation
Word Find
Permutations
URLExtractor
N-Queens
Recursion continued (recursion and backtracking)
Lab 6
Oct 22Make-up examMake-up exam Chlm 320, 7:00-9:00
Oct 23Ch 7Stacks
Balance Parenthesis
MazeSolve
Call Stack
Chp 7 Stacks
Lab 7
10Lab 5
Oct 28Stack and Recursion Case Study: DAG & Topological Sort
Maze Stack
Stacks (Array, LL)
Queues (Array, LL)
Chp 7 Stacks.11
Oct 30Ch 8Queue Implementation
Simulation Activity
Peirce Lines
Chp 8: Queues
Lab 8
12Talk Attendance
Lab 6
Nov 4Priority Queues
Heros Task Manager
Linux
Linux at Kenyon
Chp 8 finished.
Linux Slides
Linux Commands
Logging in to Linux
VC Code Editing remotely
13
Nov 6Ch 9Linear Search
Binary Search
Hashing Intro
Hash Functions Intro
Hash Functions
Linear Probing
Animations
Chp 9: Searching and Hashing Algorithms
Lab 9
14
Nov 11Quote
Hash Collision Handling
HashBucketsWithChaining
In Class Activity
Chp 9 Finished
15Lab 7
Nov 13CH 10Sort Summary
Sort Animations
More Animations
Selection Sort
Insertion Sort
Bubble Sort
Merge Sort
Ch 10: Sorting algorithms: Selection Sort, Insertion Sort, Bubble Sort, and Merge Sort
In Class Sorting Activity
Lab 10
C++Cast
16
Nov 18Sorting Top 10
Sort Animations with sound
Shell Sort
Shell Sort Demo
Quick Sort
Quick Sort Demo
Quicksort visualization
Ch 10: Shell Sort and Quick Sort. Animations of various sorting algorithms as folk dances. 
MergeSort vs QuickSortShellSort. A slow sorting algorithm.
17Lab 8
Nov 20CH 11Binary Trees
Representation
Binary Search Trees
Binary Tree Traversal
Clone Tree
Ch 11: Binary Trees, Tree Traversals, Binary Search Trees (intro)
Tree Activity
1https://moodle.kenyon.edu/mod/quiz/view.php?id=3971808
Dec 2Functions as parameters
AVL Trees
Animation
B-Trees
Animation
 Ch11: Functions as Parameters, AVL Trees, Balancing AVL Trees, B-Trees19Lab 9
Dec 4Greedy algorithms
Greedy Examples
Huffman Code Example
Heap Sort
Animation
Ch 11: Heap Sort20
Dec 9Ch 12Animations
Introduction to Graphs
Representation of Graphs
Adjacency Matrix
Adjacency List
Prim’s Algorithm
Kruskal’s Algorithm
Ch 12: Graphs21
Dec 11Depth First Search
Breadth First Search
Shortest Path
Maze Solve Recursive
Maze DFS(Stack) and BFS(Queue)
Chp 12: Graph Algorithms.22Lab 10
Final ExamMoodle Test: Thursday, December 18 at 6:30 p.m-9:30p.m.

Git on Windows 11
make on Windows 11

Scroll to Top