Active Outline
General Information
- Course ID (CB01A and CB01B)
- CISD22BH
- Course Title (CB02)
- Intermediate Programming Methodologies in C++ - HONORS
- Course Credit Status
- Credit - Degree Applicable
- 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.
- Faculty Requirements
- 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 teaches object-oriented constructs and is the second course in a sequence that is compliant with the standards of the Association for Computing Machinery. This class is the honors version of CIS 022B and as a result, includes more advanced assignments and assessments.
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
°®¶¹´«Ã½ 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 non-Honors related course.)
- (Admission into this course requires consent of the Honors Program Coordinator.)
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.
- The student will complete an additional project or for majority of programming assignments will complete the advanced level version of the given project. Such activity will require higher level of critical thinking and independent research using text and online information. Note: The honors project will require 10 or more hours of work beyond the regular (non-honors) course requirements and will include higher expectations for achievement in this more advanced work.
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.
- The honors project(s) will be evaluated for depth of analysis, logic implemented, uniqueness of solution, and evidence of critical thinking skills.
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.
- Design complex creative solutions which employ advanced coding and debugging techniques.
CSLOs
- 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.
- Create algorithms, code, document, debug, and test intermediate level C++ programs.
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
- Exception stack
- Design complex creative solutions which employ advanced coding and debugging techniques.
- Concurrent use of multiple classes, inheritance, and polymorphism.
- Incorporate templates with structures, arrays, and classes.
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 an application implementing templates.
- Write and/or debug code implementing exception handling.