ECE 275

Computer Programming for Engineering Applications II
Fall and spring
Catalog Data: 

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

ECE 175

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:

  1. Write, test and debug large software programs using C and C++ programming languages
  2. Understand the compilation and linking process for software programs
  3. Use commercial integrated-development environment (IDEs) for software development
  4. Distinguish between statically allocated memory and dynamically allocated memory
  5. Understand the C program memory organization and differentiate the location in which variables are stored within memory.
  6. Trace the behavior of a function call using the program stack
  7. Understand and use C programming constructs, including structs, pointers, strings, memory allocation, file IO and command line arguments.
  8. Understand the relation between pointers and memory addresses
  9. Create software programs that heavily use pointers and dynamic memory allocation
  10. Implement data structures and supporting algorithms for common data structures, including lists, queues, stacks, trees and graphs
  11. Create software programs to solve engineering problems using common data structures and algorithms
  12. Analyze software code to determine the asymptotic runtime
  13. Select appropriate data structures and algorithms to solve programing problems considering the asymptotic runtime
  14. Understand the role of encapsulation, abstraction and code organization in the software design process
  15. Understand and use C++ programming constructs, including classes, constructors and destructors, streams, references, operator overloading and dynamic memory allocation
  16. Have a basic knowledge of the standard template library (STL)
Course Topics: 

Review of C Programming

  • Build process (preprocess, compile, link)
  • Project management tools (e.g., CMake, IDEs)
  • Libraries and code reuse across executables
  • Debugging

Memory Concepts

  • 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)
  • Operations
  • Standard Template Library (STL) classes
Class/Laboratory Schedule: 

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:

  • Ability to apply knowledge of mathematics, science and engineering (high)
  • 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)
  • Understanding of professional and ethical responsibility
  • Ability to use the techniques, skills and modern engineering tools necessary for engineering practice (high)
Prepared by: 
Roman Lysecky, Jonathan Sprinkle
Prepared Date: 

University of Arizona College of Engineering