CMPS 2020 - Data Structures: Data Abstraction and Algorithms

CMPS 2020 - Spring 2019
Derrick McKee

Office: Sci III 321, 654-2819
Office Hours:
MonWed: 8am-9am, 10am-11am, 12pm-1pm
Thurs: 7am-7:20am, 9:50am-10am
Fri: 8am-9am
Email: Contact Me
Course website:

Course meets:
Lecture: MWF 9:00am-9:50am Sci III 240
Lab: Th 7:20am-9:50am in Sci III 240

Course Description:
Builds upon the foundation provided by CMPS 2010 to introduce the fundamental concepts and design of object-oriented programming, data structures, algorithms, and algorithm analysis. The course focuses on the concepts and implementation of fundamental data structures (linked lists, stacks, queues, trees, hash tables, and graphs). Other topics include: pointers, recursion, searching and sorting algorithms, and the basics of algorithm analysis.

ACM/IEEE Computer Science Curriculum (2013):
(CS-PL1/CE-PRF1,2) Object-Oriented Programming
(CS-PL2/CE-PRF3) Functional Programming
(CS-SDF2/CE-PRF4) Fundamental Programming Concepts
(CS-SDF3/CE-PRF4) Fundamental Data structures
(CS-SP8/CE-PRF0) History of computing

ABET Outcome Coverage:
3b. An ability to analyze a problem, and identify and define the computing requirements and specifications appropriate to its solution. Laboratory and homework assignments will require analysis of the problem for successful completion of the assignments.
3c. An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs. An ability to understand the analysis, design, and implementation of a computerized solution to a real-life problem. Laboratory and homework assignments require analyzing the presented problems, designing a solution to those problems, and implementing the solution in a high-level programming language.

(1) MATH 0930 or (2) other satisfaction of the entry Level Mathematics requirement AND CMPS 2010 with C- or above.


Starting Out with C++: From Control Structures through Objects, 8th edition. Tony Gaddis. Publisher: Addison Wesley, 2014. ISBN: 0133769399

Topics covered in CMPS 2010:
Chapter 1 Introduction to Computers and Programming
Chapter 2 Introduction to C++
Chapter 3 Expressions and Interactivity
Chapter 4 Making Decisions
Chapter 5 Looping
Chapter 6 Functions
Chapter 7 Arrays
Chapter 9 Pointers
Chapter 10 Characters, Strings and the string Class
Chapter 11 Structured Data
Chapter 13 Introduction to Classes
Chapter 14 More About Classes
Material Covered:
Chapter 15 Inheritance, Polymorphism and Virtual Functions
Chapter 16 Exceptions, Templates and the Standard Template Library (STL)
Chapter 17 Linked Lists
Chapter 18 Stacks and Queues
Chapter 19 Recursion
Chapter 20 Binary Trees

Data Abstraction & Problem Solving with C++, 6th edition. Frank Carrano. Publisher: Prentice Hall / Pearson. ISBN: 0-321-43332-7.
Material Covered:
Chapter 1 Data Abstraction: The Walls
Chapter 2 Recursion
Chapter 3 Array-Based Implementations
Chapter 4 Linked-Based Implementations
Chapter 5 Recursion as a Problem-Solving Technique
Chapter 6 Stacks
Chapter 7 Stack Implementations
Chapter 8 Lists
Chapter 9 List Implementations
Chapter 10 Algorithm Efficiency
Chapter 11 Sorting Algorithms and Their Efficiency
Chapter 12 Sorted Lists and Their Implementations
Chapter 13 Queues and Priority Queues
Chapter 14 Queues Implementations
Chapter 15 Trees
Chapter 16 Tree Implementations
Chapter 17 Heaps
Chapter 18 Dictionaries and Their Implementations: Hashing
Chapter 19 Balanced Search Trees
Chapter 20 Graphs
Chapter 21 Processing Data in External Storage
View the weekly schedule on the course website to see the order in which these topics will be presented.

Students are responsible for their own attendance. The topics covered in lecture will be listed on the course website. Lab attendance is not required but is strongly encouraged.

Academic Integrity Policy:
Homeworks and labs may be worked on and discussed in groups. If the assignment is a group assignment, the group can turn in one assignment for the entire group. If the assignment is an individual assignment, each student must turn in their own code; no direct copying is allowed. Refer to the Academic Integrity policy printed in the campus catalog and class schedule.

Services for Students with Disabilities:
To request academic accommodations due to a disability, please contact the Office of Services for Students with Disabilities (SSD) as soon as possible. They may be reached at 661-654-3360 (voice), or 661-654-6288 (TDD). If you have an accommodations letter from the SSD Office, please present it to me during my office hours as soon as possible so we can discuss the specific accommodations that you might need in this class.

Tutoring Center and Open Use Computer Lab:
The walk-in computer lab in Sci III 324 is available for use by students in this course outside of class time on a first come, first serve basis. Priority in the lab is given to students who are completing assignments for Computer Science and Computer Engineering courses.
Tutoring is also provided on a limited basis in the walk-in lab. A tutoring schedule will be posted on the department website by the end of the first week of classes. Students in this course may ask the tutors for assistance on assignments. The tutors are not allowed to solve the assignment for you, but they can assist with problems like cryptic compiler errors.


Lab assignments will be posted on the course website. Labs are worth 4 points and usually involving writing a short programs. There will be one lab assignment each week (THURS) that will be due before midnight. Partial credit will be given for incomplete labs. The lowest lab grade will not be counted towards the overall lab grade. (1 free lab). You may work in groups up to two persons for labs only. I will only need ONE submission of your group's lab assignment with each of the group members' names commented at the top of your lab source code.

Homework assignments and due dates will be posted on the course website. Homeworks are worth 4 points and consist primarily of a moderately sized programming project related to the lecture material from that week. Each homework assignment will be due the following week on Tues before midnight (11:59 PM), unless stated otherwise. Programs which do not compile may be given partial credit depending on the severity of the error(s), but no more than half credit. No homework grades are dropped, however extra credit assignments could be given throughout the semester.

Late Policy:
Late assignments will not be accepted. If there is a late policy that is posted on the assignment, then that policy will apply for that particular assignment.

Labs/Homework Submission:
Assignments are submitted by saving a copy of your final source code to the corresponding depository directory. The assignments' file name must be exact. A server side script will run to extract the file(s) at the time of the assignments' due date.

During lab days, once you have completed your lab, you may show the instructor the assignment and have your assignment graded then. If you did not complete your lab durint lab time, you may submit your lab source code file(s) to the corresponding depository directory before midnight.

Some homework assignments may be handwritten assignments, so either a hard copy submission or a scanned copy of your assignment may be submitted.

Allow at least one week after the assignment due date for the grade to be posted. It is your responsibility to check to see if your assignment has been received/graded and to contact the instructor if it has not been received. If your assignment received an asterisk on the grades report, you have until the end of the week to contact me or the assignment will not be counted.

Out-of-class Time:
It is expected that students in a 4 unit course such as this will spend 10 to 15 hours each week outside of class working on assignments or reading sections from the textbook. Several of the homework assignments in this class will require approximately 10 hours to complete, so be sure to budget enough time to complete the assignment before the due date.

Quiz dates will be announced ahead of time, however they could be given at any time during a Mon Wed or Fri lecture. On average there will be a quiz after every 2 - 5 lecture days. Quizzes will consist of a few questions based off lecture material, lab assignments, and/or homework assignments. Expected time to complete will be about 10-15 minutes. Quizzes can not be made up. If more than three quizzes are missed, the student will receive a 0% for quizzes within the grade distribution.

Midterm 1 will be given (during week 7), TBA, Thursday
Midterm 2 will be given (during week 13), TBA, Thursday
** subject to change

Makeup midterms will not be given. Please contact the instructor if you have a compelling reason for missing or rescheduling a midterm. A midterm could be counted proportionally higher if you have a valid reason for missing a midterm.

The final is on Monday May 20, 8-10:30am

If you cannot make this time because it conflicts with another final or you have more than two finals scheduled that day, contact the instructor ONE WEEK in advance of the final to schedule an alternate time. If you do not attend the final, the highest acheivable grade for this course is a D+.


Homework / Lab Rubric Description
4All criteria of the assignment was met with no compilation errors
3Mostly all criteria of the assignment was met with no compilation errors
2Partial criteria of the assignment was met with compilation errors
1Little to no criteria of the assignment was met
Grade Distribution
Midterm 120%
Midterm 220%