Catalog Description
- Transfer Status
- CSU/UC
- Prerequisite
- CSCI 20
- Unit(s)
- 3.00
- Lecture: 34.00 Contact hours/68.00 Out of class hours/102.00 Total hours/2.00 Unit(s)
- Lab: 51.00 Contact hours/0.00 Out of class hours/51.00 Total hours/1.00 Unit(s)
- Total: 85.00 Contact hours/68.00 Out of class hours/153.00 Total hours/3.00 Unit(s)
Course Description: This is a software engineering course, focused on the application of software engineering techniques for the design and development of large programs. Topics include data abstraction, data structures and associated algorithms, recursion, declaration models, and garbage collection. Students will learn to design, implement, test, and debug programs using an object-oriented language. (C-ID COMP 132).
Objectives
Upon successful completion of this course, the student should be able to:
- Design and implement programs that use arrays, records/structs, strings, linked lists, stacks, queues, hash tables, and trees.
- Design, implement, test, and debug recursive functions and procedures.
- Evaluate the tradeoffs in lifetime management of data when using manual memory management versus reference counting or tracing garbage collection.
- Explain how abstraction mechanisms support the creation of reusable software components.
- Design, implement, test, and debug programs in an object-oriented language.
- Compare and contrast object-oriented analysis and design with structured analysis and design.
Course Content
Topic Titles / Suggested Time Topic
Lecture
| Topics | Lec Hrs |
|---|---|
Primitive types, arrays, and records/structs | 2.00 |
Strings and string processing | 2.00 |
Memory: data representation, static/stack/heap allocation, runtime management | 1.00 |
Pointers and references | 1.00 |
Linked structures | 4.00 |
Stacks, queues, hash tables | 4.00 |
Trees | 2.00 |
Selecting data structures | 1.00 |
Recursion: mathematical functions and simple procedures | 1.00 |
Divide-and-conquer strategies, backtracking | 1.00 |
Implementing recursion | 1.00 |
Variable binding, visibility, scope, lifetime, and type-checking | 1.00 |
Garbage collection | 0.50 |
Procedures, functions, and iterators | 1.00 |
Parameterization mechanisms | 0.50 |
Activation records and storage management | 1.00 |
Type parameters and parameterized types: templates and generics | 2.00 |
Object-oriented design | 2.00 |
Encapsulation, information hiding, and separation of behavior and implementation | 1.00 |
Classes, subclasses, inheritance, class hierarchies | 2.00 |
Polymorphism | 2.00 |
Collection classes and iteration protocols | 1.00 |
| Total Hours: | 34.00 |
Lab
| Topics | Lab Hrs |
|---|---|
Primitive types, arrays, and records/structs | 3.00 |
Strings and string processing | 3.00 |
Pointers and references | 1.50 |
Linked structures | 6.00 |
Stacks, queues, hash tables | 6.00 |
Trees | 6.00 |
Implementing recursion | 3.00 |
Variable binding, visibility, scope, lifetime, and type-checking | 1.50 |
Procedures, functions, and iterators | 1.50 |
Parameterization mechanisms | 1.50 |
Type parameters and parameterized types: templates and generics | 6.00 |
Object-oriented design | 3.00 |
Classes, subclasses, inheritance, class hierarchies | 6.00 |
Polymorphism | 3.00 |
| Total Hours: | 51.00 |
Methods of Instruction
- Collaborative Group Work
- Demonstrations
- Homework: Students are required to complete two hours of outside-of-class homework for each hour of lecture
- Lecture
- Multimedia Presentations
Methods of Evaluation
- Quizzes
- Homework
- Lab Projects
- Mid-term and final examinations
Examples of Assignments
Reading Assignments
- Read the section in your text on linked list nodes. Write the code to define a struct for a node for a singly-linked list, then test the struct in a driver by creating a static and a dynamic instance of the struct.
- Read the Application Programmer's Interface (API) for the C++ Standard Template Library (STL) stack and queue classes at cplusplus.com. List and briefly describe all of the member functions that these classes have in common, and describe how the push and pop functions work for each.
Writing Assignments
- Write the pseudocode for two versions of an algorithm to delete all of the nodes from a doubly-linked list. One version must use an iterative approach, while the other must use a recursive approach.
- Write complete documentation for the sample header file provided by the instructor, using the associated implementation file as a reference. Be certain to document return values and parameters of each function, as appropraite, and provide a thorough description of the purpose of each function. Your documentation must adhere to the style guidelines for the class.
Out-of-Class Assignments
- Use the Internet to research reference counting and tracing as garbage collection techniques. Write a short summary of your findings, including a list of five programming languages (of your choice) and a description of the garbage collection technique(s) supported by each.
- Create a Unified Modeling Language (UML) diagram for a simple inventory management system for a coffee stand that has three types of coffee, four types of snacks, and cups/napkins/spoons. All of the items will be derived from a single base class, InventoryItem (price, quantity, supplier), all of the coffee will be derived from a single Coffee class, all of the snacks will be derived from a single Snack class, and cups/napkins/spoons will be derived from a single Supply class. Give every class in your hierarchy 1-2 unique attributes.
Recommended Materials of Instruction
Forouzan, Behrouz A.; Gilberg, Richard. (2020). C++ Programming: An Object-Oriented Approach. McGraw Hill, 1st. 9780073523385.
Carrano, Frank M. (2017). Data Abstraction and Problem Solving with C++: Walls and Mirrors. Pearson, 7th. 978-0134463971.
Murach, Joel. (2018). Murach's C++ Programming. Mike Murach. 978-1943872275.
Minimum Qualifications
Computer Science (Masters Required)