CS 23001 Computer Science II: Data Structures & Abstraction
Spring 2024
Department of Computer Science
Kent State University

Instructor: Dr. Jonathan I. Maletic and Office Hours

Course Time: MW 2:15pm - 3:30pm
Course Location: 110 Smith Hall

Course Description: Advanced computer programming design, and development with a primary focus on data structures and abstraction using an object oriented programming language.

Prerequisite: CS 13011 Computer Science I-A and CS 13012 Computer Science I-B both with C (2.0) or better
Pre/Co requisite: CS 23022 Discrete Structures for Computer Science (need to have taken or be taking same term)

Text and Reference Books (optional, not required):
  • Data Structures and Other Objects Using C++, Main and Savitch, Addison Wesley
  • The C++ Programming Language, Stroustrup, B., Addison Wesley
Course website:

Course Objectives:
  • Continue developing a disciplined approach to problem solving methods and algorithm development.
  • Provide a clear understanding of the concepts of abstract data types.
  • To teach a number of the basic algorithms and data structures used in computer science.
  • To teach the concepts of object oriented programming.
  • To provide a foundation for further studies in Computer Science.
  • On completion of this course, students must have a basic understanding of the concepts of abstract data types and object oriented programming methods. Data structures such as lists, stacks, queues, strings, and trees must be understood. The student will have working knowledge of the concepts of classes and objects, operator overloading, constructors, destructors, and generics. The concepts of dynamic data structures and recursion must be well understood.
Learning Objectives: Students will be able to apply and compare the basic abstract data structures used in computer science. These include strings, sets, stacks, queues, lists, and binary trees. Students will understand and demonstrate their ability to construct abstract data types and solve problems using an object oriented programming language. This will include demonstrated understanding of recursion, dynamic memory management, generics, and operator overloading.

Course Organization and Grading:
Lecture and Lab attendence is a critial component of the course and is reflected in the final grade. The class participation grade will be determined in part by attendence along with in class quizes or assignments. Additionally, credit will be given for participating in online discussion. These assignments will be completed during the class period and handed in during class. No makeups for inclass assignments will be given. The lab participation grade will be derived from attendence and completing assignments during lab. Grades will be available via Canvas.

    15% Exam 1 - Week of Feb. 19th in Lab
    15% Exam 2 - Week of March 18th in Lab
    35% Final Exam - Wed. May 8th, 12:45 - 3:00pm (MSB 162, 139, 243)
    20% Projects (4 projects, a part due each week)
    5% Lecture participation (attendence/inclass and online discussion)
    10% Laboratory (lab attendence, assignments, quizes)

    Final Grading Scale:
    Scale: 0% 60% 67% 70% 73% 77% 80% 83% 87% 90% 93%
    Grade: F D D+ C- C C+ B- B B+ A- A
    GPA: 0.00 1.00 1.30 1.70 2.00 2.30 2.70 3.00 3.30 3.70 4.00
There are two exams during the term. The first is in the 6th week, before midterm. The second will be in the 10th or 11th week. These two exams will be approximately one hour each and be done during as part of lab. Additionally, there will be a final exam during finals week as determined by the university. The final exam will be 2 hours and 15 minutes. Exams will be mainly short answer and require the student to write and read code. Example questions will be provided.

There is a laboratory associated with lecture. The lab is to complement lecture and support the application of materials learned. There will be a lab instructor; attendance and participation is required. The lab will consist in part of short lectures by the lab instructor and hands on exercises that will assist in the learning process. For each lab meeting there will be a score given and is based on attendance and successful completion of lab exercises. Additionally, there will be 3 to 5 quizes given in lab that count towards the final lab grade.

There will be at four substantial projects given over the term. These can be completed partially during the lab time however, the bulk of the work will be completed outside of lab/lecture time. The requirement for these assignments will be posted on the course web page. The projects will be broken down into three to four parts. Each part will have its own due date and count as a percentage of the total project grade. Due dates for each part of the project will be posted on the course website. The general topics of the programs will be:
  • Abstract Data Types & Classes
  • Dynamic Memory and Containers
  • Linked lists and templates
  • Dynamic Data Structures (Complex Pointers)

Honors Students:
For each project there will be an assoicated challenge. Honors students are required to complete this challenge. This will involve a write up to address addiitonal questions about the project and include implementing some more functionality on top of normal project requirements.

Other Notes:
  • Lecture is the student's responsibility, if class is missed; it is in the students best interests to get the notes from a fellow student. The instructor does not have slides or lecture notes to hand out.
  • There will be no make up exams.
  • There will be no make ups for in class assignments or quizzes.
  • Please mute the sound on phones, lab tops, and other electronic devices.
  • Any modifications to the syllabus will be made on this page and noted.
  • This course was previously numbered CS 33001. It was changed to CS 23001 in Fall 2012. There was no change in content in the course due to this numbering change.
University Requirements and Announcements:
  • Registration Requirement: The official registration deadline for this course can be found on the Registrars calendar . University policy requires all students to be officially registered in each class they are attending. Students who are not officially registered for a course by published deadlines should not be attending classes and will not receive credit or a grade for the course. Each student must confirm enrollment by checking his/her class schedule (using Student Tools in FlashFast) prior to the deadline indicated. Registration errors must be corrected prior to the deadline. Every class has its own schedule of deadlines and considerations. To view the add/drop schedule and other important dates for this class, go to the Students Tools and Courses tab in FlashLine and choose either View or Print Student Schedule. To see the deadlines for this course, click on the CRN or choose the Drop or Add a Course link and click on the green clock next to the course under Registration Deadlines.
  • The Student Survey of Instruction (SSI) are administered online via Flash Survey - via Flashline.
  • University policy 3342-3-01.3 requires that students with disabilities be provided reasonable accommodations to ensure their equal access to course content. If you have a documented disability and require accommodations, please contact the instructor at the beginning of the semester to make arrangements for necessary classroom adjustments. Please note, you must first verify your eligibility for these through Student Accessibility Services (contact 330-672-3391 or visit for more information on registration procedures).
  • University policy 3342-3-01.8 deals with the problem of academic dishonesty, cheating, and plagiarism. None of these will be tolerated in this class. The sanctions provided in this policy will be used to deal with any violations. If you have any questions, please read the policy or contact the instructor. For the University's complete policy on procedure on cheating and plagiarism go to: and search for policy 3-01.8.
  • Diversity statement: Kent State University is committed to the creation and maintenance of equitable and inclusive learning spaces. This course is a learning environment where all will be treated with respect and dignity, and where all individuals will have an equitable opportunity to succeed. The diversity that each student brings to this course is viewed as a strength and a benefit. Dimensions of diversity and their intersections include but are not limited to: race, ethnicity, national origin, primary language, age, gender identity and expression, sexual orientation, religious affiliation, mental and physical abilities, socio-economic status, family/caregiver status, and veteran status.
  • The University welcomes individuals from all different faiths, philosophies, religious traditions, and other systems of belief, and supports their respective practices. In compliance with University policy and the Ohio Revised Code, the University permits students to request class absences for up to three (3) days, per term, in order to participate in organized activities conducted under the auspices of a religious denomination, church, or other religious or spiritual organization. Students will not be penalized as a result of any of these excused absences. The request for excusal must be made, in writing, during the first fourteen (14) days of the semester and include the date(s) of each proposed absence or request for alternative religious accommodation. The request must clearly state that the proposed absence is to participate in religious activities. The request must also provide the particular accommodation(s) you desire. The request is then approved, or, approved with modification (a mutually agreeable alternative arrangement). For more information regarding this Policy contact the Student Ombuds (
Course Content:
Abstract Data Types (ADTs) and Object Oriented Concepts:
  • Definition of ADTs
  • Encapsulation and information hiding
  • Classes, methods, constructors, and destructors
  • Information hiding: Public, private, (and protected)
  • Operator overloading and polymorphism
  • Generics (templates)
  • Inheritance, polymorphism, and virtual functions (dynamic variable binding)
Dynamic Memory Structures:
  • Allocation and de-allocation of memory (new, delete)
  • Dynamic Arrays
  • Pointers, Linked Lists (insertion, deletion, etc.)
Abstract Data Structures & Algorithms:
  • Array, multi-dimensional arrays records, files, strings
  • Lists, stacks, and queues, sets, bags, vectors
  • Containers and iterators
  • Infix, prefix, and postfix notations and conversion algorithms
  • Binary trees, binary search trees
  • Recursion: Design and implementation of recursive functions
  • Hashing and priority queues
  • Brief introduction to graphs & associated algorithms
Additional Topics:
  • Multi-file programs, make
  • Testing and debugging techniques
  • Exception handling

Last update (EST): January 11 2024 13:20:35.