EE 538: Computing Principles for Electrical Engineers

Instructor: Arash Saifhashemi | Contact:

University of Southern California

Ming Hsieh Department of Electrical and Computer Engineering

Course Description

EE 538: Computing Principles for Electrical Engineers is tailored for graduate students seeking a comprehensive understanding of advanced computer programming concepts. This course is structured into four main sections, each designed to build a solid foundation in both theoretical knowledge and practical skills.

  1. Introduction to Programming in C++: Students will start with the basics of C++ programming, learning syntax, data types, and basic constructs to build a strong programming foundation.
  2. Data Structures: The course will cover essential data structures such as arrays, stacks, queues, linked lists, and trees. Students will learn how to implement and use these structures effectively in C++.
  3. Algorithm Design: This section focuses on understanding, analyzing, and designing algorithms. Topics include sorting, searching, recursion, and the basics of complexity analysis.
  4. Introduction to Software Engineering Concepts: Students will be introduced to key software engineering principles, including test-driven design, object-oriented design, and source control. These concepts are crucial for developing robust, maintainable, and scalable software projects.

Through hands-on projects and assignments, students will apply these concepts to solve real-world problems, emphasizing learning through implementing major programming components in C++. This approach not only solidifies theoretical understanding but also enhances practical skills, preparing students for challenges in software development and engineering.

Learning Objectives

Course Schedule

Week Topics/Daily Activities Readings/Preparation Deliverables
1 Intro: Motivation and goals; Methods of proof (Induction, proof by contradiction); Introduction to unit tests and version control Software environment install Assign hw #1 – tools setup and sample programs
2 Runtime complexity and Big-O notation; C++ introduction: classes, member variables, and methods Lecture slides; [1]: Ch. 2, 3; [2]: Pt. 1, Sec. 6, 9, 12, 13
3 C++ functions, pointers, and references; C++ constructor, copy constructor, and destructor Lecture slides; [2]: Sec. 7, 8, 15, 16, 17 Assign hw #2 – functions and pointers
4 Introduction to C++ class
5 Data structures: array, stack, linked list, queue, tree; C++ STL (string, vector, set, map, algorithm) Lecture slides; [1]: Ch. 10; [2]: Ch. 14, 18-21, 27, Pt. 4
6 Data structures II: heap, tree [1]: Ch. 11
7 Binary search and binary search trees; Recursion: divide and conquer [1]: Ch. 12 Assign hw #3 – Trees
8 Midterm Exam; Project discussion
9 Introduction to graphs; Graph representations [1]: Ch. 22 Assign hw #4 – graph representations
10 Graph search and traversal (DFS, BFS, topological sort) Lecture slides; [1]: Ch. 22 (project topic and proposals due)
11 Dynamic programming and memorization Lecture slides; [1]: Ch. 15, 16
12 Shortest path algorithms I Lecture slides; [1]: Ch. 24 Assigne HW #5 (project phase 1 due)
13 Shortest path algorithms II; Other graph algorithms Lecture slides; [1]: Ch. 25 (project phase 2 due)
14 Backtracking [1]: Ch. 6
15 Sorting algorithms [1]: Ch. 7, 8 (project phase 3 due)
16 Final Exam (project report and video due)

Technological Proficiency and Hardware/Software Required

For EE 538: Computing Principles for Electrical Engineers, students must ensure they have the proper technological setup to fully participate in and benefit from the course. This includes access to a laptop with a Linux-compatible terminal, enabling the use of a wide range of development tools and environments. Students are expected to have a full C++ development stack available for use.

During the first weeks of the course, guidance will be provided on setting up your development environment. This setup will include installing Bazel, a powerful tool for building and testing software, and Visual Studio Code, a versatile code editor that supports C++ development and debugging. Furthermore, students are required to create a GitHub account for version control and code submission. These tools are essential for completing course assignments and projects effectively.

Students should prepare their laptops accordingly before the course begins to ensure a smooth start. For those unfamiliar with Linux, Bazel, Visual Studio Code, or GitHub, additional resources and support will be provided to help with the installation and setup process.

Required Readings and Supplementary Materials

Grading Breakdown

Assessment Tool % of Grade
Homework 1, 2, 3 35%
Project/Homework 4, 5, 6 25%
Exam #1 and Quiz 20%
Exam #2 20%

Grading Scale

Letter Grade Numerical Point Range
A 95-100
A- 90-94
B+ 87-89
B 83-86
B- 80-82
C+ 77-79
C 73-76
C- 70-72
D+ 67-69
D 63-66
D- 60-62
F 59 and below

Course Policies

Academic Integrity

Academic integrity is foundational to our learning community. This course follows USC's standards on academic integrity. Students are expected to submit original work and properly attribute sources. Violations, including plagiarism and cheating, will result in disciplinary action, which may include failure in the course and further sanctions by the university.

Attendance

Attendance is mandatory and integral to the success of all students. Absences can impact your final grade. If you must miss a class, please notify the instructor ahead of time. Accommodations for student athletes and religious observances will be made.

Zoom Etiquette

For classes held via Zoom, maintain professionalism in all communications. Keep your camera on if required, participate actively, and use features like raise hand and chat responsibly. Ensure your microphone is muted when not speaking to minimize background noise.

Assignment Submission Policy

All assignments must be submitted electronically. Ensure your submissions are complete and include any required documentation or README files. Assignments will undergo both automated and manual review to ensure integrity.

Support and Accommodations for Students with Disabilities

USC is committed to inclusivity and provides support for students with disabilities. If you require accommodations, please register with the Office of Student Accessibility Services (OSAS) and inform the instructor to make necessary arrangements.

Support Systems

The university offers various support systems, including counseling, mental health services, and resources for addressing bias or harassment. For more information or assistance, please refer to the following resources: