ECE2050: Object-Oriented Programming for ECE
(aka intro to programming via C++)
(Fall 2023)
Instructor: Xingyu Zhou, Wayne State University.
Contents: Introduction to programming using C++, covering how to use basic abstraction and data structures in the standard library, important concepts like recursion, backtracking, and object-oriented programming. low-level abstractions like dynamic memory, pointers, as well as LinkedList and Tree algorithms.
Key theme: Computational thinking -- develop the skill of thinking abstractly and recursively with coding (in C++ or any other language) only as the last step.
Grades: 2 homework assignments and 2 take-home exams
Lecture (* may contain various typos or errors. Feel free to let me know:-))
Unit I -- Intro and C++ Basics
Lecture 1 -- C++ Basics [slides][note][exercise]
Lecture 2 -- Recursion (Intro) [slides][note][exercise]
Unit 2 -- Abstract Data Types
Lecture 3 -- Vector [slides][note][exercise]
Lecture 4 -- String [slides][note][exercise]
Lecture 5 -- Stack [slides][note][exercise]
Lecture 6 -- Queue [slides]
Lecture 7 -- Set & Map [slides]
Lecture 8 -- Using ADTs [slides]
Lecture 8 -- Using ADTs [slides]
Lecture 9 -- Review Lecture [slides]
Unit 3 -- Backtracking Recursion
Lecture 10 -- Backtracking (I) [slides]
Lecture 11 -- Backtracking (II) [slides]
Lecture 12 -- Backtracking (III) [slides]
Lecture 13 -- Backtracking (IV) [slides]
Unit 4 -- Big-O, Search, Sorting
Lecture 14 -- Big O [slides]
Lecture 15 -- Search [slides]
Lecture 16 -- Sorting (I)[slides]
Lecture 17 -- Sorting (II)[slides]
Unit 5 -- OOP and Abstraction Design
Lecture 18 -- OOP [slides]
Lecture 19 -- Dynamic Memory [slides]
Lecture 20 -- OurVector [slides]
Lecture 21 -- Linked List (Intro) [slides]
Lecture 22 -- Linked List (II) [slides]
Lecture 23 -- Linked List (III) [slides]
Lecture 24 -- Tree [slides]
Lecture 25 -- BST [slides]
Assignments
Reference Course
CS106B at Stanford [course website]
Many materials are directly borrowed from it.
Key differences:
A brand new set of keynote slides (happy to share the source file that contains aminations:) )
Implement codes using the standard C++ library rather than the Stanford-specific library
A unique and powerful template for backtracking
Add many Leetcode-style in-class problems