# CSE 232 Introduction to Programming II (4 cr: 3 lecture + 1 lab)

## Catalog Course Description

Object-centered design and implementation in C++. Building programs from modules. Data abstraction and classes to implement abstract data types. Static and dynamic memory allocation. Data structure implementation and algorithm efficiency. Lists, tables, stacks, and queues. Templates and generic programming.

## Course Outcomes

(Letters refer to program outcomes; caps indicate greater emphasis.)

- Students can solve larger problems using fundamental algorithms and data structures and methods to create reliable programs using them. Students will be able to individually develop programs requiring significant amounts of data and lines of code. (a, b, C, I, J, k)
- Students will demonstrate an understanding of abstract data types and the use of C++ classes to declare and implement ADTs. (b, C, I, J, k)
- Students will demonstrate and understanding of the relative advantages and disadvantages of static versus dynamic storage allocation and linked versus serial use of memory. Students will be able to implement template classes for each of the fundamental ADTs using each memory management method. (C, I, J, K)
- Students will understand the characteristics of basic methods for update and search in containers. (I,J)

## Program Outcomes covered in CSE 232

- (a)
- An ability to apply knowledge of computing and mathematics appropriate to the discipline.
- (b)
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- (c)
- An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
- (i)
- An ability to use current techniques, skills, and tools necessary for computing practice.
- (j)
- An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
- (k)
- An ability to apply design and development principles in the construction of software systems of varying complexity.

## Assessment

Assessment of how well outcomes are being achieved will be done by applying a rubric to a random sample of at least 25% of the students who have completed the work being used for assessment. Assessment tools are examinations and programming projects. For each outcome being assessed, each student in the sample will be judged to (a) exceed, (b) meet, or (c) fail to meet an objective standard designed to assess this outcome. Unless otherwise specified the thresholds used are: meet (70%), exceed (85%). We will say that this offering of the course achieved the particular outcome if and only if 70% or more of the students sampled were assessed to be in categories (b) or (c).

- Course outcome I assessed by
- success on programming projects
- the success of students who take CSE 335 within one year (meet: 70% earn 2.0 or better)

- Course outcome II assessed by
- specific programming work and specific exam questions
- the success of students who take CSE 335 within one year (meet: 70% earn 2.0 or better)

- Course outcome III assessed by
- specific programming work and specific exam questions.

- Course outcome IV assessed by
- specific exam questions

## Topics

- Development of software modules
- Phases of program translation
- ADTs: design and implementation
- Static and dynamic memory allocation
- Structures: arrays, chains, and trees
- Containers: lists, tables, stacks, queues
- Algorithm efficiency
- Recursion
- Generic programming and templates

## Textbook

- ADTs, Data Structures, and Problem Solving with C++, 2nd edition(Nyhoff; Pearson, 2005)

## Grading

- Examinations
- Homework
- Labs