De Anza logo Course Outlines

Public Search

 
 
Close Window/Tab
PRINT VIEW -- Opens in new, second window. Use browser controls to close when finished.
Credit- Degree applicable
Effective Quarter: Fall 2017

I. Catalog Information

CIS 22B
Intermediate Programming Methodologies in C++
4.5 Unit(s)

 

Formerly:

Requisites: (Not open to students with credit in CIS 22BH.)

(Students may receive credit for either CIS 22A and CIS 22B/22BH) or CIS 27.)

Prerequisite: CIS 22A.

Hours: Lec Hrs: 48.00
Lab Hrs: 18.00
Out of Class Hrs: 96.00
Total Student Learning Hrs: 162.00

Description: A systematic approach to the design, construction and management of computer programs, emphasizing design, programming style, documentation, testing and debugging techniques. Strings, multidimensional arrays, structures, and classes. Pointers: their use in arrays, parameters and dynamic allocation. Introduction to linked lists. Software engineering and computer science students are the targeted group.


Student Learning Outcome Statements (SLO)

 

• Student Learning Outcome: Create algorithms, code, document, debug, and test intermediate level C++ programs.


 

• Student Learning Outcome: Read, analyze and explain intermediate level C++ programs and their efficiency.


 

• Student Learning Outcome: Design solutions for intermediate level problems using appropriate design methodology incorporating intermediate programming constructs including structures and objects.


II. Course Objectives

A.Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
B.Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
C.Use C-Strings and C++ String class for Input/ Output and manipulation of strings. Create and use other functions to manipulate strings.
D.Create programs which use structures.
E.Use Object-oriented programming concepts to design applications and computer programs.
F.Define and use the basic linked list operations: Traverse, Search, Insert, Delete. Design, code, and test programs using linked lists.
G.Demonstrate ability to read, analyze, and/or write code with templates.

III. Essential Student Materials

 None

IV. Essential College Facilities

 Access to a computer laboratory with a C++ compiler

V. Expanded Description: Content and Form

A.Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
1.One-dimensional Arrays
a.Binary Search
b.Insertion Sort
2.Two-dimensional Arrays
a.Declaration
b.Initialization
c.Access of individual elements
d.Use with functions
3.Arrays of more than two dimensions
a.Declaration
b.Initialization
c.Access of individual elements
B.Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
1.Pointer arithmetic and one-dimensional array
a.Adding/subtracting an integer constant to/from pointer
b.Subtracting two pointers
2.Uses
a.Array parameters
b.Efficient manipulation of data in one-dimensional arrays
c.Arrays of pointers
d.Dynamic allocation (new operator, delete operator)
C.Use C-Strings and C++ String class for Input/ Output and manipulation of strings. Create and use other functions to manipulate strings.
1.C-Strings
a.Character testing and case conversion functions
b.Software engineering: C-Strings stored as arrays
c.Using pointers to pass C-Strings
2.String Class
a.I/O with string objects
b.Sorting with String Objects
c.String class member functions.
D.Create programs which use structures.
1.Software engineering: abstract data types
2.Declare a structure
3.Access fields in structures
4.Pointers to structures
5.Nested structures
6.Structures and functions
a.Structures as parameters passed by value
b.Structures as parameters passed by address
c.Return a structure from a function
d.Arrays of structures
E.Use Object-oriented programming concepts to design applications and computer programs.
1.Object-oriented design
a.Encapsulation and information-hiding
b.Separation of behavior and implementation
c.Unified Modeling Language (UML)
2.Classes and subclasses
a.Constructors
b.Fields
c.Methods to alter Object behavior
d.Inheritance
e.Use of overloaded functions
f.Class hierarchies
g.Polymorphism and virtual functions
h.Redefining vs. overriding functions
i.Garbage collection
j.Internal representations of objects and method tables
F.Define and use the basic linked list operations: Traverse, Search, Insert, Delete. Design, code, and test programs using linked lists.
1.Traversal
2.Search
3.Insertion
4.Deletion
5.Dynamic Allocation
G.Demonstrate ability to read, analyze, and/or write code with templates.
1.Function templates
2.Class templates

VI. Assignments

A.Reading: Required readings from text.
B.Programs: 6-10 programming homework assignments, which include design as well as coding and employ sequential text files for the input and output of information; at least two should be about 500 lines of code, including standard documentation, covering the Lab Topics specified in X. below, half completed in the computer lab, half completed as homework.

VII. Methods of Instruction

 Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in class
Quiz and examination review performed in class
Homework and extended projects
Collaborative learning and small group exercises
Collaborative projects
Other: Laboratory discussion sessions
Other: Laboratory experiences which involve students in designing, coding, and testing and debugging efficient C++ programs.

VIII. Methods of Evaluating Objectives

A.Successful completion of programming assignments with output evaluated on correctness, use of structured design principles, documentation, programming style, efficiency, and testing methods.
B.One or more examinations requiring some programming demonstrating ability to develop an algorithm and/or write code using specific programming constructs. Code is evaluated on correctness.
C.In-class lab problems, group collaborative problems, exam questions and/or online assignments or tutorials demonstrating the ability to read and analyze code through debugging and/or writing snippets of code. The code will involve arrays and/or structures and/or linked lists and/or classes and subclasses.
D.A final examination requiring some programming demonstrating ability to develop an algorithm and write code. The code will involve arrays and/or structures and/or linked lists and/or classes and subclasses. Code is evaluated on correctness.

IX. Texts and Supporting References

A.Examples of Primary Texts and References
1.Tony Gaddis Standard Version of Starting Out With C++ from Control Structures through Objects(8th Edition) Pearson, 2014 ISBN-13: 978-0133769395 ISBN-10: 0133769399
2.Savitch, Walter: Problem Solving with C++ (9th Edition). Pearson, 2014 ISBN-13: 978-0133862218 ISBN-10: 0133862216
3.Deitel, H.M. & Deitel, P.J. (2016). C++ : How to Program (paper) (10th ed.). Deitel & Associates, Inc. ISBN-13: 978-0134448237 ISBN-10: 0134448235
B.Examples of Supporting Texts and References
1.Ellis, Margaret & Stroustrup, Bjarne, The Annotated C++ Reference Manual, Addison Wesley, 1990.

X. Lab Topics

A.Write and/or debug code implementing pointers to pointers.
B.Write and/or debug code implementing the binary search algorithm to search a one-dimensional array.
C.Write and/or debug code implementing sorting a one-dimensional array using insertion/selection sort.
D.Write and/or debug code implementing two-dimensional arrays.
E.Write and/or debug code implementing pointer arithmetic and one-dimensional arrays with pointer arithmetic.
F.Write and/or debug code implementing array of pointers.
G.Write and/or debug code implementing strings.
H.Write and/or debug code implementing structures.
I.Write and/or debug code implementing linked lists with dynamic memory allocation.
J.Design classes and subclasses