0% found this document useful (0 votes)
251 views8 pages

Syllabus EE599 SWforEE Spring18 Jan261

This document outlines the syllabus for the course EE 599 - Software Design and Optimization for Electrical Engineers, which is a 4-unit course offered in Spring 2018. It provides information on the course structure including lectures, discussion sections, assignments, projects, grading policy, and course goals. The course aims to train graduate students in electrical engineering on methodically developing optimized software solutions for applications in electrical engineering.

Uploaded by

Sid Zr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
251 views8 pages

Syllabus EE599 SWforEE Spring18 Jan261

This document outlines the syllabus for the course EE 599 - Software Design and Optimization for Electrical Engineers, which is a 4-unit course offered in Spring 2018. It provides information on the course structure including lectures, discussion sections, assignments, projects, grading policy, and course goals. The course aims to train graduate students in electrical engineering on methodically developing optimized software solutions for applications in electrical engineering.

Uploaded by

Sid Zr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

EE 599 — Software Design and Optimization

for Electrical Engineers


4 Units – Spring 2018

University of Southern California


Department of Electrical Engineering

Lecture: M: 2-3:20pm, W: 7-8:50pm


Discussion: F: 2pm-3:20pm

Instructor: Shahin Nazarian, Ph.D.


Office: EEB340
Office Hours: M after class (ZHS 252), 4:30-6:30pm (EEB340), More office hours
will be announced weekly via email
Contact Info:
(213) 740-4653
[email protected]
http://sportlab.usc.edu/~shahin/

Teaching Assistants (in alphabetical order)


Arnab Sanyal [email protected]
Office: EEB234
Office hours: F: 10:30am-12pm, and 3:30-5pm
Phone: 2137404372

Biru Lyu [email protected]


Office: PHE320
Office hours: M and F: 12:30-2pm
Phone: 2137404372

Ghasem Pasandi [email protected]


Office: EEB332
Office hours: T and Th: 10:30am-12pm
Phone: 213 740 2354

Jayesh Dubey [email protected]


Office: PHE320
Office hours: T and Th: 4-5:30pm
Phone: 213 740 4372

Praveen Sharma [email protected]


Office: PHE320
Office hours: M: 4:30-6:30pm, W and F: 5-7pm
Phone: 213 740 4372

Last Revised: Jan. 20, 2018


Graders (in alphabetical order)
Will be managed by the TAs. Please contact the TAs and copy the instructor for any
grading-related matters.

Tools Teaching Assistant


Soowang Park [email protected]

Course Description
This is a 4-unit interactive, collaborative teaching course to train the graduate EE students to
methodically develop software solutions with applications in electrical engineering; that are
constrained in terms of power consumption, memory space, verification time, etc. Relevant data
structures, algorithms, and mathematical techniques will be utilized. The lab and project assignments
incorporate the key elements of planning, modeling, simulating, and testing.

Class Schedule Information


https://classes.usc.edu/term-20181/classes/ee/

Website
https://blackboard.usc.edu/webapps/login/

Prerequisite(s): None
Co-Requisite(s): N.A.
Concurrent Enrollment: N.A.
Recommended Preparation:
Strong programming skills (OOP and scripting), knowledge of algorithms, statistics and probability
theory.
D-clearance will be provided based on instructor’s permission or an entrance exam

Technological Proficiency and Hardware/Software


Scripting using Python, and OOP using C++ are highly recommended.

Required Readings and Supplementary Materials


 C Primer Plus, S. Prata, 6th Edition, ISBN 9780133432381, 2014.
 Introduction to Algorithms, T.H. Cormen, Third Edition, 2009.
 Code Complete: A Practical Handbook of Software Construction, S. McConnel,
Second Edition, 2015.
 Supplementary material (research papers, technical articles, etc.) will be provided.

Description and Assessment of Assignments


This course is heavily assignment-oriented.

Syllabus for EE599: Software Design and Optimization for EE Page 2 of 8


Please refer to the Schedule and the Grading Breakdown sections in the following.

Grading Policy

Grading Scale
Relative grading policy

Grading Breakdown

Homework Assignments = 5%
Lab Assignments = 25%
Midterm I, Midterm II = Highest of (15%,25%), (8%,32%), and
(20%,20%)
Final Project = 30%

Lecture/Discussion Sessions
The lecture and discussion sessions are highly interactive and based on cooperative teaching
working with the groups of students and in-class coding and research. This course is therefore non-
DEN based. The main source is course slides, notes and (blackboard and online) discussion
forums.
Attendance is mandatory, meaning unless a medical or family emergency, students are not allowed
to miss any of the lectures or discussion.

Project Topics, Timeline, and Grading


A team of 3 to 5 students would look at an industrial or research problem related to EE
applications and design a tool.
The topics will be mainly proposed by industry. I will use my own resources and also get
help from other faculty members to attract companies to define the projects and offer
incentive to strong work. The topics could also be defined by research faculty members,
e.g., to design or enhance a tool for a certain research group. We also allow students to
propose new projects, however they should present sufficient support on the quality and
importance of the topic, to get it approved by the instructor.

Project Milestones
Each project topic should have a sufficient level of mathematical and algorithmic
challenges, in addition to a detailed proposal on the steps of the software including analysis
of specifications, and complexity as well as the design, testing, debugging and integration
plans. Deliverables will be due in 3 phases as outlined in the following.

Syllabus for EE599: Software Design and Optimization for EE Page 3 of 8


Suggested Project Topics
Please refer to the course website for the updated list of projects.

Suggested Industrial Topics:


They are mainly based on my own experiences working with various companies. I will
provide the teams with non-confidential resources to help them with implementing a tool
and possibly submitting a paper if the project results in developing new ideas. I would also
welcome any ideas you may have from your own industrial experience, etc.

Suggested Research Topics:


They are mainly related to some of my research and also collaborative work with Professor
Pedram, Bogdan, Gupta, etc. I would also welcome any other topic as long as either
myself or a faculty from our EE department would be interested to provide some guidance
regarding the details of the research.

Project Timeline:
 Jan 10 – Jan 28: Identifying team members and project topics
 Feb 5: Proposal due (team member, implementation plan and milestone)
 Feb 20: Phase I due
 March 20: Phase II due
 April 20-30: Phase III (Final report, Presentation)

Grading breakdown of the course project:


 Proposal: 5%
 Phase I: 15%
 Phase II: 35%
 Phase III and Demo: 45%

Skillset Goals:
The lecture topics can be divided into four categories:
 Coding fundamentals
 Data structures and basic algorithms
 Intermediate and advanced coding skills
 Algorithms and heuristics that are commonly used in EE applications

Note: The afore-mentioned categories may have some overlaps, e.g., some algorithms that
are commonly used in EE applications could be considered as basic.
The following skills are aimed to be developed using lectures and (in-class, offline)
discussions as the starting point, but mainly as part of the assignments:

 Structured, object-oriented programming and scripting for EE applications

Syllabus for EE599: Software Design and Optimization for EE Page 4 of 8


 Software planning and development
 Complexity analysis
 Data structures and basic algorithms
 Resource (memory, time, and power) management
 Verification and validation plans

 Implementing the data structures and their basic operations (linked-lists,


trees, queues, stacks, graphs, hashes)

 Implementing classical and non-traditional algorithms commonly used in EE


(for mathematical, combinatorial, or discrete optimizations, etc.)

The following are some example algorithms and heuristics, a subset of which can
be selected in this course, to implement and optimize based on an EE application:
 Sorting, State Space Searching, Scheduling, Pattern Matching,
Backtracking, Branch and Bound,
 Shortest Path, Maximum Flow
 Greedy, Dynamic programming
 Randomized, Statistical, Machine Learning (metrics
Calculation, Regression, Clustering, Pattern Recognition, Deep
Learning),
 Convex programming, ILP, Nonlinear Programming
 Number Theory (GCD, LCM, Fibonacci Checker, Factorization
and Primality Test, Binary Exponentiation), Inverse Problems,
Multiply-Accumulate (dot product) Optimization
 Recursive for real-time applications
 Database management and design algorithms
 Compiler design algorithms
 Data compression

 Synchronization mechanisms (locks, threads, processes, etc.)

 Development, testing and debugging techniques


 This includes black/white/grey box testing, code review process,
fuzzing, profiling, regressions, integration, assertions, various
debugging techniques, Agile methodologies (such as TDD, etc.)

 Optimization for maintenance, verification, resources, real-time applications,


etc.
 This includes studying the hardware and software interactions,
databased design, optimization of memory, stack, heap, and garbage
collection

 Experience with packages and libraries (C++ STL, Python NumPy, SciPy
Toolkits, TensorFlow, Flask, MATLAB Statistics and Machine Learning
Toolbox, etc.)

Syllabus for EE599: Software Design and Optimization for EE Page 5 of 8


Tentative Course Schedule: A Weekly Breakdown

Notes:
 All the following topics will be from coding perspective
 Lecture topics are color coded according to the 4 main categories listed in the
skillset, i.e., Coding Techniques and Fundamentals, Data Structures and Basic
Algorithms, Intermediate and Advanced Coding Skills, and Algorithms and
heuristics that are Commonly Used in EE Applications

Tentative Schedule
Discussion
Wk Lecture Lecture
1 1/8: Introduction, 1/10: Sorting 1/12: Setup (Ubuntu, packages,
Motivation, Project Topics GitHub) HW1/Lab1 assigned
Challenges, Goals,
Glossary Project Topics

Lab1: Design and Test (C), Scripting


(Python)
2 1/15: University Holiday 1/17: Overview of units 1 1/19: Project Topics
(MLK Day) and 3 HW2/Lab2 assigned

Lab2: Design and Test ((C++, Python


Regular Expressions)

HW1 due
3 1/22: Lab2 related 1/24: Lab2 related (cont.) 1/26: HW3 assigned
Lab1 Due Project Topics
HW2 due
4 1/29: Algorithm 1/31: OOP Review: 2/2: HW4/Lab3 assigned
Basics, Complexity Classes, Inheritance
(Runtime, and Polymorphism, Virtuality, Lab3: Design and Test (C++ and
Memory) Namespaces Python)

HW3/Lab2 Due
5 2/5: Friendship, 2/7: Data Structure 2/9: HW5/Lab4 assigned
Multiple Inheritance, Concepts and Coding:
Operator Overloading, Arrays, Linked-lists Lab4: Design and Test (C++, Python
Factories Regular Expressions, Grep)

Lab3/Project Phase I/HW4 Due


6 2/12: Data Structures 2/14: Hashes 2/16: HW6 assigned
(cont. – Stacks,
Queues, Tree) HW5 Due
7 2/19: University Holiday 2/21: Template, STL 2/23: Networking Basics
(President’s Day) [containers, iterators,
generic algorithms] HW7/Lab5 assigned

Syllabus for EE599: Software Design and Optimization for EE Page 6 of 8


Lab5: Online Algorithm Design and
Test (C++, Python, Networking)

Lab4/HW6 Due
8 2/26: Graph 2/28: Graph (cont.) 3/2:
Algorithms

HW7 Due
9 3/5: Dynamic 3/7: Written MI 3/9: HW8/Lab6 assigned
Programming
Lab6: Database Design (SQL)
Spring Recess (March 11 – 18)
10 3/19: DP (cont.) 3/21: DP (cont.) 3/23: Dot Product HW9/Lab7 assigned

Lab7: Matrix-based Calculation

HW8/Lab6 Due
11 3/26: Greedy 3/28: Shortest Path, Max- 3/30: Synchronization (Threads,
Flow Processes, Locks)

Lab8 assigned

Lab8: Synchronization (threads,


mutex, spin_lock)

Lab7 Due
12 4/2: Path, Flow 4/4: Resource 4/6: HW10/Lab9 assigned
(cont.) Management,
Optimization, Testing Lab9: Memory Check Using ASAN

HW9/Lab8 Due
13 4/9: RM, O, Testing 4/11: Embedded, Real- 4/13: HW11/Lab10 assigned
(cont.) Time Synchronization
(Threads, Processes, Lab10: part I: Profiling using PERF
Locks) Part II: AFL Fuzzer

Lab9/HW10 Due
14 4/16: Real-Time 4/18: TBA 4/20: Project Presentations
(cont.)
HW12 assigned

HW11/Lab10 Due
15 4/23: Project 4/25: Written MII 4/27: Project Presentations (cont.)
Presentations (cont.)
Project Phase III/HW12 Due

Final Exam*

*
The final exam will be run in a lab room with computers. Students will be given a
coding assignment that they have to complete during the exam time.

Syllabus for EE599: Software Design and Optimization for EE Page 7 of 8


Statement on Academic Conduct and Support Systems

Academic Conduct
Plagiarism – presenting someone else’s ideas as your own, either verbatim or recast in your own
words – is a serious academic offense with serious consequences. Please familiarize yourself with
the discussion of plagiarism in SCampus in Part B, Section 11, “Behavior Violating University
Standards” https://policy.usc.edu/student/scampus/part-b. Other forms of academic dishonesty
are equally unacceptable. See additional information in SCampus and university policies on
scientific misconduct, http://policy.usc.edu/scientific-misconduct.

Discrimination, sexual assault, intimate partner violence, stalking, and harassment are prohibited
by the university. You are encouraged to report all incidents to the Office of Equity and
Diversity/Title IX Office http://equity.usc.edu and/or to the Department of Public Safety
http://dps.usc.edu. This is important for the health and safety of the whole USC community.
Faculty and staff must report any information regarding an incident to the Title IX Coordinator who
will provide outreach and information to the affected party. The sexual assault resource center
webpage http://sarc.usc.edu fully describes reporting options. Relationship and Sexual Violence
Services https://engemannshc.usc.edu/rsvp provides 24/7 confidential support.

Support Systems
A number of USC’s schools provide support for students who need help with scholarly
writing. Check with your advisor or program staff to find out more. Students whose primary
language is not English should check with the American Language Institute http://ali.usc.edu,
which sponsors courses and workshops specifically for international graduate students. The Office
of Disability Services and Programs http://dsp.usc.edu provides certification for students with
disabilities and helps arrange the relevant accommodations. If an officially declared emergency
makes travel to campus infeasible, USC Emergency Information http://emergency.usc.edu will
provide safety and other updates, including ways in which instruction will be continued by means
of Blackboard, teleconferencing, and other technology.

Syllabus for EE599: Software Design and Optimization for EE Page 8 of 8

You might also like