ECE 201

Programming II

Usually offered: Fall, Spring
Required course: Yes

Course Level

Undergraduate

Units

3

Instructor(s)

TBD

Prerequisite(s)

ECE 101

Course Texts

Required Text: Programming in C++,, by Roman Lysecky and Frank Vahid, available at: 
zybooks.com.

References:

  • Stroustrup, B, Programming--Principles and Practice Using C++. Second Edition. ISBN 978-0321-992789 
  • Stroustrup B, The C++ Programming Language. Fourth Edition. Edition. ISBN 978-0321-563842
  • Meyers S, Effective Modern C++. ISBN 978-1491903995
  • Wikibooks C++ Programming (open source) 
  • Wikibooks Object Oriented Programming (open source) 
  • cplusplus.com reference website
  • cppreference.com reference website

Schedule

Weekly Lecture: 2 hours and 30 minutes

Course Description

ECE 201 focuses on fundamental concepts of Object-Oriented Programming and data abstraction. Topics include classes, encapsulation, inheritance, polymorphism, exceptions, abstract data types, linked lists, stacks, queues, and binary trees, using the C++ programming language. The course also introduces the concepts of algorithmic complexity and examines basic algorithms such as traversal, searching, and sorting in data structures such as linked lists, stacks, queues, and binary trees.

Course Objectives

Upon the completion of this course, students should have achieved the following objectives:

  • Develop software to solve complex engineering problems using commercial integrated development environments (IDEs)
  • Understand the C++ program memory organization and differentiate the location in which variables are stored within memory.
  • Use object-oriented programming constructs, including classes, constructors and destructors, streams, references, operator overloading, file I/O, command line arguments, pointers, and dynamic memory allocation
  • Understand the role of encapsulation, abstraction, and code organization in the software design process
  • Use classes and algorithms defined within the standard template library (STL) in developing programs
  • Perform data abstraction and employ classical algorithms to manipulate data in linked lists, queues, stacks, and binary trees
  • Analyze the tradeoff between algorithmic complexity and code performance and determine the asymptotic runtime

Learning Outcomes

  • CAC 1: Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
  • CAC 2: Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  • CAC 6: Apply computer science theory and software development fundamentals to produce computing-based solutions
  • EAC 1: an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics 
  • EAC 2: an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factor.
  • EAC 7: an ability to acquire and apply new knowledge as needed, using appropriate learning strategies.

Course Topics

A brief list of topics to be covered:

Review of C and Introduction to C++

  • Basic C++ Syntax
  • File I/O
  • Vectors/arrays
  • Functions and pass by reference

Introduction to Object-Oriented Programing 

  • Classes and objects introduction
  • Mutators and accessors

Classes and Objects

  • Constructors
  • Operator overloading
  • Vector ADTs

Pointers

  • Destructors
  • Memory regions and leaks

Inheritance

  • Derived classes 
  • Polymorphism and virtual member functions
  • Abstract classes

Exception and templates

  • Exception basics and with functions
  • Multiple handlers
  • Function and Class templates

Containers

  • List, pair, map, set
  • Queue, deque

Introduction to data structures and algorithms

  • Data Structures
  • Intro to algorithms
  • Abstract data types (ADTs) and applications

Lists

  • Singly-linked lists
  • Doubly-linked lists

Stacks and queues

  • Stacks
  • Queues and dequeues

Graphs and trees

  • Graphs and their applications
  • Binary trees and their applications

Searching and sorting algorithms

  • O notation
  • Algorithmic analysis

Hash Tables

Syllabus Prepared By

Syllabus updated on 8/5/2024

Contact Undergraduate Advisor: undergradadvisor@ece.arizona.edu

Contact Us
Contact Us
Loading...