Instructor: James Skon
Office: Chalmers 428
Phone: 740-427-5369
Department: Computing
Class Location: Chalmers 300
Meeting Times: Monday, Wednesday, Friday, 1:10–2:00 PM
Office Hours
Times: Monday,Wednesday,Friday 9:00–11:00 AM (Chalmers 357)
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.
| Component | Percentage |
| Quizzes | 20% |
| Weekly Labs in Pairs | 45% |
| Midterm Exam | 10% |
| Final Exam | 25% |
| 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.
Schedule
| Date | Slides | Examples | Section/Topic/Reading Assignment | Quiz | Due |
| Fri, Aug 28 | Intro 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 | |||
| Mon, Aug 31 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Sept 2 | Intro 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 | |
| Fri, Sept 4 | Ch1 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 | 1 | Lab 0 |
| Mon, Sept 7 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Sept 9 | Ch2 | Complex Shapes Box Template Makefiles | Chp 2: Operator Overloading. Inheritance and Templates. Activity Lab2 | 2 | |
| Fri, Sept 11 | Ch3 | randompoints | Chp 3: Pointers. Pointer example. Pointer Activity Template Activity | Lab 1 | |
| Mon, Sept 14 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Sept 16 | More pointers FunctionPointer FunctionObjectPointer Object pointers Object pointers with inheritance | Practice with Big-O notation. Notes More on Pointers | 3 | ||
| Fri, Sept 18 | Animals ArrayType ArrayShapes | Chp 3: Array based lists, Virtual functions and abstract classes Lab 3 | 4 | Lab2 | |
| Mon, Sept 21 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Sept 23 | Ch4, Ch13 | ArrayListAnimal 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 | |
| Fri, Sept 25 | STL | BFS, Shortest Path Search Map Iterator CampusMap STL algorithms CountWebpageWords AlgorithmsDemo (US States) | Chp 4 and 13: Iterators, Algorithms, and practice Web Words Activity | 6 | |
| Mon, Sept 28 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Sept 30 | Ch5 | Linked Lists Virtual Functions Linked List Activity | Chp 5: Intro to Linked Lists Lab 5 LeetCode | 7 | Lab 3 |
| Fri, Oct 2 | Doubly Linked Lists Linked List Activity Animations | Linked Lists continued. Douby linked lists. Doubly Linked List | |||
| Mon, Oct 5 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Wed, Oct 7 | Doubly Linked Lists Circular Linked Lists Recursion Activity Recursion POGIL1 Peirce Lines | LL finished and LL variations (circular linked lists etc.). Intro to Recursion. | 8 | ||
| Fri, Oct 9 | October Break — No Class | ||||
| Mon, Oct 12 | Ch 6 | Pair Example Recursion POGIL 2 PascalTriangle | Chp 6: Recursion. Some video lessons on recursion from Scmp 118. Part1, Part2 Memoization | 9 | Lab 4 |
| Wed, Oct 14 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Oct 16 | Study Guide | Midterm Exam | |||
| Mon, Oct 19 | Reverse String Expression Evaluation Word Find Permutations URLExtractor N-Queens | Recursion continued (recursion and backtracking) Lab 6 | |||
| Wed, Oct 21 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Oct 23 | Ch 7 | Stacks Balance Parenthesis MazeSolve Call Stack | Chp 7 Stacks Lab 7 | 10 | Lab 5 |
| Mon, Oct 26 | Stack and Recursion Case Study: DAG & Topological Sort Maze Stack Stacks (Array, LL) Queues (Array, LL) | Chp 7 Stacks. | 11 | ||
| Wed, Oct 28 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Oct 30 | Ch 8 | Queue Implementation Simulation Activity Peirce Lines | Chp 8: Queues Lab 8 | 12 | Talk Attendance Lab 6 |
| Mon, Nov 2 | Priority Queues Heros Task Manager Linux Linux at Kenyon | Chp 8 finished. Linux Slides Linux Commands Logging in to Linux VC Code Editing remotely | 13 | ||
| Wed, Nov 4 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Nov 6 | Ch 9 | Linear Search Binary Search Hashing Intro Hash Functions Intro Hash Functions Linear Probing Animations | Chp 9: Searching and Hashing Algorithms Lab 9 | 14 | |
| Mon, Nov 9 | Quote Hash Collision Handling HashBucketsWithChaining | In Class Activity Chp 9 Finished | 15 | Lab 7 | |
| Wed, Nov 11 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Nov 13 | CH 10 | Sort 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 | |
| Mon, Nov 16 | Sorting 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 QuickSort. ShellSort. A slow sorting algorithm. | 17 | Lab 8 | |
| Wed, Nov 18 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Nov 20 | CH 11 | Binary Trees Representation Binary Search Trees Binary Tree Traversal Clone Tree | Ch 11: Binary Trees, Tree Traversals, Binary Search Trees (intro) Tree Activity | 18 | |
| Nov 23–27 | Thanksgiving Vacation — No Classes | ||||
| Mon, Nov 30 | Functions as parameters AVL Trees Animation B-Trees Animation | Slides Ch11: Functions as Parameters, AVL Trees, Balancing AVL Trees, B-Trees | Quiz: csits.kenyon.edu | ||
| Wed, Dec 2 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Dec 4 | Greedy algorithms Greedy Examples Huffman Code Example Heap Sort Animation | Ch 11: Heap Sort | Quiz: csits.kenyon.edu Quiz on Greedy Algorithms | ||
| Mon, Dec 7 | Ch 12 | Animations Introduction to Graphs Representation of Graphs Adjacency Matrix Adjacency List Prim’s Algorithm Kruskal’s Algorithm | Ch 12: Graphs | 21 | Lab 9 |
| Wed, Dec 9 | Review, practice, lab work, or continuation of the preceding topic. | ||||
| Fri, Dec 11 | Depth First Search Breadth First Search Shortest Path Maze Solve Recursive Maze DFS(Stack) and BFS(Queue) | Chp 12: Graph Algorithms. | 22 | Lab 10 | |
| Final Exam | Final Study Guide Official final-exam date and time | ||||
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.
