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