Active Outline
General Information
- Course ID (CB01A and CB01B)
- CISD022B
- Course Title (CB02)
- Intermediate Programming Methodologies in C++
- Effective Term
- Fall 2023
- Course Description
- This course is taught as a systematic approach to the design, construction, and management of computer programs, emphasizing design, programming style, documentation, testing, and debugging techniques. Key concepts in Object-oriented programming to be covered are (a) Strings, (b) Multidimensional arrays, (c) Pointers and their use in arrays, parameters, and dynamic allocation, (d) Structures and Classes with operator overloading, (e) Inheritance and Polymorphism, (f) Templates, (g) Exceptions and (h) Introduction to Linked lists. Software engineering and computer science students are the targeted groups.
- Course Family
- Not Applicable
Course Justification
This course is a major preparation requirement in the discipline of computer science for at least one CSU or UC. This course belongs on the Systems Programming A.A. degree. This course teaches object-oriented constructs and is the second course in a sequence that is compliant with the standards of the Association for Computing Machinery.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to both UC and CSU
De Anza GE | Area(s) | Status | Details |
---|---|---|---|
2G4M | DA and 4-yr GE Math Ag | Approved |
C-ID | Area(s) | Status | Details |
---|---|---|---|
COMP | Computer Science | Approved | (CIS D022B or CIS D022BH) & (CIS D022C or CIS D22CH) required for C-ID COMP 132 |
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
(Students may receive credit for either (CIS D022A and CIS D022B (or CIS D22BH)) or CIS D027.); CIS D022A
Corequisite(s)
Advisory(ies)
Elementary algebra or equivalent (or higher), or appropriate placement beyond elementary algebra
Limitation(s) on Enrollment
(Not open to students with credit in the Honors Program related course.)
Entrance Skill(s)
General Course Statement(s)
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.
Assignments
- Reading: Required readings from text.
- 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 the Lab Outlines below.
Methods of Evaluation
- Successful completion of programming assignments with output evaluated on correctness, use of structured design principles, documentation, programming style, efficiency, and testing methods.
- 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.
- 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.
- 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.
Essential Student Materials/Essential College Facilities
Essential Student Materials
- None.
- Access to a computer laboratory with a C++ compiler
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Gaddis, Tony | Starting Out With C++ from Control Structures through Objects | Pearson | 2021/10th Edition | ISBN-13: 9780135928295 |
Savitch, Walter | Problem Solving with C++ | Pearson | 2018/10th Edition | ISBN-13: 9780134522425 |
Deitel, H.M. & Deitel, P.J. | C++: How to Program (paper) | Deitel & Associates, Inc. | 2017/10th ed. | ISBN-13: 9780134448237 ISBN-10: 0134448235 |
zybooks | CIS 22B: Intermediate Programming Methodologies in C++ | zybooks | 2022 | 979-8-203-97133-3 |
Examples of Supporting Texts and References
Author | Title | Publisher |
---|---|---|
Ellis, Margaret & Stroustrup, Bjarne, The Annotated C++ Reference Manual, Addison Wesley, 1990. |
Learning Outcomes and Objectives
Course Objectives
- Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
- Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
- Use C-Strings and C++ String class for Input/ Output and manipulation of strings. Create and use other functions to manipulate strings.
- Create programs which use structures.
- Use Object-oriented programming concepts to design applications and computer programs.
- Define and use the basic linked list operations: Traverse, Search, Insert, Delete. Design, code, and test programs using linked lists.
- Demonstrate ability to read, analyze, and/or write code with templates.
- Demonstrate ability to read, analyze, and/or write code with exceptions.
CSLOs
- Create algorithms, code, document, debug, and test intermediate level C++ programs.
- Read, analyze and explain intermediate level C++ programs and their efficiency.
- Design solutions for intermediate level problems using appropriate design methodology incorporating intermediate programming constructs including structures and objects.
Outline
- Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
- One-dimensional Arrays
- Binary Search
- Insertion Sort
- Two-dimensional Arrays
- Declaration
- Initialization
- Access of individual elements
- Use with functions
- Arrays of more than two dimensions
- Declaration
- Initialization
- Access of individual elements
- One-dimensional Arrays
- Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
- Pointer arithmetic and one-dimensional array
- Adding/subtracting an integer constant to/from pointer
- Subtracting two pointers
- Uses
- Array parameters
- Efficient manipulation of data in one-dimensional arrays
- Arrays of pointers
- Dynamic allocation (new operator, delete operator)
- Pointer arithmetic and one-dimensional array
- Use C-Strings and C++ String class for Input/ Output and manipulation of strings. Create and use other functions to manipulate strings.
- C-Strings
- Character testing and case conversion functions
- Software engineering: C-Strings stored as arrays
- Using pointers to pass C-Strings
- String Class
- I/O with string objects
- Sorting with String Objects
- String class member functions.
- C-Strings
- Create programs which use structures.
- Software engineering: abstract data types
- Declare a structure
- Access fields in structures
- Pointers to structures
- Nested structures
- Structures and functions
- Structures as parameters passed by value
- Structures as parameters passed by address
- Return a structure from a function
- Arrays of structures
- Use Object-oriented programming concepts to design applications and computer programs.
- Object-oriented design
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Unified Modeling Language (UML)
- Classes and subclasses
- Constructors
- Fields
- Methods to alter Object behavior
- Inheritance
- Use of overloaded functions
- Class hierarchies
- Polymorphism and virtual functions
- Redefining vs. overriding functions
- Garbage collection
- Internal representations of objects and method tables
- Object-oriented design
- Define and use the basic linked list operations: Traverse, Search, Insert, Delete. Design, code, and test programs using linked lists.
- Traversal
- Search
- Insertion
- Deletion
- Dynamic Allocation
- Demonstrate ability to read, analyze, and/or write code with templates.
- Function templates
- Class templates
- Demonstrate ability to read, analyze, and/or write code with exceptions.
- Exceptions and exception handling
- Multiple and generic handlers
- Exceptions stack
Lab Topics
- Write and/or debug code implementing pointers to pointers.
- Write and/or debug code implementing the binary search algorithm to search a one-dimensional array.
- Write and/or debug code implementing sorting a one-dimensional array using insertion/selection sort.
- Write and/or debug code implementing two-dimensional arrays.
- Write and/or debug code implementing pointer arithmetic and one-dimensional arrays with pointer arithmetic.
- Write and/or debug code implementing array of pointers.
- Write and/or debug code implementing strings.
- Write and/or debug code implementing structures.
- Write and/or debug code implementing linked lists with dynamic memory allocation.
- Design classes and subclasses
- Write and/or debug code implementing function and class templates.
- Write and/or debug code implementing exception handling.