Computer Programming for Engineering Applications II
Fall 2015 and Spring 2016
ECE 275 -- Computer Programming for Engineering Applications II (3 units)
Description: C and C++ programming. Core design and analysis of engineering algorithms and structures including lists, trees, graphs, traversal, and encoding. Fundamentals of C and C++ programming languages including pointers, structures, unions, and introduction to classes. Programming design topics including memory management, abstraction and design of advanced structures, and basics of software engineering.
Grading: Regular grades are awarded for this course: A B C D E
Course Fee: $25
Lysecky, Roman, and Frank Vahid. Programming in C++ and Data Structures. ZyBooks. Online.
Course Learning Outcomes:
By the end of this course, the student will be able to:
- Write, test, and debug large software programs using C and C++ programming languages.
- Understand the compilation and linking process for software programs.
- Utilize commercial integrated-development environment (IDEs) for software development.
- Distinguish between statically allocated memory and dynamically allocated memory.
- Understand the C program memory organization and differentiate the location in which variables and stored within memory.
- Trace the behavior of a function call using the program stack.
- Understand and use C programming constructs including structs, pointers, strings, memory allocation, file IO and command line arguments.
- Understand the relation between pointers and memory addresses.
- Create software programs that heavily utilize pointers and dynamic memory allocation.
- Implement data structures and supporting algorithm for common data structures including lists, queues, stacks, trees and graphs.
- Create software program to solve engineering problem using common data structures and algorithms.
- Analyze software code to determine the asymptotic runtime.
- Select appropriate data structures and algorithms to solve programing problems considering the asymptotic runtime.
- Understand the role of encapsulation, abstraction, and code organization in the software design process.
- Understand and use C++ programming constructs including classes, constructors and destructors, streams, references, operator overloading and dynamic memory allocation.
- Have a basic knowledge of the standard template library (STL).
Review of C Programming
- Build process (preprocess, compile, link)
- Project management tools (e.g., CMake, IDEs)
- Libraries and code re-use across executables
- Pointers and memory addresses
- Pass by value and reference
- Memory allocation and management
- Distinction between stack and heap in software programs
Core Data Structures and Algorithms
- Trees, queues, stacks, heaps and graphs
- Sorting, searching, hashing, traversals, shortest path
- Design, analysis and implementation
- Asymptotic analysis of algorithms
Introduction to C++ and Classes
- Instantiation, object lifecycle (construction, destruction)
- Standard Template Library (STL) Classes
Two, 75-minute lectures per week
Relationship to Student Outcomes:
ECE 275 contributes directly to the following specific Electrical and Computer Engineering Student Outcomes of the ECE Department:
- an ability to apply knowledge of mathematics, science, and engineering (High)
- an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability and sustainability (Medium)
- an understanding of professional and ethical responsibility
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice. (High)
Dr. Roman Lysecky, Dr. Jonathan Sprinkle