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

 

Credits: 4

 

Course Description

 

This course introduces students to object-oriented design and problem solving. Course subjects include data structures, dynamic data and pointers, and recursion. There is an introduction to sorting, searching, and the complexity of algorithms.

 

Prereqs: CS-115

 

Needed Skills

 

Working knowledge of a modern programming language

 

Learning Outcomes

 

The students 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)

 

Programming Languages

 

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

 

Software Engineering

 

Students will be proficient with the following issues:

· determining specifications for a problem

· designing a solution

· testing and debugging skills

 

Measures:

 

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.

 

Choice of the Language

 

Any modern, structured, object-oriented programming language that is a suitable vehicle to teach problem solving, solution design, and programming engineering can be used in this class. However, the same programming language ought to be used in the sequence CS-115, CS-215, and CS-216.

 

CAC Categories and Coverage

 

Topic

Core

Advanced

Math Fundamentals

0

0

Data Structures

20

0

Algorithms & Software Design

17

0

Computer Organization and Architecture

2

0

Concepts of Programming Languages

20

0

Social and ethical issues

1

0

Total

60

0

 

Data structures (20): Fundamental data structures (structures, arrays, linked lists, stacks, queues, trees), Algorithms and software design 17, Algorithms and problem-solving, Software design, Testing

 

Computer organization and architecture (2): Computer architecture, Machine level representation of data

 

Concepts of programming languages (20): Fundamental programming constructs, Recursion, Declarations and data types, Object oriented programming

 

Social and ethical issues (1): History of Computing, Professional and ethical responsibilities

 

Oral communication

 

none

 

Written communication

 

5 program assignments of increasing complexity

14 lab assignments

2 homeworks (3-4 pages) - none of these are graded for grammar

 

Coverage

 

Theoretical content: 30%

· Fundamental programming constructs

· Algorithms and problem-solving

· Fundamental data structures

· Recursion

· Declarations and types

· Object-oriented programming

 

Problem analysis: 30%

· Students formulate designs for five program assignments of increasing difficulty

 

Solution design: 30%

· Students create programs from their design for five program assignments using the C++ language on Windows

 

Other: 10%

· Administration, exams, etc.

 

Student evaluation and feedback

 

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.

 

Course Evaluation Questions

 

37. I have confidence in my ability to solve programming problems using classes.

38. I have confidence in my ability to solve programming problems using dynamic data and pointers.

39. I have confidence in my ability to solve programming problems using recursion.

40. I understand the basic data structures (linked lists, stacks, queues, trees) and can use them in programs.

41. I understand the principles of sorting and searching.

 

Possible Textbooks

 

D. S. Malik

C++ Programming: Program Design Including Data Structures

Thompson Course Technology