This course introduces software engineering students to elementary data structures and their implementation. Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.
Absolute C++, 6th ed., by Savitch
(Addison-Wesley)
(Any "good" introduction C++ should
suffice.)
Introduction (3 hours)
Operating
system and Unix concepts, programming language
concepts
Introduction to C++ concepts (3
hours)
C++ basics, basic types, IO
Use of
simple library elements (string, vector)
ADT and their implementations as linked structures
(12 hours)
The stack, queue, and priority and
queue ADTS
The linked list, sorted linked list
Trees, binary trees, binary search trees
The C/C++
memory model: pointers vs references, stack vs
freestore
Implementing and travesing linked
structures
Recursion and stack frams
Recursive vs
iterative solutions to ADTs
Space and time complexity
of solutions
Simple testing and debugging
strategies
Object-based computing (9 hours)
Interface vs implementation
Class definitions, instantiation, object construction and destruction
Objects vs pointers to objects
Interface design and abstraction, responsibility allocation
The adapter design pattern
Introduction to object-oriented programming (9 hours)
Introduction to inheritance and its implementation in C++
Introduction to generics, type parameterization, and C++ templates
The template method design pattern
Use of generic data containers and the Standard Template Library
Design heuristics and strategies for object-oriented programming
| Time | Room | Instructor |
|---|---|---|
| TBD | TBD | Prof. Mike Godfrey |
| TBD | MC 4065 | Edward Shao (ISA) |
Please familiarize yourself with the policies outlined HERE before you direct any questions to the course account or staff.
You are not permitted to post your assignment solutions to GitHub repository or online. If you do intend to post assignment solutions to a private GitHub repository, it is essential that you make the repository private before you upload those solutions. Any content which is posted to a public repository is at risk of being dispersed, even if the repository is public for only a short period. This risk may have increased dramatically with the evolution of GitHub Copilot.