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