CS 215 - Introduction to Program Design, Abstraction and Problem Solving

Credits: 4

Bulletin Description

The course covers introductory object-oriented problem solving, design, and programming engineering. Fundamental elements of data structures and algorithm design will be addressed. An equally balanced effort will be devoted to the three main threads in the course: concepts, programming language skills, and rudiments of object-oriented programming and software engineering.

Prerequisites

CS 115, 221, or equivalent.

Expected Preparation

Working knowledge of a modern programming language.

Student Learning Outcomes

Theudents will learn basic data types, data structures and basic algorithm design and analysis techniques including recursion. Programming skills in an object-oriented programming language will be substantially improved with respect to CS-115. The students will also become familiar with basic software engineering methodology.

Students will be proficient in:

  • Object oriented approach to programming
  • Dynamic memory management
  • Recursive programming techniques
  • Data structures, such as linked lists, stacks, queues, and trees

Students will be familiar with:

  • Sorting techniques, such as merge sort, quick sort, and heap sort
  • Searching techniques, such as binary search trees
  • Algorithm run-time analysis (Big-O notation)

Students will be proficient in:

  • Language constructs not covered in CS-115, such as pointers, dynamic storage
  • Language constructs that support data abstraction with an emphasis on object-oriented design rather than procedural design
  • Language constructs that support algorithm design, such as recursive vs. iterative methods

Students will be proficient with the following issues:

  • Determining specifications for a problem
  • Designing a solution
  • Testing and debugging skills

Measures

Direct:

Homeworks are graded (comments added as deemed necessary to clarify the grade), and the correct answers are available from the class web page. The teaching assistant and instructor are available to clarify any homework question.

For program assignments, the student submits his or her solution electronically via the class web site. Besides the description of the program assignment, a grading sheet is provided online so that the student knows the criteria used in grading the assignment. The grader fills in the grading sheet, deducting points when needed. When it is not clear why points were deducted, the grader supplies comments.

After exams are graded and returned to students, the exam answers are provided online. The instructor (or teaching assistant) goes over any questions that the students want to review, either in class (if of a general nature), or personally with the student.

Student grades are available online from the class web site. To ensure privacy, each student is given a unique random number (not the university student number) that is used to access the student’s grades.

Indirect:

Student mastery of course outcomes are evaluated by:

  1. Homework/lab assignments
  2. Exams
  3. Program assignments
  4. Final exam

The exams cover topics of the course covered up to the time that they are given. The weekly lab assignments illustrate the programming principles discussed in the lectures. As the semester progresses, the program assignments cover more topics and are of increasing difficulty. By completing the program assignments, the student shows a mastery of the course topics. The final exam is comprehensive, covering all the topics of the course. The student self-assessment of the course outcomes is measured by the CS-215 course evaluation questions included in the university course evaluation at the end of the semester.

Syllabus Information

Possible Textbooks:

D. S. Malik

C++ Programming: Program Design Including Data Structures

Thompson Course Technology