CS 232: Programming Concepts and Methodology II
Citrus College Course Outline of Record
Heading | Value |
---|---|
Effective Term: | Fall 2021 |
Credits: | 3 |
Total Contact Hours: | 72 |
Lecture Hours : | 54 |
Lab Hours: | 18 |
Hours Arranged: | 0 |
Outside of Class Hours: | 108 |
Prerequisite: | CS 225. |
Transferable to CSU: | Yes |
Transferable to UC: | Yes - Approved |
Grading Method: | Standard Letter |
Catalog Course Description
Application of software engineering techniques to the design and development of large programs; data abstraction and structures and associated algorithms. 54 lecture hours, 18 lab hours.
Course Objectives
- Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables.
- Implement, test, and debug simple recursive functions and procedures.
- Evaluate tradeoffs in lifetime management (reference counting vs. garbage collection).
- Explain how abstraction mechanisms support the creation of reusable software components.
- Design, implement, test, and debug simple programs in an object-oriented programming language.
- Compare and contrast object-oriented analysis and design with structured analysis and design.
Major Course Content
- Programming Fundamentals (PF)
- Fundamental data structures
- Primitive types
- Arrays
- Records
- Strings and string processing
- Data representation in memory
- Static, stack, and heap allocation
- Runtime storage management
- Pointers and references
- Linked structures
- Implementation strategies for stacks, queues, and hash tables
- Implementation strategies for trees and graphs
- Strategies for choosing the right data structure
- Recursion
- The concept of recursion
- Recursive mathematical functions
- Simple recursive procedures
- Divide-and-conquer strategies
- Recursive backtracking
- Implementation of recursion
- Programming Languages (PL)
- Declarations and types
- The conception of types as a set of values together with a set of operations
- Declaration models (binding, visibility, scope, and lifetime)
- Overview of type-checking
- Garbage collection versus Automatic Resource Counting
- Abstraction Mechanisms
- Procedures, functions, and iterators as abstraction mechanisms
- Parameterization mechanisms (reference vs. value)
- Activation records and storage management
- Type parameters and parameterized types - templates or generics
- Modules in programming languages
- Object-oriented programming
- Object-oriented design
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Classes and subclasses
- Inheritance (overriding, dynamic dispatch)
- Polymorphism (subtype polymorphism vs. inheritance)
- Class hierarchies
- Collection classes and iteration protocols
- Internal representations of objects and method tables
- Software Engineering (SE)
- Software design
- Fundamental design concepts and principles
- Design strategy
Lab Content
Students will be assigned lab work for each category below.
- Object Based Programming
- Object Oriented Programming
- Polymorphism
- Inheritance
Suggested Reading Other Than Required Textbook
www.htdp.org (i.e., How to design programs)
Examples of Required Writing Assignments
Create a written program that a school teacher can use to track student scores.
Examples of Outside Assignments
Create a GUI (i.e., graphical user interface) that allows the user to enter two numbers and then determines the minimum between the two simultaneously.
Instruction Type(s)
Lecture, Lab, Online Education Lecture, Online Education Lab