Johnson County Community College
Course Syllabus
Computing Sciences & Information Technology (CSIT)
CS 250: Basic Data Structures with C++
Summer 2018


Course Information

Basic Data Structures with C++
T/R 2:00 - 3:15 pm
RC 347
Final Exam
Thursday, Dec 13, 2:00 - 3:50 pm
Course type:
CS 235 OR (CS 200 and CS 210 or CS 236 or CS 255 or CIS 240 or MATH 242)
Rachel Singh
Catalog link:
Course description:
This course continues developing problem solving techniques by focusing on object-oriented styles using C++ abstract data types. Basic data structures such as queues, stacks, trees, dictionaries, their associated operations, and their array and pointer implementations will be studied. Topics also include recursion, templates, fundamental algorithm analysis, searching, sorting, hashing, object-oriented concepts and large program organization. Students will write programs using the concepts covered in the lecture. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.


Class supplies


Data Abstraction & Problem Solving with C++: Walls and Mirrors (7th Edition) 7th Edition
Frank M. Carrano, Timothy M. Henry


The computers at school have Visual Studio 2017 installed on them. If you want to work on programming assignments from home, you will also need an IDE (Integrated Development Environment). There are several free options...


If you're working on your own machine, you'll need to install Git. The standard Git install comes with Git Bash (command line tool) and Git GUI (User Interface tool). Both of these do the same thing, and you can use either depending on your preference.


Instructor info

Rachel Singh
(913) 999-8271
I'm currently an adjunct instructor at JCCC, and I am starting the Masters in Computer Science program at UMKC in Fall 2018. I've taught both as an adjunct and full time at JCCC since 2016, and prior to teaching I worked in web and software development with various languages. I currently have an indie game startup as well.


Assessment breakdown

Each assignment type has a corresponding weight. Each assignment of that type are of equal weight to each other (i.e., every lab is worth the same amount)

Point breakdown

Weight: 10%
Approximate count: 30
Each class period a new lab is given. The labs are meant to be worked on during the class time, where you can ask for help from the instructor and other students. Labs are graded less rigorously, and grade here is based mostly off whether your code is clean, it runs and meets the features.

Weight: 10%
Approximate count: 19
Quizzes to review terminology and concepts. Questions are based on textbook reading.

Weight: 20%
Approximate count: 6
Larger programming projects that contain multiple concepts and are graded with more scrutiny.

Weight: 60%
Approximate count: 3
Exams covering mostly theory and terminology, with possibly some smaller coding problems.

Letter grades

A: 89.5% - 100%
B: 79.5% - 89.5%
C: 69.5% - 79.5%
D: 59.5% - 69.5%
F: 0% - 59.5%


Course format

Lectures: There will be 15 - 30 minutes of lecture in class to introduce the new topics.

Labs: During class, labs will be done during class. Labs are simpler programming assignments to introduce new topics.

Quizzes: Weekly Quizzes on Canvas cover topics like terminology and theory, based on the textbook reading.

Programming projects: are larger homework programming assignments, meant to be done solo. These assignments combine multiple programming topics.

Exams: will be given during the semester. These will cover terminology, theory, and some programming problems. Best places to study from are labs and quizzes.


Course policies


Communication in this class is important. If you're having trouble, or will need to make up an exam, or have a question on how the class works, please let me know. If I don't respond right away, you might need to follow up via another medium (e.g., email and in class) to ensure that I saw your message.

The best way to get ahold of me is to email me (through JCCC email or through Canvas), or send me a text message (I don't usually answer phone numbers that I don't know).

Phone: (913) 999-8271


I only take attendance during the first couple weeks of class, as per JCCC policy. Grade is not tied to your attendance.

If you're going to be absent from class for an extended period of time, please let me know so I know that you're still part of the class. If you have to miss part of a class period or one class period - that's fine. If you have questions about what we covered in class, you can check the class webpage or email me.


All assignments must be turned in via Canvas. Each assignment has a place in Canvas where you can either upload files (labs/projects) or do quizzes.

Late assignments

You should do your best to turn in your assignments by the due date specified on Canvas. Once I've graded an assignment, I will not go back to grade that batch of assignments afterward. You can turn in some assignments after the due-date and I will still grade them if I haven't gotten to the grading yet.

Make-up assignments and make-up exams

If you're going to need to take a make-up exam, you must let me know prior to the exam. I will not give make-up exams after the exam has been given, if I haven't been notified ahead of time.

For other assignments, everything you need is online so you should be able to work on the assignments and turn them in by the due date.

Getting help

There are many resources available to help you learn programming. Make sure you abide by academic honesty policies. Some available resources are...

Instructor: If you need help with an assignment, I can come to campus to meet up and help with them, or answer questions via email, or during/before/after class.

Tutor: JCCC has a CS tutor who is available during certain times in the RC 3rd floor computer lab.

Internet: There are also many resources available on the internet to help out with any topic you may run into; these topics are not unique to our class. Feel free to review any content available online, but remember to adhere by academic honesty policy. In particular, make sure to not plagiarize other peoples' work and pass it off as your own. For assignments that are intended to be solo-work, you should not be receiving help from outside sources for these assignments.

Classmates: Sometimes your classmates can be a good resource for figuring out problems. Brainstorming is a great idea, and sometimes your peers can direct you to resources that helped them understand the content. However, remember to adhere by academic honesty policy. Do not plagiarize anybody else's work, and do not give your work to other people for them to copy off of (even if they just say it's for them to "check their work"). If you are unsure if something counts as academic dishonesty, ask the instructor, or err on the side of caution.

Grade feedback

For programming courses, larger programming assignments (as well as lab assignments on occasion) will contain feedback once graded. This might be a few comments in the grade-view of the assignment, but it could also be attached spreadsheets of the grading breakdown. I will usually highlight where errors are coming from or other concerns, so please make sure to review the feedback.

Academic Honesty

At JCCC, we are required to report cases of academic dishonesty. It can be difficult to define what exactly counts as academic dishonesty, but JCCC has descriptions in their student handbook. In general, you should avoid...

Plagiarism: This is passing off somebody else's work as your own. Even modified ("paraphrased") work can be considered plagiarism if you are simply restating somebody else's work as your own without giving credit. In programming, this most commonly occurs as students copying program code from each other - either partially, or the entire program. Unless stated otherwise, assignments are assumed to be solo-work and should be reflecting the knowledge of the individual student.

Do not ask other students for their code, and do not give your code to another student.

Commonly, one student might ask another to see their code in order to "check it against their own", but actually just turns in the other students' code as their own. In this case, both students receive a score of 0 on the assignment and both must be reported.

Unapproved materials: The usage of resources and materials on assignments and exams that were not previously approved by the instructor also counts as academic dishonesty. For example, bringing in extra notes to an exam to reference. Any student reasonably suspected of cheating will not be allowed to complete the exam, be given a score of 0, and be reported.

Instructor objectives

  • I will try to provide as many resources as are needed for students to do well in this course.
  • I will make sure students have what they need prior to being assessed on a topic.
  • I will treat all students with respect.
  • I will be patient and open to any questions for all students.
  • I am available for questions, whether about class content, the software development industry, or general advice.
  • I will advocate for students.
  • I will try to return graded work in a timely manner.
  • I will try to provide grading breakdowns to help students understand how they earned the grade they receive on assignments.
  • I will try to respond to all student contact (email, phone, etc.) in a timely manner, within 24 hours.

Expectations of students

  • Students are responsible for knowing what resources they need.
  • Students are responsible for coming to class as-needed, and to let the instructor know what they need if they miss a class.
  • Students are responsible for doing their own work and making sure they turn in their work on time.
  • Students are responsible for abiding by the JCCC and course Academic Honesty policies and to avoid all cheating, plagiarism, and so on.


Tentative schedule

Week Days Topics In class Homework Notes
1 Aug 21
Aug 23
  • Introduction
  • Git and Source Control
  • Debugging Tools
Lectures: Labs: Reading: Quizzes:
  • QUIZ Git

Due on Friday:

  • Lab 1: Git and Source Control
  • Lab 2: Debugging
2 Aug 28
Aug 30
  • Unit Tests
  • Recursion
Lectures: Labs: Reading: Quiz:
  • QUIZ CH 2

Due on Monday:

  • QUIZ Git
  • QUIZ CH 1

Due on Friday:

  • Lab 3: Testing
  • Lab 4: Recursion
3 Sept 4
Sept 6
  • STL Vector
  • Making a Vector
Lectures: Labs: Projects:
  • Project 1: Vector
Reading: Quiz:
  • QUIZ CH 3

Due on Monday:

  • QUIZ CH 2

Due on Friday:

  • Lab 5: STL Vectors
4 Sept 11
Sept 13
  • STL List
  • Making a Linked List
Lectures: Labs: Reading: Quiz:
  • QUIZ CH 4

Due on Monday:

  • QUIZ CH 3

Due on Friday:

  • Project 1: Vectors
  • Lab 6: STL List
5 Sept 18
Sept 20
  • Exception Handling
  • Exam 1 Review
Lectures: Labs: Review:
  • Exam 1 Review
Reading: Quiz:
  • QUIZ INT 3

Due on Monday:

  • QUIZ CH 4

Due on Friday:

  • Lab XYZ: Exception Handling
6 Sept 25
Sept 27
  • Exam 1: Vectors and Lists
  • Algorithm Efficiency
  • Exam 1
Lectures: Labs:
  • Chapter 10: Algorithm Efficiency
  • Chapter 11: Sorting Algorithms
  • Chapter 10 Notes
  • QUIZ CH 10

Due on Monday:

  • QUIZ INT 3

Due on Friday:

  • Project 2: Linked Lists
  • Lab XYZ: Algorithm Efficiency
7 Oct 2
Oct 4
  • STL Stacks
  • Stacks
Lectures: Labs:
  • STL Stacks
  • Project 3: Stacks
Reading: Quiz:
  • QUIZ CH 6

Due on Monday:

  • QUIZ CH 10

Due on Friday:

  • Lab XYZ: STL Stacks
8 Oct 9
Oct 11
  • STL Queue
  • Queues
Lectures: Labs:
  • STL Queues
  • Project 4: Queues
Reading: Quiz:
  • QUIZ CH 13

Due on Monday:

  • QUIZ CH 6

Due on Friday:

  • Project 3: Stacks
  • Lab XYZ: STL Queues
9 Oct 16
Oct 18
  • Searching & Sorting Algorithms
  • Exam 2 Review
  • Searching and Sorting Algorithms
  • Searching and Sorting Algorithms
  • Exam 2 Review
Reading: Quiz:
  • QUIZ CH 11

Due on Monday:

  • QUIZ CH 13

Due on Friday:

  • Lab XYZ: Searching and Sorting Algorithms
10 Oct 23
Oct 25
  • Exam 2: Stacks, Queues, & Algorithms
  • Trees
  • Exam 2
Lectures: Labs:
  • Intro to Trees
Reading: Quiz:
  • QUIZ CH 15/16

Due on Monday:

  • QUIZ CH 11

Due on Friday:

  • Project 4: Queues
  • Lab XYZ: Intro to Trees
11 Oct 30
Nov 1
  • Binary Search Trees
Lectures: Labs:
  • Intro to Binary Search Trees
  • Project 5: Binary Search Tree

Due on Monday:

  • QUIZ CH 15/16

Due on Friday:

  • Lab XYZ: Intro to Binary Search Trees
12 Nov 6
Nov 8
  • Iterators
  • Introduction to Dictionaries
Lectures: Labs:
  • Iterators
  • Intro to Dictionaries

Due on Friday:

  • Lab XYZ: Iterators
13 Nov 13
Nov 15
  • Dictionaries
  • Project 6: Dictionaries
Reading: Quiz:
  • QUIZ CH 18

Due on Friday:

  • Project 5: Binary Search Tree
  • Lab XYZ: Intro to Dictionaries
14 Nov 20
Nov 22
  • Catch-up week

Due on Monday:

  • QUIZ CH 18
Thanksgiving break 22nd / 23rd
15 Nov 27
Nov 29
  • Introduction to Heaps
  • Intro to Balanced Search Trees
  • Heaps
  • BSTs
  • Introduction to Heaps
  • Introduction to Balanced Search Trees
  • Chapter 17: Heaps
  • Chapter 19: Balanced Search Trees
  • Chapter 17 Notes
  • Chapter 19 Notes
  • QUIZ CH 17
  • QUIZ CH 19

Due on Friday:

  • Chapter 6 Project
16 Dec 4
Dec 6
  • Final Exam Review
  • (Optional) Early Final Exam
  • Final exam review
  • Free work day
  • Take final early (optional)

Due on Monday:

  • QUIZ CH 17
  • QUIZ CH 19
17 Dec 10 - 16

Finals Week

Scheduled Final
  • CS 250: Thursday December 13th, 2:00 pm - 3:50 pm

Important JCCC dates, Fall 2018

August 14
Payment deadline
August 20
First day of classes
August 27
Last day to drop a full-semester course and receive a 100 percent refund.
September 17
Last day to drop a full-semester course without a withdrawal "W" on the student's permanent record. Deadline is 11 p.m. for drops completed on the web.
October 15
Application deadline for fall graduation
November 15
Last day to request a pass/fail grade option or to withdraw with a "W" from a full-semester course.
November 21
Classes not in session. College offices closed.
November 22-23
Thanksgiving Day holiday. College closed.
December 10-16
Final exams
December 17
Final grades entered by professors by 5 pm.

“Drop Deadlines:” To view the deadline dates for dropping this course, please refer to the schedule on the JCCC website under Admissions>Enrollment Dates> Dropping Credit Classes. After the 100% refund date, you will be financially responsible for the tuition charges; for details, search on Student Financial Responsibility on the JCCC web page. Changing your schedule may reduce eligibility for financial aid and other third party funding. Courses not dropped will be graded. For questions about dropping courses, contact the Student Success Center at 913-469-3803.


Success, accommodations, and hardships

JCCC Resources

  • Tips for success
    Information on time management, participate, balance personal obligations, study environment, be respectful, speak up if you have problems, apply what you learn, stay motivated
  • Time management for students
    Information on time management: Keep a monthly schedule, make a weekly schedule, prioritize your activities. Use small pockets of time, tackle the hard things first, identify your best time, start projects as soon as they're assigned, keep to-do lists, divide tasks into small chunks, take care of yourself.
  • Dealing with test anxiety
    Information on test anxiety and coping.
  • Dealing with anxiety and stress
    Information on coping with anxiety and stress.
  • Hardships
    If you have a hardship (family death, medical problem causing you to miss school, etc.) you need to make sure to communicate with me if you're planning on staying in the course. Make sure to email me so that it is harder for the email to get lost! And if you don't hear back from me, make sure to follow up in another way. I am not a fan of getting makeup exam requests after the exam has passed!

Contacting Accessibility for Accommodations

JCCC has a branch called Access Services. If you work with Access Services, they will work with your teacher to provide services that we offer include testing accommodations, note-taking assistance, sign language interpreting services, audiobooks/alternative text, assistive technology and tutoring (when available). All accommodations are determined on a case-by-case basis during a meeting with an Access Services advisor.

You can get permanent or temporary accommodations, such as if you're facing a temporary hardship in your life. Stress and anxiety also count as hardships, so if you have test anxiety or social anxiety, it can help to reach out, so that you can make a plan with A.S. and the teacher for being able to be properly assessed academically in class while minimizing the challenges presented by your situation.

Some examples of accommodations are:

  • Note-taking assistance
  • Letting the teacher know that the student does not perform well in a group
  • Being able to take tests in the testing center, a quiet location without distractions, rather than in the classroom
  • Testing accommodations such as 1.5x time on exams


Additional information

Student Handbook

Student code of Conduct Policy

College Emergency Response Plan

RC third floor Emergency Response Plan (PDF) detailed emergency instructions with storm security locations. During a weather emergency individuals should seek shelter in the interior most portion of the building away from exterior windows and doors.

RC storm security areas: RC 311, 321, 323, 334, 340, 342, 344, 345, 353, 355, 346, 347, and
RC 361A and 361B, 372D, Mens' and Womens' bathrooms.

Academic Dishonesty

No student shall attempt, engage in, or aid and abet behavior that, in the judgment of the faculty member for a particular class, is construed as academic dishonesty. This includes, but is not limited to, cheating, plagiarism or other forms of academic dishonesty.

Examples of academic dishonesty and cheating include, but are not limited to, unauthorized acquisition of tests or other academic materials and/or distribution of these materials, unauthorized sharing of answers during an exam, use of unauthorized notes or study materials during an exam, altering an exam and resubmitting it for re-grading, having another student take an exam for you or submit assignments in your name, participating in unauthorized collaboration on coursework to be graded, providing false data for a research paper, using electronic equipment to transmit information to a third party to seek answers, or creating/citing false or fictitious references for a term paper. Submitting the same paper for multiple classes may also be considered cheating if not authorized by the faculty member.

Examples of plagiarism include, but are not limited to, any attempt to take credit for work that is not your own, such as using direct quotes from an author without using quotation marks or indentation in the paper, paraphrasing work that is not your own without giving credit to the original source of the idea, or failing to properly cite all sources in the body of your work. This includes use of complete or partial papers from internet paper mills or other sources of non-original work without attribution.

A faculty member may further define academic dishonesty, cheating or plagiarism in the course syllabus.

ADA compliance / disabilities

JCCC provides a range of services to allow persons with disabilities to participate in educational programs and activities. If you are a student with a disability and if you are in need of accommodations or services, it is your responsibility to contact Access Services and make a formal request. To schedule an appointment with an Access Advisor or for additional information, you can contact Access Services at (913) 469-3521 or Access Services is located on the 2nd floor of the Student Center (SC202)

Course Catalog information

View the full course catalog at:


Upon successful completion of this course, the student should be able to:

  1. Write advanced object-oriented code in the context of data structures.
  2. Develop programs that integrate advanced programming topics.
  3. Analyze and create code using fundamental data structures.
  4. Examine advanced algorithms and techniques.
  5. Write code according to commonly accepted programming standards.

Content Outline and Competencies:

I. Advanced Object-Oriented Code

A. Implement inheritance.

B. Implement polymorphism, virtual methods and late binding.

C. Implement class and function templates.

D. Write code with classes from the Standard Template Library.

E. Implement class composition.

F. Create user-defined exception objects.

G. Implement friend classes and functions.

H. Implement overloaded operators.

II. Advanced Programming Topics

A. Manage indexing, pointers and multiple levels of indirect addressing.

B. Manage dynamic memory.

C. Write recursive programs.

D. Organize projects into multiple files.

E. Handle exceptions.

F. Pass function pointers.

G. Implement backtracking.

H. Examine and create recursive grammars and languages.

I. Implement prefix and postfix expressions.

III. Fundamental Data Structures

A. Analyze code implementing linked lists, dummy head nodes, circular linked lists and doubly linked lists.

B. Analyze code implementing stacks.

C. Analyze code implementing queues.

D. Analyze code implementing trees and associated traversals.

E. Analyze code implementing dictionaries.

F. Analyze code implementing priority queues.

G. Analyze code implementing heaps.

H. Analyze code implementing hash tables.

I. Create applications utilizing fundamental data structures.

IV. Advanced Algorithms

A. Review data sorting with selection, bubble and insertion sort.

B. Sort data with merge sort, quick sort, radix sort and heap sort.

C. Analyze algorithmic efficiency.

V. Code Standards

A. Create descriptive identifiers according to language naming conventions.

B. Write structured and readable code.

C. Create documentation.

Campus safety

JCCC Police & Safety: Information regarding student safety can be found at

Classroom and campus safety are of paramount importance at Johnson County Community College and are the shared reponsibility of the entire campus population. Please review the following:

  • Report Emergencies to Campus Police (availalbe 24 hours a day)
    • In person: at the Carlsen Center (CC115)
    • Call: 913-469-2500 (direct line) - Tip: program in your cell phone
    • Phone app: download JCCC Guardian (the free campus safety app
      -- It has an instant panic button and texting capability to Campus Police.
    • Anonymous reports: to KOPS-Watch or 888-258-3230
  • Be Alert:
    • You are an extra set of eyes and ears to help maintain campus safety
    • Trust your instincts
    • Report suspicious or unusual behavior/circumstances to Campus Police (see above)
  • Be Prepared:
  • During an Emergency: Notifications/alerts (emergencies and inclement weather) are sent to all employees and students using email and text messaging.
    -- Students are automatically enrolled. See, the emergency notification page:
  • Weapons Policy: Effective July 1, 2017, concealed carry handguns are permitted in JCCC buildings subject to the restrictions set forth in the Weapons Policy. Handgun safety training is encouraged of all who choose to conceal carry. Suspected violations should be reported to JCCC Police Department 913-469-2500 or if an emergency, you can also call 911.