Syllabus EE599 SWforEE Spring18 Jan261
Syllabus EE599 SWforEE Spring18 Jan261
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.
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
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 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.
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)
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:
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
Experience with packages and libraries (C++ STL, Python NumPy, SciPy
Toolkits, TensorFlow, Flask, MATLAB Statistics and Machine Learning
Toolbox, etc.)
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
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)
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
HW8/Lab6 Due
11 3/26: Greedy 3/28: Shortest Path, Max- 3/30: Synchronization (Threads,
Flow Processes, Locks)
Lab8 assigned
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.
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.