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